見出し画像

Gemma 4の推論が最大3倍速に。MTPドラフターをOllamaとMLXで有効にする手順

Gemma 4にMTP(Multi-Token Prediction)ドラフターが公式リリースされました。対応フレームワークで有効にすると、出力品質を落とさずに推論速度が最大3倍になります。

この記事では、MTPドラフターの仕組みと、Ollama・MLX・Transformersそれぞれでの設定方法をまとめます。

この記事でわかること

  • MTPドラフターとは何か(通常のスペキュラティブデコーディングとの違い)

  • 利用可能なGemma 4ドラフターモデル一覧

  • Ollamaでの設定方法(もっとも簡単)

  • MLX / Hugging Face Transformersでの設定方法

  • Apple Siliconでの実測目安

  • 既存のQwen3.6 MTP(Llama.cpp)との違い

MTPドラフターとは

通常のLLM推論は、1トークンずつ順番に生成します。MTPドラフターは「軽量な補助モデルが数トークン先を予測し、本体モデルがまとめて検証する」仕組みです。

スペキュラティブデコーディングと原理は同じですが、決定的な違いが1つあります。従来のスペキュラティブデコーディングでは別のドラフトモデルを用意する必要がありました。MTPドラフターはGemma 4本体と入力埋め込みテーブルを共有し、本体の最終層の活性化を直接利用する設計です。そのため追加のメモリ消費が小さく、セットアップも簡単です。

ドラフターは4層しかない超軽量モデルなので、推論コストはほぼゼロ。ドラフトが当たればまとめて採用、外れても通常の1トークン生成に戻るだけです。

利用可能なドラフターモデル

Google公式から、Apache 2.0ライセンスで以下のドラフターが公開されています。

  • google/gemma-4-E2B-it-assistant(E2Bモデル用)

  • google/gemma-4-E4B-it-assistant(E4Bモデル用)

  • google/gemma-4-26B-A4B-it-assistant(26B MoEモデル用)

  • google/gemma-4-31B-it-assistant(31B Denseモデル用)

各ドラフターは対応するターゲットモデル専用です。31B用ドラフターをE4Bに使う、といった組み合わせはできません。

対応フレームワーク

Day-0サポートが発表されているフレームワークは以下のとおりです。

  • Hugging Face Transformers

  • MLX(Apple Silicon向け)

  • vLLM

  • SGLang

  • Ollama

  • LiteRT-LM(モバイル向け)

  • Google AI Edge Gallery(Android / iOS)

Ollamaでの設定方法

OllamaはGemma 4 MTPドラフターの公式対応フレームワークに含まれています。

基本的な流れは以下のとおりです。

  1. ターゲットモデルをpull: `ollama pull gemma4:e4b`

  2. ドラフターモデルをpull(タグ名は `ollama.com/library/gemma4` で確認)

  3. Modelfileでドラフターを指定してカスタムモデルを作成

ollama create gemma4-mtp -f Modelfile
ollama run gemma4-mtp

ドラフターが有効になっていれば、体感でわかるレベルでトークン生成が速くなります。

注意: OllamaのMTPドラフター対応はバージョンによって異なります。2026年5月時点で最新版へアップデートした上で、`ollama.com/library/gemma4` のタグ一覧からドラフター用モデルの有無を確認してください。まだタグが公開されていない場合は、Hugging FaceからGGUF形式をダウンロードしてModelfileで指定する方法もあります。

MLX(Apple Silicon)での設定方法

MLXはApple Silicon向けに最適化されたフレームワークで、Gemma 4 MTPにDay-0対応しています。

pip install -U mlx-lm

MLXでのスペキュラティブデコーディングは、ターゲットモデルとドラフターモデルを別々にロードして組み合わせる形式です。具体的なAPIは `mlx-lm` のバージョンによって変わるため、公式リポジトリのexamplesを確認してください。

また、MTPLX(github.com/youssofal/MTPLX)というOSSもあります。MLXネイティブのMTPスペキュラティブデコーディングを実装しており、OpenAI API互換のサーバーとして動作します。Qwen3.6での実測では2〜2.5倍のデコード速度向上が報告されています。

Hugging Face Transformersでの設定方法

Transformersでは、`generate()` にドラフターモデルを渡すだけで有効になります。

from transformers import AutoModelForCausalLM, AutoProcessor

target = AutoModelForCausalLM.from_pretrained(
    "google/gemma-4-e4b-it",
    torch_dtype="auto",
    device_map="auto"
)

drafter = AutoModelForCausalLM.from_pretrained(
    "google/gemma-4-E4B-it-assistant",
    torch_dtype="auto",
    device_map="auto"
)

processor = AutoProcessor.from_pretrained("google/gemma-4-e4b-it")

inputs = processor("MTPの仕組みを説明して", return_tensors="pt").to(target.device)

output = target.generate(
    **inputs,
    assistant_model=drafter,
    max_new_tokens=256
)

`num_assistant_tokens_schedule="heuristic"` を指定すると、ドラフトトークン数が採択率に応じて2〜15の間で動的に調整されます。

Apple Siliconでの速度目安

Google公式ブログによると、Apple Silicon環境での改善幅は以下のとおりです。

  • バッチサイズ1(通常の対話): 体感で1.5〜2倍程度の高速化

  • バッチサイズ4〜8(並列処理): 最大約2.2倍

「最大3倍」はNVIDIA RTX PRO 6000での数値です。Apple Siliconでは2倍前後が現実的な期待値になります。それでも、追加コストゼロで推論が2倍速になるのは大きな改善です。

Qwen3.6 MTP(Llama.cpp)との違い

先日紹介したQwen3.6のMTP(Llama.cpp `--spec-type mtp`)との比較です。

  • Qwen3.6 MTP: MTPヘッドがモデル本体に内蔵。Llama.cppで `--spec-type mtp` オプションを付けるだけ。追加メモリ約2.5GB。実測1.85倍

  • Gemma 4 MTP: 外部ドラフターモデルをペアで使う。Ollama/MLX/Transformersで対応。ドラフターは4層の超軽量モデル。公称最大3倍(Apple Siliconでは約2倍)

どちらも「出力品質を落とさず速くする」点は同じです。使っているモデルに合わせて選んでください。Gemma 4ユーザーならMTPドラフター、Qwen3.6ユーザーならLlama.cpp内蔵MTPが最適です。

メモリ要件の目安

  • Gemma 4 E4B + ドラフター: 16GB以上のMac(M1/M2/M3/M4)

  • Gemma 4 26B MoE + ドラフター: 32GB以上推奨

  • Gemma 4 31B Dense + ドラフター: 36GB以上必須(48GB M4 Maxが快適)

ドラフターは4層しかないため、追加メモリは数百MB〜1GB程度です。ターゲットモデルが動く環境なら、ドラフターを足しても問題ありません。

まとめ

Gemma 4のMTPドラフターは、追加コストほぼゼロで推論速度を2〜3倍にできる仕組みです。設定は各フレームワークでドラフターモデルを指定するだけ。

すでにGemma 4をローカルで使っている人は、今日からドラフターを有効にして速度の違いを試してみてください。E4Bなら16GBのMacでも動きます。

フレームワーク側のMTP対応は日々進化しているので、Ollama・mlx-lmともに最新版へのアップデートをおすすめします。


推論を速くできたら次は大型モデルですが、話題のGLM-5.2はローカルで最低223GB必要でした。その現実はこちらです。


いいなと思ったら応援しよう!