投机解码
论文: Fast Inference from Transformers via Speculative Decoding — ICML 2023
Speculative Decoding 用小模型串行生成草稿,再由大模型一次并行验证多个 Token。它以额外计算换取更低延迟,并通过拒绝采样保证输出分布与 Target Model 完全一致。
1. 执行流程
设 Target Model 的分布为
- Draft:小模型自回归采样
个候选 Token,并保存各位置的 。 - Verify:大模型利用 Causal Mask,一次 Forward 得到
个位置的分布 。 - Accept:从左到右验证候选;遇到第一个拒绝位置便停止。
- Resample:拒绝时从修正分布采样一个 Token;若全部接受,则从
额外采样一个 Token。

因此每轮至少产出 1 个 Token,最多产出
Draft Model: x₁ → x₂ → ... → xγ 串行生成草稿
Target Model:[x₁, x₂, ..., xγ] 一次并行验证
输出: 接受的前缀 + 1 个新采样 Token加速来自 Target Model 的并行验证,而不是 Draft 阶段;Draft Model 必须足够快,候选也必须足够准。
2. 分布等价性
把 Target Model 的分布
候选
这一步只保留
整轮发生拒绝的概率为
拒绝后,只从 Target 尚缺少的概率质量中采样:
当
因此
| 条件 | 接受路径 | 修正路径 | 最终概率 |
|---|---|---|---|
上式证明单个位置的输出服从
3. 加速条件
令
再令 Target Model 单步耗时为
性能由三个因素共同决定:
- 接受率
:Draft 越接近 Target,每轮接受的 Token 越多。 - 相对成本
:Draft 越轻,投机开销越低。 - 窗口
:窗口过短浪费并行能力,过长则增加无效 Draft 与验证计算。
当