标准回答
为什么能加速
自回归 decode 每步只算一个 token,是访存受限的:把整套权重读进来却只产出一个 token,GPU 算力大量浪费。投机解码的思路是用这份「免费」的算力一次验证多个 token。
工作流程
- 一个小而快的草稿模型自回归地连续生成 k 个候选 token。
- 大模型对这 k 个 token 做一次并行前向,同时得到每个位置的真实概率。
- 从左到右逐个验证:用 rejection sampling 决定接受或拒绝。被接受的 token 直接采纳;遇到第一个被拒的位置就截断,并从大模型的校正分布重采一个 token。
- 重复。每轮大模型只做一次前向,却可能产出多个 token。
关键性质:无损
rejection sampling 的校正保证最终输出分布与大模型自己逐 token 解码完全相同,因此是精确加速、不牺牲质量。
加速比取决于接受率:草稿模型越能预测大模型的输出、接受率越高,平均每次前向产出的 token 越多。详见 LLM 推理加速(四)。
常见误区
⚠️ 常见踩坑
别说投机解码会降低生成质量——经 rejection sampling 校正后分布与大模型一致;也别忽略草稿模型的成本:草稿太慢或接受率太低时,多出的草稿前向会吃掉收益甚至变慢。
追问
追问 1:草稿模型怎么选?
要在「快」和「与大模型分布接近」之间平衡:常用同系列的小模型、量化版,或 Medusa/EAGLE 这类在大模型上加轻量预测头的自投机方案,省去单独维护草稿模型。
追问 2:接受率低时为什么可能变慢?
每轮要付草稿生成 + 大模型验证两份成本。接受率低则多数草稿 token 被拒、白算,额外开销超过省下的前向,整体反而比直接解码慢。
追问 3:Medusa/EAGLE 与经典投机解码的区别?
它们是自投机:不另用一个独立草稿模型,而在大模型上加多个预测头并行猜后续 token,再由主干验证,省去双模型部署、提高接受率。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
📚 知识库
🛠️ AI 工具
- vLLM
高吞吐 LLM 推理引擎,77,418+ stars。采用 PagedAttention 显存优化技术,吞吐量比 HuggingFace Transformers 高 24 倍,是生产环境部署大模型推理的首选方案,支持 OpenAI 兼容 API
- TensorRT-LLM
NVIDIA TensorRT-LLM 提供易用的 Python API 定义 LLM,支持最先进的推理优化,在 NVIDIA GPU 上实现极致推理性能