Gemma 4のMTP隠蔽をコミュニティが暴き、Googleが遅れて迂回対応
(reddit.com)GoogleはMTPで学習させたGemma 4からその機能を公開配布版で削除していたが、コミュニティのリバースエンジニアリングによって発覚した後、外部アシスタントモデルという形で遅れてサポートを開始した。
オープンソース開発者たちが、Googleが配布したモバイル/エッジデバイス向けフォーマットである.litertlm(TFLiteベース)ファイルを解析していたところ、衝撃的な事実を発見した。HuggingFaceで公開された標準モデル重みには存在しないMTP(Multi-Token Prediction、多重トークン予測)アーキテクチャが、エッジ向けコンパイル済みファイルにのみ含まれていたのだ。
これを公に問題提起すると、Google側は事実を認め、次のように答えた。
> "MTP関連の予測ヘッドは、HuggingFace Transformers APIとの互換性のため、公開モデルから意図的に除外した。LiteRTランタイムには、オンデバイス性能向上のため残していた。"
MTPとは何か
一般的なLLMは、トークンを1つずつ順番に生成する。MTPは、1回のforward passで複数トークンを同時に予測する手法で、投機的デコーディング(Speculative Decoding)と組み合わせると、出力品質を変えずに推論速度を大きく高められる。理論上は損失のない(lossless)最適化だ。
コミュニティによるリバースエンジニアリングの試み
最初の発見者は.litertlmファイルから複数の.tfliteファイルの抽出に成功し、HuggingFaceに抽出ファイルと再現手順を公開したうえで、C++に詳しい人々へ協力を呼びかけた。その後、コミュニティの貢献者たちが本格的なリバースエンジニアリングに着手した。
技術的難関: TFLiteカーネル構造が極めて厄介だった。1024-wideのattentionベクトルをINT8に量子化 → INT8重みと乗算 → 結果を再量子化 → 再び逆量子化する構造だった。
結果: 数日にわたる集中的な作業の末、次の再構成に成功した。
- GQA(Grouped-Query Attention)構造および外部KVキャッシュのマッピング
- スライディングローカルウィンドウの動作
- pre_project / q_proj / MLP / o_proj / post_project の量子化経路
- 部分RoPEの動作
- end-to-end TFLite parity 20/20 top-1 matchを達成
ライセンスはApache 2.0であり、法的問題はない。
実際の性能: どれほど速いのか
コミュニティの実測結果(Strix Halo基準):
| 作業 | 従来 | MTP適用後 |
|---|---|---|
| コード生成 | 8 tps | 25 tps(約3倍) |
| 一般的な文章作成 | 7~8 tps | 11~14 tps |
既存のLLaMA/Qwen3系の投機的デコーディングが通常1.5~1.7倍、最大2倍程度であることと比べると、コード生成で3倍は異例の数値だ。コード生成の特性上、反復的なボイラープレートが多く、ドラフトトークンの受理率が高いためと分析されている。
コミュニティの反応と疑惑
批判は大きく2つの方向から噴出した。
① 文書化されていないことへの批判: 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 drafterを発表した。本来はモデル内部にあるべき機能を外部モデルとして切り出し、迂回的にサポートする形だ。
- 速度: 品質低下なしで最大3倍の推論速度向上
- アシスタントモデル: 約500Mパラメータ級の軽量drafter
- 使い方:
generate()関数のassistant_model=引数に渡すだけで動作。カスタムMTP実装は不要 - 対応環境: HuggingFace Transformers, vLLM, MLX(Apple Silicon), LiteRT-LM
> 💡 一言要約: GoogleはMTPで学習させたGemma 4からその機能を公開配布版で削除していたが、コミュニティのリバースエンジニアリングで発覚した後、外部アシスタントモデルという形で遅れて迂回対応を始めた。
2件のコメント
122Bモデルがあったとは、すごいな…
https://huggingface.co/google/gemma-4-31B-it-assistant
https://github.com/huggingface/transformers/…
https://github.com/Blaizzy/mlx-vlm/pull/1112
https://huggingface.co/collections/mlx-community/gemma-4-assistant-mtp