投机解码实操:本地推理翻倍提速的正确姿势与坑
它为什么能加速又不掉质量 自回归解码有个天然瓶颈:生成第 N 个 token 必须等第 N-1 个算完,一步一步串行,GPU 大量算力在干等。投机解码(speculative decoding)绕过这个瓶颈:先让一个小而快的 draft 模型一口气猜后面 8 到 16 个 token,再让主模型用一次批量前向同时验证这一串猜测——猜对的直接采纳,猜错的从错处重算。关键在于验证用的是主模型同分布的采样规则(拒绝采样),所以输出和主模型逐字生成完全等价,质量不掉,速度却能提升。这是它比量化之类有损加速更迷人的地方:无损提速。 两条路线:独立 draft 与自带 MTP 2026 年的生态里,投机解码分两路。一路是经典 draft 模型:从同一个模型家族里挑一个更小的兄弟当 drafter,比如用 Qwen2.5-0.5B 配 Qwen2.5-7B,在 llama.cpp 里用 --spec-draft-model 指过去。另一路是自带的多 token 预测头(MTP):像 DeepSeek V4 附带的 DSpark drafter、Qwen4Exp、Kimi K3,把草稿模块直接训进了权重,不用你另找小模型,开箱即用——而且同分布,接受率天然高。llama.cpp v0.6.0 已经把 Qwen4Exp 的 MTP 投机解码纳入稳定支持。 命令行怎么开 llama-server 里典型的开法是: llama-server --model target-Q4_K_M.gguf \ --spec-draft-model draft-Q4_K_M.gguf \ --spec-type draft-simple \ --spec-draft-n-max 8 \ --n-gpu-layers 99 --spec-draft-n-max 控制一次猜几个(默认约 16,太大反而拖慢)。跑起来后 stderr 会打印 accepted / rejected 的比例,这是你判断效果的唯一硬指标。 ...



