Qwen3.6のMTPを試す
2026/05/16 に llama.cpp のMTP対応PRがマージされました🎉
さっそくビルドしてどれくらい速くなるのか確かめてみたいと思います。
環境
- OS: CachyOS Linux
- Kernel: 7.0.5-2-cachyos (64-bit)
- CPU: Intel® Core™ i7-14700KF
- メモリ: 64GB DDR4
- GPU 1: GeForce RTX 4090
- GPU 2: GeForce RTX 5080
利用モデル
量子化はQ6_K_XLを使いました。
MTPの設定
以下のフラグをllama.cppの起動コマンドに足します。
--spec-type draft-mtp --spec-draft-n-max 3 --spec-draft-p-min 0.751. 日本語生成
プロンプト1
夏目漱石の小説「吾輩は猫である」のあらすじを1200文字前後で書いて-
MTPなし
prompt eval time = 425.18 ms / 37 tokens ( 11.49 ms per token, 87.02 tokens per second)eval time = 181486.50 ms / 5817 tokens ( 31.20 ms per token, 32.05 tokens per second)total time = 181911.68 ms / 5854 tokens -
MTPあり
prompt eval time = 171.88 ms / 37 tokens ( 4.65 ms per token, 215.27 tokens per second)eval time = 96908.24 ms / 6146 tokens ( 15.77 ms per token, 63.42 tokens per second)total time = 97080.12 ms / 6183 tokensdraft acceptance rate = 0.72122 ( 4204 accepted / 5829 generated)
トークン生成速度は 32→63 と 約2倍 になっています。
draft acceptance rateは0.72 で、投機生成したトークンのうち約72%が出力として採用されています。
プロンプト2
先ほど生成したあらすじを要約してみます
400文字に要約して-
MTPなし
prompt eval time = 2623.50 ms / 5873 tokens ( 0.45 ms per token, 2238.61 tokens per second)eval time = 131071.18 ms / 4127 tokens ( 31.76 ms per token, 31.49 tokens per second)total time = 133694.69 ms / 10000 tokens -
MTPあり
prompt eval time = 5049.14 ms / 6202 tokens ( 0.81 ms per token, 1228.33 tokens per second)eval time = 47132.70 ms / 3373 tokens ( 13.97 ms per token, 71.56 tokens per second)total time = 52181.83 ms / 9575 tokensdraft acceptance rate = 0.87563 ( 2443 accepted / 2790 generated)
生成速度は引き続き大きく向上しています。一方で、長い入力を含むこのケースでは prompt processing が 半分程度 に落ち込んでいるのがわかります。
2. コード生成
プロンプト1
write tetris in javascript-
MTPなし
prompt eval time = 176.89 ms / 15 tokens ( 11.79 ms per token, 84.80 tokens per second)eval time = 158234.11 ms / 4905 tokens ( 32.26 ms per token, 31.00 tokens per second)total time = 158411.00 ms / 4920 tokens -
MTPあり
prompt eval time = 449.76 ms / 15 tokens ( 29.98 ms per token, 33.35 tokens per second)eval time = 73757.71 ms / 5487 tokens ( 13.44 ms per token, 74.39 tokens per second)total time = 74207.48 ms / 5502 tokensdraft acceptance rate = 0.90796 ( 4015 accepted / 4422 generated)
トークン生成速度は 31→74 と 約2.4倍 にあがりました。
draft acceptance rateも0.90 と日本語の場合よりも当たりが多くなっています。
プロンプト2
rewrite it without for loops-
MTPなし
prompt eval time = 2306.75 ms / 4936 tokens ( 0.47 ms per token, 2139.81 tokens per second)eval time = 163382.69 ms / 5091 tokens ( 32.09 ms per token, 31.16 tokens per second)total time = 165689.45 ms / 10027 tokens -
MTPあり
prompt eval time = 4716.47 ms / 5518 tokens ( 0.85 ms per token, 1169.94 tokens per second)eval time = 75981.41 ms / 5647 tokens ( 13.46 ms per token, 74.32 tokens per second)total time = 80697.88 ms / 11165 tokensdraft acceptance rate = 0.92891 ( 4155 accepted / 4473 generated)
こちらも prompt processing の速度が半分ほどに下がっています。
まとめ
MTPを利用することでトークン生成速度を2倍前後に高速化することが出来ました。非力なGPUでも実用的な速度でLLMを利用することができるため、ローカルLLM勢にとっては大変ありがたい機能です。
一方でprompt processingの速度は半分程度になっています。 トータルの作業時間で見た場合、大量のテキストを読ませる作業やメモリ帯域幅の狭い環境ではこの速度低下の影響を受けそうです。
| タスク | MTPなし | MTPあり | 速度向上 |
|---|---|---|---|
| 日本語あらすじ生成 | 32.05 tok/s | 63.42 tok/s | 約1.98倍 |
| 日本語要約 | 31.49 tok/s | 71.56 tok/s | 約2.27倍 |
| Tetris生成 | 31.00 tok/s | 74.39 tok/s | 約2.40倍 |
| for loopなしに書き換え | 31.16 tok/s | 74.32 tok/s | 約2.38倍 |
| タスク | MTPなし | MTPあり | 速度変化 |
|---|---|---|---|
| 日本語要約 | 2238.61 tok/s | 1228.33 tok/s | 約0.55倍 |
| for loopなし書き換え | 2139.81 tok/s | 1169.94 tok/s | 約0.55倍 |