Approximate Speculative Decoding
Yuannuo Feng, Zegang Peng, Yuxin Xie, Yubing Ye, Yizhe Chen, Wenshuai Yao, Wenyong Zhou, Wang Kang
cs.LG, cs.AI
2026-08-04
免训练ASD预算内接受错token并复用已打分后缀。相对严格投机解码平均快7.78%,最高15.26%,轨迹会变。
投机解码用小草稿模型一次提出一串 token,目标大模型并行打分验证。标准贪心验证碰到第一个跟目标 argmax 对不上的位置就停,后面已经算过 logits 的后缀整段丢掉。差一点就打平的 token,和明显被目标模型讨厌的 token,处理方式完全一样。
丢掉的后缀经常不是废计算。验证这一轮是 teacher-forcing:后面每一行的 logits 已经按草稿前缀条件算完了。如果那个错 token 被接受,后续若干草稿 token 在新前缀下可能本来就是目标模型的贪心选择,可以白捡,不必再跑一轮大模型。
接受错 token 会改解码轨迹,不能当无损加速。纯局部规则会在长回复里把一次次小偏差叠起来;每块草稿单独重置额度,又会忘掉前面已经花掉的例外。要解决的是:允许少量显式例外,同时把整次请求的累计后悔管住。
ASD(Approximate Speculative Decoding)是免训练验证器,插在普通目标验证之后。请求级后悔预算 B 为 0 时,它直接退回标准 token-ID 贪心验证,连并列第一的平局也不额外放行。
每个位置的局部后悔,是目标模型给自己 argmax 的 logit 减去给草稿 token 的 logit。softmax 归一化项消掉之后,这个量等于条件对数概率差。它是记账数字,不是校准过的错误概率,更不保证下游任务对不对。
一个候选前缀要同时过三道门:
取最长连续可行前缀。不能跳过中间不可行的 token 去收后面的,否则验证时用的目标模型行,和真正写入 KV cache 的历史会对不上。例外被接受之后,后续已经等于目标 argmax 的连续后缀直接提交:不再花后悔,也不再跑目标模型。验证器本身只多 O(K) 算术和临时存储。
主结果冻结的配置是 B=8、g=0.25、M=2。超参在不相交的 GSM8K 切片上选定,再冻住评其他任务。
主表是 Qwen3-14B + DSpark-14B,单卡 NVIDIA L20,贪心解码。相对配套的严格投机解码,固定工作量吞吐七项全涨,平均 7.78%。七项平均接受长度从 3.85 提到 4.20 token/轮。MATH-500 和 GSM8K 最明显,接受长度分别多 0.67 和 0.49。
| 任务 | 严格 SD 相对纯解码 | ASD | 相对严格 | ΔAcc(百分点) |
| GSM8K | 5.58× | 6.30× | +10.08% | +0.15 |
| MATH-500 | 6.88× | 7.32× | +11.73% | +1.17 |
| HumanEval | 4.68× | 5.14× | +6.90% | −0.61 |
| MBPP | 5.04× | 5.36× | +3.64% | +0.54 |
| MMLU | 3.30× | 3.54× | +4.41% | +0.73 |
| MT-Bench | 4.68× | 5.16× | +7.79% | −0.64 |
| Alpaca | 4.22× | 4.66× | +9.94% | +0.10 |
跨 DSpark、EAGLE3、Medusa 十个格子全部为正,均值 7.52%。最大一格是 Llama-3.1-8B + EAGLE3 的 GSM8K,+15.26%;同组合 MMLU +11.94%。Medusa 基线接受本来就短,增益也小:GSM8K +6.72%,MMLU +4.70%。报告的 95% 置信区间都严格大于 0。严格 SD 相对纯目标模型已经是 1.82×–6.88×,ASD 把区间抬到 1.94×–7.32×。
同一最大已实现后悔约束下,ASD 在 GSM8K 上 +6.5%,对标的 MARS 风格 +5.3%、Fuzzy 风格 +5.1%;MATH-500 上分别是 +9.7%、+6.0%、+7.3%。同步剖析里,验证逻辑每输出 token 只多 0.045–0.083 ms,目标验证时间少约 1.48–1.51 ms。增益来自少跑昂贵的验证轮次。
DeepSeek-V4-Flash 配 DSpark 在八张 H20 上只报接受率。草稿走 FP4,Hopper 卡原生 FP8,中间多了量化来回,所以没有端到端 TPS。独立 1000 条 GSM8K-Confirm 上,g 取 2 或 3,每轮接受草稿数提高 10.08%–11.48%,准确率变动不超过 0.30 个百分点。摘要把 GSM8K 和 MATH-500 的接受增益写成大约 10%–16%。
对已经上了投机解码、还在用贪心验证的推理栈,这是验证侧的即插即用改动:不换草稿、不微调、不额外前向。数字叠在已经很快的严格 SD 上,不是从裸解码算起。
它卖的是受控的速度-行为权衡。GSM8K 和 MATH-500 上输出哈希分歧超过 95%,准确率却没掉,说明换了推理路径,终局答案经常还能对上。部署口径写得很清楚:在不相交数据上冻超参,再按目标模型、草稿和负载做 natural-EOS 质量审计。
对 token 级轨迹不敏感、对吞吐敏感的批推理,值得试。要逐 token 复现目标贪心轨迹的场景,把 B 设成 0 即可退回严格验证。
账本只约束已接受例外的局部后悔之和,不是全序列似然比界。论文写明:它不保证输出相同、分布相同、语义保留、安全或任务正确。
准确率方向远没有吞吐稳定。七项里 HumanEval −0.61、MT-Bench −0.64;跨家族最差是 Medusa + Llama-3.1-8B 的 GSM8K,−1.52 个百分点。超参在 GSM8K 切片上搜完再冻,铺到其他任务时存在向 GSM8K 对齐的风险。Table 3 里 B=4 时 GSM8K 准确率 −0.78 个百分点,B=8 变成 +2.34,质量对预算敏感,而且这些 ΔAcc 来自 natural-EOS,和固定工作量吞吐不是同一套协议。
大模型实验因精度兼容路径只报接受、不报端到端 TPS,这个规模上系统收益还没有直接数字。全部主实验是贪心解码,采样式 speculative sampling 的拒绝采样校正没有覆盖。Table 1 和 Table 2 把同一格 Qwen3-14B MMLU 的 ΔAcc 分别写成 0.73 和 0.22,正文没有解释。