← README に戻る
この文書の位置づけ
ローカルLLM 実行計画の実測(第10章)で、Qwen3-4B は 56.5 tok/s に到達した。
これはGPUのメモリ帯域が決める上限に近い。帯域を増やさずに、さらに速くする手段はあるか——
その問いに対する候補が Speculative Decoding である。本書はその成立可能性を検討する。実行はまだしていない。
調査のきっかけと結論
きっかけ
npaka 氏の記事「Qwen3.8-27Bにおすすめの推論エンジン」(2026-08-23)で、
Speculative Decoding による高速化が目玉として紹介されていた。
| 手法 | 環境 | 効果 |
| mlx-dspark | M4 Pro / 8bit | 8.3 → 20.3 tok/s(2.45倍) |
| DFlash 2 | H200 / SGLang | GSM8K 3.43倍、MATH-500 3.34倍 |
ただし記事が扱っていた実装はいずれも本PCでは使えない。
mlx-dspark は Apple Silicon 専用、DFlash 2 は SGLang(NVIDIA の大容量GPU向け)専用である。
記事の想定環境も最小で VRAM 24GB と、本PCの6倍以上を前提にしている。
一方で、Speculative Decoding という手法自体は llama.cpp にも実装がある。
そこだけを取り出して本PCに適用できないかを調べたのが本書である。
結論(現時点の見立て)
| 論点 | 見立て |
| VRAMに収まるか | ぎりぎりQwen3-4B + 0.6B ドラフトで約 2.8 GB。空き 3.21 GB に対して余裕は 0.4 GB 程度 |
| 速くなるか | 疑わしい本PCは既に帯域を使い切っており、この手法が最も効く条件から外れている |
| やる価値 | あるドラフトモデルの取得は数百MBで済み、失敗しても損失が小さい |
期待値は高くない。
記事の 2.45 倍・3.43 倍という数字は、大きなモデルを潤沢なメモリで動かす環境のものである。
本PCの条件はほぼ正反対で、同じ倍率は望めない。効果ゼロか、むしろ遅くなる可能性も相応にある。
それでも試す理由は、コストが小さく、外れた場合も「なぜ効かないか」が第10章の帯域律速の裏付けになるため。
仕組み — なぜ速くなるのか
通常の生成が遅い理由
LLM は1トークンを作るたびにモデル全体の重みをメモリから読み出す。
Qwen3-4B なら 2.32 GiB を毎回読む。計算そのものは軽く、待ち時間の大半はメモリ転送である。
これが「生成速度はメモリ帯域で決まる」と言われる理由で、実測の 56 tok/s もこの上限に近い。
先読みと検証に分ける
3つのステップ
- 先読み — 小さなドラフトモデルが次の数トークンを一気に推測する。軽いので速い
- 検証 — 本命モデルが、その推測列を1回の読み出しでまとめて検証する
- 採用 — 先頭から合っている分だけ採用し、外れた時点で本命の答えに差し替える
出力は通常の生成と完全に一致する。品質を落として速くする手法ではなく、
「本命モデルが出すはずの答え」を先回りして当てにいく仕組みである。外れても正しさは損なわれず、単に速くならないだけ。
効くかどうかは「帯域が余っているか」で決まる。
本命モデルを1回読む間に複数トークンを確定できるのが利点なので、
1回の読み出しが遅い環境(=大きなモデル・広い帯域)ほど得をする。
逆に本PCのように小さなモデルで帯域を使い切っていると、削れる余地自体が小さい。
llama.cpp での使い方
主なオプション
| オプション | 意味 |
-md / --model-draft | ドラフトモデルの GGUF を指定する |
-ngld / --n-gpu-layers-draft | ドラフトモデルをGPUに載せる層数。ここを削ると本命に回せる |
--draft-max | 一度に先読みするトークン数の上限。大きいほど当たった時の利得が大きく、外れた時の無駄も大きい |
--draft-min | 先読みの下限 |
--draft-p-min | ドラフトの確信度がこの値を下回ったら先読みを打ち切る |
起動例
llama-server.exe ^
-m "C:\AI_Models\qwen\Qwen3-4B-Instruct-2507-GGUF\Qwen3-4B-Instruct-2507-Q4_K_M.gguf" ^
-md "C:\AI_Models\qwen\Qwen3-0.6B-GGUF\Qwen3-0.6B-Q4_K_M.gguf" ^
-ngl 99 ^
-ngld 99 ^
--draft-max 4 ^
-c 4096 ^
--host 127.0.0.1 --port 8080
成立の前提条件
| 条件 | 内容 | 本PCでの充足 |
| 語彙の一致 | ドラフトと本命のトークナイザが互換である必要がある。異なる系列のモデルは組み合わせられない | 満たせるQwen3 系で揃える |
| 両方をメモリに載せる | ドラフトと本命の両方が同時に必要。KVキャッシュも2つ分要る | ぎりぎり第4章で見積る |
| ドラフトが十分速い | 先読みが遅いと、検証を減らした利得を食い潰す | 満たせる0.6B は 4B の4倍近く軽い |
| 受理率が高い | ドラフトの推測が当たらないと、単に無駄な計算が増える | 未知実測でしか分からない |
語彙の一致は妥協できない。
Qwen3-4B に gemma の小型モデルを組み合わせる、といったことはできない。
ドラフトは同じ系列の小さい版から選ぶ。手持ちに 0.6B 級が無いため、取得が前提になる。
このPCで成立するか — VRAM の見積り
使える VRAM
計画書 第10章の実測どおり、本PCの VRAM は 4095 MiB のうち 808 MiB が画面表示等で先に使われており、空きは 3287 MiB(3.21 GiB)。
ここに2つのモデルを同居させることになる。
配分の試算
| 項目 | 見積り | 根拠 |
| 本命 Qwen3-4B Q4_K_M | 2376 MiB | 計画書 第10章の実測値(2.32 GiB) |
| ドラフト 0.6B Q4_K_M | 約 410 MiB | 推定。パラメータ数からの概算 |
| KVキャッシュ ×2 | 約 300 MiB | 推定。-c 4096 相当を2モデル分 |
| 合計 | 約 3086 MiB | 空き 3287 MiB に対して余裕 約 200 MiB |
収まるが、余裕はない
計算上は収まる。ただし残り 200 MiB は誤差で消える水準である。
計画書 第10章で確認したとおり、VRAM を超えてもエラーにはならず
共有メモリに逃げて数十倍遅くなるため、超過に気づきにくい点にも注意が要る。
逃げ道
| 手 | 効果 | 副作用 |
-ngld を下げる | ドラフトの一部をCPUに置き、VRAMを空ける | 先読みが遅くなり、利得が減る |
| KV量子化 | --cache-type-k q8_0 でKVを半分に | ほぼ無し。計画書でも採用済み |
| より小さいドラフト | 0.6B より小さい版があれば | 受理率が下がる恐れ |
| 画面表示を内蔵GPUへ | 808 MiB のうち数百MBを取り戻せる | 設定変更が要る |
本PCの条件は、この手法が最も効く条件と逆を向いている。
Speculative Decoding は「本命モデルの読み出しが重い」ほど得をする。
本PCの本命は 2.32 GiB と軽く、既に 56 tok/s まで出ている。
削れる余地が小さいうえ、ドラフトの実行時間が新たに乗る。差し引きでマイナスになる可能性がある。
検証計画
事前に必要なもの
| 項目 | 内容 | 取得量 |
| ドラフトモデル | Qwen3-0.6B の GGUF(Q4_K_M)。本命と同系列で語彙を揃える | 約 0.4 GB |
| 対照データ | 計画書 第10章の Qwen3-4B 単体 56.49 tok/s | 取得済み |
測る組み合わせ
| No | 構成 | draft-max | 狙い |
| 1 | Qwen3-4B 単体(対照) | — | 基準。56.49 tok/s と一致するか確認する |
| 2 | 4B + 0.6B ドラフト | 2 | 控えめな先読み。外れた時の損失が小さい |
| 3 | 4B + 0.6B ドラフト | 4 | 標準的な設定 |
| 4 | 4B + 0.6B ドラフト | 8 | 強気の先読み。受理率が高ければ最も伸びる |
| 5 | 4 に KV量子化を追加 | 8 | VRAM を空けて余裕を作る |
測定時に併せて確認すること
- VRAM 使用量 —
nvidia-smi で 3287 MiB を超えていないか。超えていれば速度低下の原因はここ
- 受理率 — llama.cpp のログに出るドラフト採用率。低ければ
--draft-max を下げる
- 出力の同一性 — 同じ seed で単体構成と同じ出力になるか。仕組み上は一致するはず
判断基準
| 結果 | 次の一手 |
| 70 tok/s 以上 | 採用する。計画書の常用構成を差し替え、起動スクリプトを更新する |
| 56〜70 tok/s | 効果はあるが VRAM の余裕を失う。コンテキスト長とのトレードオフで判断する |
| 56 tok/s 未満 | 見送る。帯域律速という第10章の見立てが裏付けられたことを記録して終える |
この調査で分かっていないこと
- 未確認Qwen3-0.6B の GGUF が実際に配布されているか。無ければ別系列で組み直す必要がある
- 未確認ドラフトモデルの正確なファイルサイズ。第4章の 410 MiB は概算
- 未確認本PCのビルド(b10612)で
-md 系オプションがどう提供されているか。オプション名は版により変わる
- 未実施検証そのもの。本書は事前検討のみで、実行はしていない
実行前に、まずオプションの存在確認から始める。
llama-server.exe --help で --model-draft 系が実際に何という名前で用意されているかを確かめる。
ここが空振りなら、ドラフトモデルの取得は不要になる。
参考資料
調査のきっかけ
実装の確認先
第4章の見積りは推定値を含む。
ドラフトモデルのサイズ(約 410 MiB)と KV キャッシュ(約 300 MiB)は
パラメータ数からの概算で、実測していない。本命モデルの 2376 MiB のみ計画書 第10章の実測値。