ローカルLLMを速くする: 投機的デコーディングの有効化(llama.cpp / LM Studio / Ollama / vLLM / MLX)
小さい「下書きモデル」に次の数トークンを提案させ、本体が一括で検証する。出力品質は変わらず、コードのような予測しやすい文章ほど速くなる。代わりにメモリを余計に使う。
ツール別の有効化
- llama.cpp(llama-server):
-md <draft.gguf>に加えて--spec-type draft-simpleが必要(既定は none なので-mdだけでは何もしない)。深さは--spec-draft-n-max(既定3)。下書きモデルがなければ--spec-type ngram-simple/ngram-mod(繰り返しの多い書き換え・要約向け) - LM Studio: Power User 以上。チャットのサイドバーで Speculative Decoding の下書きモデルを選ぶ。目安 7B→約1B、14B→約3B、32B→約7B。SDK は
draftModel - Ollama: Modelfile の
draft_num_predict(0で無効) - vLLM:
--speculative-config '{"method":"draft_model","model":"<draft>","num_speculative_tokens":5}'。ngram/eagle3/mtp なども選べる - mlx-lm:
mlx_lm.generate --draft-model <small> --num-draft-tokens 3 - transformers:
model.generate(..., assistant_model=small)
効かない/逆効果になる場面
- 本体と下書きでトークナイザ(語彙)が違う
- 下書きが大きすぎる・弱すぎる(速度が変わらないか落ちる)
- 創作など予測しにくい文章(受理率が低い)
- 高バッチ・高 QPS で既に GPU が詰まっている
コツ
- 同じ系列のずっと小さいモデルを下書きにし、受理率と tok/s を見て、落ちるなら切る
- 関連: GLM-5.2 をどのハーネスで使うか(Z.ai 開発者のおすすめ)
出典
- @shtse8 · 2026-10-14 (各ツールの公式ドキュメントを整理したもの)