MTPとは?Qwen3.6とllama.cppで推論を高速化する仕組み・設定・注意点

公開日
2026-07-15
更新日
2026-07-15
情報確認日
2026-07-15
編集・運営
Local AI Compass

MTPは複数tokenの予測を使い、target modelの検証で生成を進める仕組みです。draft tokenがよく受理されれば速くなることがありますが、n-max、sampling、quant、VRAM、llama.cppの対応で結果は変わります。

導入前に確認すること

  • Windowsのバージョン、メモリ容量、GPU/VRAM、空き容量を確認する
  • 最初は軽量モデル、短い質問、少ない同時作業から始める
  • 公式サイトの対応OS、利用規約、モデルのライセンスを確認する

ひとことで言うと

MTP(Multi-Token Prediction)は、次のtokenを1つずつ出すだけでなく、複数step先のtoken予測を学習・推論へ利用する考え方です。llama.cppでは、draft tokenを作ってtarget側で検証するspeculative decodingの一方式としてdraft-mtpを指定します。

通常生成 1 tokenずつ

target modelが順番にdecodeする。比較のbaselineにする。

MTP draft → 検証

複数候補を作り、targetが受理できるtokenをまとめて進める。

判断 acceptedが重要

draftの計算コストを超える受理とbatch効率があるかを測る。

通常の自己回帰生成

通常の自己回帰生成では、直前までのtoken列を使って次のtokenを決め、出力へ追加してからまた次を計算します。生成中のdecodeは、入力全体をまとめて処理するprompt processingより、逐次処理の影響を受けやすい段階です。

prompt processing / prefill
入力promptをまとめて処理する段階。入力長、batch、context、TTFTへ影響します。
generation / decode
回答tokenを生成する段階。tokens/sとMTPの主な比較対象です。
TTFT
入力を送って最初のtokenが出るまで。MTPで常に改善するとは限りません。

speculative decodingの基本

llama.cpp公式ドキュメントは、draftを先に作り、target modelがまとめて検証することで、draft予測が頻繁に正しい場合に生成を加速できると説明しています。速さは候補を出すコストと、受理してまとめて進む効果の差で決まります。

通常生成とMTPでdraft tokenをtargetが検証する流れの概念図
draftを先に作ってtargetが検証する概念図。実測の速度差ではありません。
通常: target → token 1 → target → token 2
MTP:   draft → token 1, 2, ... → targetで検証 → acceptedをまとめて採用

したがってMTPのフラグを付けたら必ず2倍ではありません。prompt、sampling、モデル、quant、GPU、受理率が異なる測定値を、そのまま別環境へ移しません。

Multi-Token PredictionとQwen3.6

Qwen公式モデルカードはQwen3.6-27BのMTPをmulti-stepsで訓練したと示しています。UnslothはQwen3.6-27B-MTP-GGUFとしてGGUFを配布し、llama.cppでdraft-mtpとspec-draft-n-max 2を使う例を掲載しています。

ここでの「公式」はQwenのモデル仕様、「配布者の案内」はUnslothのGGUFと実行例、「独自実測」は読者のColabで取得したlogです。3つの根拠を1つに混ぜず、モデルrevisionとllama.cpp commitを一緒に記録します。

llama.cppのdraft-mtp設定

現行のllama.cpp CLIではspec-typeにdraft-mtpがあり、spec-draft-n-maxでdraft token数を指定できます。Qwen3.6 MTP GGUFでは、配布者の例に合わせてn-max=2から始め、n-max=1やbaselineと比較します。

llama.cpp/build/bin/llama-cli --hf-repo "unsloth/Qwen3.6-27B-MTP-GGUF:Q3_K_S" --no-mmproj --ngl 99 --ctx-size 4096 --n-predict 128 --spec-type draft-mtp --spec-draft-n-max 2 --single-turn --seed 42 --temp 0.7 --top-p 0.8 --top-k 20 --min-p 0.0 --prompt "$PROMPT"

CLIのhelpやREADMEでoption名を再確認し、実行時に出たcommitとversionを記録します。最新mainの挙動を将来も同じだと断定しません。

別draft model方式との違い

