一句话定义
投机解码让一个便宜的草稿模型先猜出接下来若干个 token,再让目标大模型在一次前向里并行验证这些候选,接受其中一致的部分。
为什么解码慢
自回归生成每次只产出一个 token,而且每一步都要把全部历史送进模型。解码阶段往往受显存带宽限制,GPU 算力大量闲置。批处理能缓解,但延迟仍然随生成长度线性增长。
工作流程
- 草稿模型按自回归方式生成 γ 个候选 token。
- 目标模型把这 γ 个位置一次性并行计算,得到每个位置的分布。
- 按接受规则逐个比对:草稿 token 若符合目标分布就接受,否则从目标分布重新采样一个。
- 被接受的位置可以跳过后续重复计算,从而减少目标模型的前向次数。
草稿模型可以是独立的小模型,也可以是目标模型自身的浅层、额外预测头,或检索到的候选片段。
Draft Model
草稿模型负责快速猜多个 token;越小越快,但接受率越低。
Target Model
目标模型一次并行验证候选;它的分布决定接受规则和最终输出。
γ 是草稿长度的取舍:γ 越大,一次验证覆盖的跨度越大;但草稿质量差时,被拒绝的 token 也会浪费更多计算。
收益与限制
- 加速比取决于接受率和草稿成本;草稿太差会白算,草稿太贵会抵消收益。
- 在采样规则正确时,输出分布与目标模型保持一致,不是用质量换速度。
- 对高熵、多样化的文本,接受率通常较低;对结构化、可预测的文本更有效。
- 需要额外显存放草稿模型,也要处理两套 KV Cache。
用在哪里
- 长输出、代码和结构化文本等可预测性高的生成,接受率通常更高。
- 已有小模型或能训练草稿头、且目标模型推理是瓶颈的场景。
- 高熵、开放式创作,或草稿成本接近目标模型时,收益有限。
常见误区
- 投机解码不是近似采样,正确实现不会改变目标分布。
- 它优化的是解码阶段,对预填充阶段帮助有限。
- 接受率高不等于端到端一定更快,验证和调度开销都要计入。