投机解码

别名:Speculative Decoding / 推测解码

用小模型先草拟多个 token,再让大模型一次并行验证,用接受率换取解码速度。

更新于 2026/11/08
推理解码加速

一句话定义

投机解码让一个便宜的草稿模型先猜出接下来若干个 token,再让目标大模型在一次前向里并行验证这些候选,接受其中一致的部分。

为什么解码慢

自回归生成每次只产出一个 token,而且每一步都要把全部历史送进模型。解码阶段往往受显存带宽限制,GPU 算力大量闲置。批处理能缓解,但延迟仍然随生成长度线性增长。

工作流程

  1. 草稿模型按自回归方式生成 γ 个候选 token。
  2. 目标模型把这 γ 个位置一次性并行计算,得到每个位置的分布。
  3. 按接受规则逐个比对:草稿 token 若符合目标分布就接受,否则从目标分布重新采样一个。
  4. 被接受的位置可以跳过后续重复计算,从而减少目标模型的前向次数。

草稿模型可以是独立的小模型,也可以是目标模型自身的浅层、额外预测头,或检索到的候选片段。

Draft Model

草稿模型负责快速猜多个 token;越小越快,但接受率越低。

Target Model

目标模型一次并行验证候选;它的分布决定接受规则和最终输出。

γ 是草稿长度的取舍:γ 越大,一次验证覆盖的跨度越大;但草稿质量差时,被拒绝的 token 也会浪费更多计算。

投机解码:草稿模型先猜,目标模型一次并行验证

收益与限制

  • 加速比取决于接受率和草稿成本;草稿太差会白算,草稿太贵会抵消收益。
  • 在采样规则正确时,输出分布与目标模型保持一致,不是用质量换速度。
  • 对高熵、多样化的文本,接受率通常较低;对结构化、可预测的文本更有效。
  • 需要额外显存放草稿模型,也要处理两套 KV Cache。

用在哪里

  • 长输出、代码和结构化文本等可预测性高的生成,接受率通常更高。
  • 已有小模型或能训练草稿头、且目标模型推理是瓶颈的场景。
  • 高熵、开放式创作,或草稿成本接近目标模型时,收益有限。

常见误区

  • 投机解码不是近似采样,正确实现不会改变目标分布。
  • 它优化的是解码阶段,对预填充阶段帮助有限。
  • 接受率高不等于端到端一定更快,验证和调度开销都要计入。

相关概念

  • KV Cache:草稿与目标模型都需要维护的缓存。
  • 量化:另一种降低单步成本的路线。
  • 上下文窗口:长输出场景下加速收益更明显。