別draft model方式との違いの表
方式draftを作るもの注意
draft model小さい別モデルtargetとtokenizer/用途の相性、追加モデルのVRAMが必要
draft-eagle3target hidden stateを使う専用speculatortargetと対応するdraft checkpointが必要
draft-mtpMTP対応target/GGUF側の仕組み対応モデル、GGUF、runtime、optionをそろえる
ngram系履歴のn-gram繰り返しが多い用途など、MTPとは別方式

draftがあるからMTPとは限りません。llama.cppのdraft、draft-eagle3、draft-mtp、ngram系は同じ目的に見えても構成と制限が違います。

なぜ速くなることがあり、遅くなることもあるのか

論文や配布者ページの速度向上率は、その環境の観測または主張です。Qwen3.6-27BをColab T4で測っていない数字を、自分の結果として書かないでください。

受理率・n-max・p-minの読み方

accepted tokens
draftで提案したtokenのうち、targetの検証を通って採用された数。MTPの効き方を見るログ上の手がかりです。
n-max
1回にdraftするtoken数の上限。大きくすると候補数と負荷も増えるため、1→2の順で比較します。
p-min
speculative decodingを使う最低確率の設定。先にsamplingとn-maxを固定し、理由なく同時に変えません。
  1. baselineを同じpromptで実行する。
  2. MTP n-max=1を実行し、速度・VRAM・acceptedを記録する。
  3. MTP n-max=2を実行し、baselineと同じ表へ追加する。
  4. 受理率が低い場合はp-minをいじる前に、prompt、sampling、model revision、commitを確認する。

VRAM・context・MTPの追加負荷

MTPをonにすると、baselineと同じmodel weightsでも、draft関連のbufferやKV cacheの余白が足りなくなる場合があります。contextを長くするとKV cacheが増えるため、T4 16GBではQ3系・短いcontext・MTP offから段階的に上げます。

VRAM・context・MTPの追加負荷の表
変更増える可能性のある負荷測定時の扱い
contextを増やすKV cache、prompt処理、VRAMMTPの比較とは別の測定行にする
n-maxを増やすdraft/verification buffer、計算n-max=1/2/4を個別に記録する
quantを重くするmodel weights、VRAM、diskbaselineとMTPで同じquantにする
mmprojを使うvision部品、VRAMMTP実践では使わずtext-onlyで分ける

出力品質・sampling・再現性

同じseedを使っても、runtime、chat template、llama.cpp commit、samplingの実装が違えば出力が同じとは限りません。速度の比較ではpromptと出力上限を固定し、内容の比較では出力を保存して人間が確認します。

  • モデルrevisionとGGUFのquantを記録する
  • temperature、top-p、top-k、min-p、seedを記録する
  • thinking/reasoningの設定を記録する
  • prompt processingとgenerationを分ける
  • 精度損失ゼロや完全一致を未検証のまま書かない

MTP比較テンプレート

MTP比較テンプレートの表
条件baselineMTP
llama.cpp commit同じ同じ
GGUF repo / quant同じ同じ
context / batch / GPU layers同じ同じ
prompt / output / sampling / seed同じ同じ
MTP optionnonedraft-mtp、n-max=1/2
TTFT / prompt processing記録記録
generation tokens/s記録記録
peak VRAM / accepted tokens記録記録

1回しか測れない場合は単回と明記し、GPU実測未完なら空欄を想像で埋めません。3回以上なら中央値、cold/warm、失敗条件も残します。

向いている用途・向いていない用途

llama-serverを使う場合も、外部公開トンネルや常設サービス化の手順へ広げません。まずllama-cliでモデル単体の推論を確認します。

FAQとColab実践への導線

よくある質問

MTPとspeculative decodingは同じですか?

同じ言葉ではありません。speculative decodingはdraftを先に作りtargetで検証する推論手法の総称で、MTPは複数tokenを予測する学習・モデル側の仕組みの一つです。llama.cppではdraft-mtpという実装名として指定します。

draft modelは必要ですか?

方式によります。一般的なdraft方式は小さい別モデルを使いますが、Qwen3.6 MTP GGUFとllama.cppのdraft-mtpはモデル内のMTPを使う構成として配布者の実行例が示されています。方式を混ぜないでください。

