5P by darjeeling 3시간전 | ★ favorite | 댓글 2개

Google이 MTP로 학습시킨 Gemma 4에서 해당 기능을 공개 배포판에서 제거했다가, 커뮤니티의 리버스 엔지니어링으로 들통난 후 외부 보조 모델 형태로 뒤늦게 지원을 시작했다.

오픈소스 개발자들이 Google이 배포한 모바일/엣지 디바이스용 포맷인 .litertlm(TFLite 기반) 파일을 분석하던 중 충격적인 사실을 발견했다. HuggingFace에 공개된 표준 모델 가중치에는 존재하지 않는 MTP(Multi-Token Prediction, 다중 토큰 예측) 아키텍처가 엣지용 컴파일 파일에만 포함되어 있었던 것이다.

이를 공개적으로 문제 제기하자, Google 측은 사실을 시인하며 이렇게 답했다:

"MTP 관련 예측 헤드는 HuggingFace Transformers API와의 호환성을 위해 공개 모델에서 의도적으로 제외했다. LiteRT 런타임에는 온디바이스 성능 향상을 위해 보존했다."

MTP란 무엇인가

일반 LLM은 토큰을 하나씩 순차적으로 생성한다. MTP는 한 번의 forward pass에서 여러 토큰을 동시에 예측하는 기법으로, 투기적 디코딩(Speculative Decoding)과 결합하면 출력 품질 변화 없이 추론 속도를 크게 높일 수 있다. 이론적으로 손실이 없는(lossless) 최적화다.

커뮤니티의 리버스 엔지니어링 시도

원 발견자가 .litertlm 파일에서 여러 .tflite 파일 추출에 성공하고, HuggingFace에 추출 파일과 재현 절차를 공개하며 C++ 가능자들의 협력을 요청했다. 이후 커뮤니티 기여자들이 본격적인 리버스 엔지니어링에 착수했다.

기술적 난관: TFLite 커널 구조가 극악이었다. 1024-wide 어텐션 벡터를 INT8로 양자화 → INT8 가중치와 곱셈 → 결과를 재양자화 → 다시 역양자화하는 구조였다.

결과: 수일간의 집중 작업 끝에 다음을 재구성하는 데 성공했다:

  • GQA(Grouped-Query Attention) 구조 및 외부 KV 캐시 매핑
  • 슬라이딩 로컬 윈도우 동작
  • pre_project / q_proj / MLP / o_proj / post_project 양자화 경로
  • 부분 RoPE 동작
  • end-to-end TFLite 패리티 20/20 top-1 매치 달성

라이선스는 Apache 2.0이라 법적 문제는 없다.

실제 성능: 얼마나 빠른가

커뮤니티 실측 결과(Strix Halo 기준):

작업 기존 MTP 적용 후
코드 생성 8 tps 25 tps (약 3x)
일반 글쓰기 7~8 tps 11~14 tps

기존 LLaMA/Qwen3 계열의 투기적 디코딩이 보통 1.5~1.7x, 최대 2x 수준인 것과 비교하면 코딩에서 3x는 이례적인 수치다. 코드 생성 특성상 반복적인 보일러플레이트가 많아 드래프트 토큰 수락률이 높기 때문으로 분석된다.

커뮤니티의 반응과 의혹

비판은 크게 두 방향으로 쏟아졌다.

① 미문서화(Undocumented) 비판: MTP로 학습시켜 놓고 공개 배포판에서 고의로 제거하면서 아무런 언급도 없었다는 점.

② 상업적 의도 의혹: *"로컬에서 구동되는 오픈소스 31B 모델이 너무 빨라지면 자사 상용 API(Flash Lite 등)의 경쟁력을 위협하기 때문에 의도적으로 너프했다"*는 주장. 유출 후 삭제된 122B 모델 역시 같은 맥락으로 거론됐다.

Google의 구조적 선택

배포 채널 MTP 포함 여부
HuggingFace 공개 가중치 ❌ 의도적 제거
LiteRT (엣지/모바일) ✅ 내장
gemma4_assistant (5/5 신규) ✅ 외부 보조 모델로 우회 지원

Google의 뒤늦은 공식 대응 (5월 5~6일)

커뮤니티 압박이 거세지자 Google은 5월 5일 gemma4_assistant 보조 모델을 HuggingFace에 별도 릴리스하고, 공식 블로그를 통해 Gemma 4 MTP 드래프터를 발표했다. 본래 모델 안에 있어야 할 기능을 외부 모델로 떼어내 우회 지원하는 형태다.

  • 속도: 품질 저하 없이 최대 3배 추론 속도 향상
  • 어시스턴트 모델: 약 500M 파라미터 수준의 경량 드래프터
  • 사용법: generate() 함수의 assistant_model= 인자로 넘기기만 하면 작동. 커스텀 MTP 구현 불필요
  • 지원 환경: HuggingFace Transformers, vLLM, MLX(Apple Silicon), LiteRT-LM

💡 한 줄 요약: Google이 MTP로 학습시킨 Gemma 4에서 해당 기능을 공개 배포판에서 제거했다가, 커뮤니티의 리버스 엔지니어링으로 들통난 후 외부 보조 모델 형태로 뒤늦게 우회 지원을 시작했다.