什么是推测解码?
快速回答
推测解码将小型草稿模型与更大的目标模型配对使用。草稿模型提前提出若干候选词元,目标模型在一次并行前向计算中统一验证这些词元,而不是每个词元都单独顺序验证,因此在草稿猜测被采纳时生成速度更快。
- ▸小型草稿模型会在主模型之前提出多个候选词元。
- ▸更大的目标模型在一次并行计算中验证这些候选词元。
- ▸输出质量与目标模型完全一致 —— 推测解码不改变生成内容,只改变生成速度。
更新于: 2026年7月14日
关键要点
- ✓小型草稿模型提前提出词元;更大的目标模型在一次并行计算中完成验证
- ✓输出质量与单独运行目标模型完全相同 —— 变化的只是速度
- ✓在代码等可预测、结构重复的文本上,草稿模型猜测正确的概率更高,加速效果最明显
- ✓草稿模型必须与目标模型使用相同的分词器和词表
工作原理
草稿模型比目标模型小得多、速度也快得多,它会生成一小段候选词元序列。目标模型随后在一次前向计算中评估整段序列,接受与它自己独立生成结果一致的词元,并丢弃其余部分(包括第一个不一致点之后生成的所有内容)。
由于在目标模型上并行验证多个词元的开销与顺序生成单个词元的开销大致相同,被接受的候选词元可以直接转化为速度提升,而不会改变最终输出。目标模型始终拥有最终决定权 —— 草稿模型的错误猜测只会浪费生成它所花的(很短的)时间,绝不会被采纳进最终输出。
推测解码最有效的场景
在生成代码、结构化数据或其他可预测文本时使用推测解码,此时草稿模型的猜测采纳率高,加速效果最明显。当生成速度而非提示处理速度是瓶颈时也适合使用,因为推测解码专门加速逐词元生成这一步骤。
在生成高度创意、难以预测的文本(开放式虚构写作、头脑风暴)时应避免使用推测解码,此时草稿模型的猜测采纳率较低,加速效果减弱 —— 在最坏情况下,草稿模型带来的额外开销甚至可能抵消收益。如果没有来自同一模型系列、兼容的小型模型可用作草稿模型,也应避免使用。
配置草稿模型
草稿模型必须与目标模型使用相同的分词器和词表 —— 使用不同系列的模型(甚至是同一模型在不同版本间词表发生变化的不同规格版本)组合都无法正常工作。最常见的配置是使用与目标模型同系列的更小模型(例如,用同系列的1B级模型为13B级目标模型担任草稿模型)。
包括llama.cpp在内的多款本地推理工具原生支持推测解码 —— 配置通常只需在启动时同时指定目标模型和草稿模型,无需改变提示词的写法。