Qwen3.6-27BではMTPがモデル内にありますか?

Qwen公式モデルカードはMTPをmulti-stepsで訓練したと説明しています。実際にGGUFで使えるか、どのoptionが必要かは、配布ファイルとllama.cppの対応commitを合わせて確認します。

spec-draft-n-maxは大きいほど速いですか?

大きいほど速いとは限りません。draftの計算やVRAM使用量が増え、受理率が低いと検証コストが勝たない場合があります。まず1または2から始め、同じ条件で比較します。

MTPでVRAM使用量は増えますか?

増える可能性があります。MTP関連のbufferやKV cache、runtimeの余白が必要になるため、baselineが動いてもMTPだけOOMになることがあります。nvidia-smiとログで確認してください。

prompt processingも速くなりますか?

MTPは主に生成側のdecodeを比較する話です。prompt processingやTTFTまで速くなるとは限らないため、prefill、TTFT、generation tokens/sを分けて記録します。

出力内容が必ず完全一致しますか?

必ず完全一致するとは書きません。seed、sampling、実装、chat template、MTPの受理と検証条件を固定して、実際の出力を比較してください。

LM StudioやOllamaから同じMTP設定を使えますか?

llama.cppのCLI optionをそのまま各UIへ貼れるとは限りません。まず公式に対応するruntimeと設定画面を確認し、今回の再現手順はllama-cliで分けて測ります。

速度向上率はどう測ればよいですか?

同じGGUF、quant、context、prompt、output上限、sampling、GPU layers、seedでbaselineとMTPを複数回測ります。generation tokens/sだけでなくTTFT、peak VRAM、accepted draft tokens、失敗条件も残します。

受理率が低い場合はどうしますか?

まずsamplingとprompt、モデル・量子化、llama.cpp commit、n-maxを確認します。n-maxを下げる、MTPをoffに戻す、短い固定promptで再測定する順が安全です。

次に読むおすすめルート

GPUなし・低スペックPCの人

軽量モデル、メモリ別の目安、重いときの確認ポイントを先に見ます。

  1. ローカルAI用PCスペックの見方
  2. GPUなしPCで使える範囲を整理
  3. GPUなしで音声を文字起こしする
  4. 古いWindows PCでLM Studioを使うなら
  5. 中古PCでローカルAIは使える?
  6. ミニPCでローカルAIは使える?
  7. メモリ別に始める前に知ること
  8. GPUオフロードとは
  9. 速度・RAM・VRAMを測る方法
  10. Google ColabでQwen3.6-27Bを動かす
  11. Colab T4のGGUF OOM対策
  12. Gemma 4 12Bの更新メモ
  13. 重い・動かないときの確認ポイント
  14. 診断ページ

あなたはどのタイプ?

関連チェック先

  • Qwen3.6-27B model card - 27B、MTPの学習、native context、モデル構成を確認するQwen公式のモデルカードです。
  • Qwen3.6-27B official blog - Qwen3.6-27Bの公式発表です。モデルカードと内容が異なる場合は、両方の確認日を残します。
  • Unsloth Qwen3.6-27B-MTP-GGUF - GGUFの配布ファイル、量子化候補、llama.cppのMTP実行例を確認する配布者ページです。
  • Hugging Face GGUF documentation - GGUFの形式、metadata、Hub上の検索とファイル確認を読む公式ドキュメントです。
  • llama.cpp speculative decoding - speculative decodingの方式、accepted token、現行のspeculative optionsを確認する公式ドキュメントです。
  • llama.cpp CLI README - llama-cliのHugging Face repo指定、context、sampling、MTP関連のoptionを確認する公式READMEです。
  • Google Colab FAQ - 無料枠のGPU、利用制限、idle timeout、VMの最大寿命、notebook共有を確認する公式FAQです。
  • NVIDIA T4 specifications - T4の16GB GDDR6、メモリ帯域、用途を確認するNVIDIA公式ページです。
  • Better & Faster Large Language Models via Multi-token Prediction - Multi-Token Predictionの研究上の考え方を確認する補助資料です。Colabの速度保証には使いません。

関連ツール

比較表を見る / 最初に検討しやすいツールを確認する