Acceptance Is Not Speed: Length Inflation in Training-Free Lossy Speculative Decoding
Chiatzen Wang, Bill Xu, Haochen Gu, Hongyang Zhang
NAACL 2027
cs.CL
2026-10-17
五条免训练规则、十二对模型、六个基准共 360 格:最松设置下每轮接受数是无损的 1.34 倍,补全长度是 1.54 倍,验证轮数均值升到 1.10 倍。
投机解码把提议和验证拆开。草稿模型先写几个 token,目标模型一次前向打分,提交最长合格前缀。无损验证按目标分布原样接受,输出分布不变,补全多长也不变,每轮接受多少草稿 token 就能直接当成加速。
有损验证放宽接受条件,本会被拒的 token 也能留下。CACTUS、mentored decoding、fuzzy speculative decoding 和 speculative cascade 都是免训练规则,用松弛参数 α 换更高接受率,加速几乎都报成每轮接受数或每秒 token。分布一变,长度不再有保证。每轮多收 token,像收银扫得更快,购物车却变长。这个拉长叫做 length inflation。
一轮的骨架不动。草稿模型采样 6 个 token,目标模型一次前向打完这一块,再打后一个位置。有损规则替换三处分布:接受概率用 πrej,拒绝后重采样的残差用 πres,整块都接受时多出来的 bonus token 用 πbonus。α 在不同规则里是发散预算、阈值、推迟代价或混合权重,不能横比。对照对齐平均接受长度 ℓ̄。
五条规则分两族。CACTUS 与 mentored decoding 抬高草稿选中的 token,同时限制它离目标分布 p 有多远。fuzzy 规则和两条 cascade(speccascopt、speccasctok)是开关,位置检验通过就信草稿。speccasctok 在 α 为 0 时也会拒绝无损验证本会留下的 token。
记 λ 为有损补全长度除以无损长度。每轮提交 token 的倍数是两边 (ℓ̄+1) 之比,轮数比大约等于 λ 除以该倍数。接受涨得比 λ 慢,前向次数就上升。倍数封顶在 7 除以无损的每轮提交数。
四个目标是 GPT-OSS-20B、Qwen3-8B、Llama-3.1-8B-Instruct、DeepSeek-R1-Distill-Llama-8B。专用草稿头 EAGLE-1、EAGLE-3、P-EAGLE、DSpark 共 8 个,读目标隐藏状态。独立小模型是 Qwen3-0.6B、Qwen3-1.7B、Llama-3.2-1B-Instruct,只看 token。12 对、6 个基准、5 条规则,共 360 格。基准覆盖 GSM8K、AIME24、HumanEval、LiveCodeBench、MT-Bench、LongBench-v2。单张 H100 上的 vLLM 0.26.0,温度 1.0、top-p 1.0,每题每臂一次。主表取各规则最松的 α。
最松一档上,360 格的接受增益(每轮提交数 ℓ̄+1 之比)平均 1.34 倍,平均补全长度 1.54 倍,长度中位数只有 1.08。248 格变长。中位数更随规则和草稿变化:speccasctok 为 0.97,cactus 为 1.39;独立小模型 0.94,EAGLE 头 1.23。任务之间只从 GSM8K 的 1.04 到 HumanEval 的 1.14。
| 规则 | 平均 λ | 平均轮数比 |
| mentored decoding | 1.21 | 0.98 |
| cactus | 2.51 | 1.31 |
| speccascopt | 1.55 | 1.01 |
| rfuzzy | 1.46 | 1.31 |
| speccasctok | 0.96 | 0.86 |
| 五条合计 | 1.54 | 1.10 |
轮数比中位数 0.93、均值 1.10,跟 λ 的 Spearman 相关是 0.78,跟接受增益只有 -0.12。用测到的长度预测轮数,中位误差约 2%。主模型对的墙钟中位数比是 1.01,有 11 格少了轮次、没少时间。
300 个有评分格里 198 个至少掉 2 个点。cactus、speccascopt、rfuzzy 平均掉 0.19、0.14、0.21;mentored decoding 平均 0.03;speccasctok 平均 0.005,接受增益也只有 1.11 倍。λ 区间高于 1 的 144 格平均掉 0.21,另外 156 格平均掉 0.03。代码上更重,HumanEval 与 LiveCodeBench 的中位掉点为 0.09 和 0.11。
EAGLE 头配三条激进规则,105 个有评分格里 40 个轮数更少,其中 35 个掉点。cactus 把 R1-Distill-Llama-8B 在 LiveCodeBench 上的轮数打到 0.44 倍,准确率从 0.58 掉到 0.02;Qwen3-8B 在 AIME24 上轮数 0.55 倍,准确率从 0.70 掉到 0.23。主模型对上,准确率留在无损两个点以内时,轮数比中位数是 0.96。
草稿比目标更能决定胀幅。Llama-3.1-8B-Instruct 配 EAGLE-3 平均 3.30 倍,配 Llama-3.2-1B 为 1.10 倍;Qwen3-8B 配 EAGLE-3 为 1.18 倍,配 Qwen3-1.7B 为 0.90 倍。EAGLE 头的格子里,λ 区间高于 1 的有 132/210。Llama 配 EAGLE 时,无损答案已有 280 到 4840 个 token,cactus 再乘 4.0 到 13.2。贴着目标的独立 Qwen3 几乎不胀,轮数少 10% 到 46%;DSpark 和 P-EAGLE 的有评分格分别掉 18/25、24/25。
多出的字进了推理痕迹。GPT-OSS-20B 的 analysis 通道,在 25/30 格里至少吃掉新增字符的 92%;Qwen3-8B 的中位数有 90% 以上落在 think 块里。Llama-3.1-8B-Instruct 没有思考痕迹,拉长的是答案本身。只有有损规则会接受的草稿 token 占 7% 到 24%,目标概率中位数 0.01 到 0.09,两边都接受的则是 0.78 到 0.93。无损解码把温度升到 1.5,GSM8K 胀到 3.9 倍,准确率 0.31。
七对做了对齐的模型上,最温和档 λ 中位数 1.07,最松档 1.22,比无损更费轮次的格子是 97 对 94。Qwen3-8B 在温度 0.6 下,speccascopt 仍把 GSM8K 和 LiveCodeBench 胀到 1.5 倍,mentored decoding、cactus、speccasctok 这两项上不再胀。
强制在预算附近合上思考痕迹后,1132 次运行的答对次数从 126 增到 439:335 次由错变对,22 次由对变错。GSM8K 上新增 token 有 50%(GPT-OSS-20B)和 82%(Qwen3-8B)出现在参考答案写出之后。AIME24 上 GPT-OSS-20B 写到答案的中位位置从 1721 推到 3865 个 token,新增 token 至少 59% 排在答案前。
EAGLE 草稿头已经进了 vLLM、SGLang 和 TensorRT-LLM。评测若只报每轮接受数,有损规则会显得更快。这里平均长度倍数 1.54 已经高于平均接受增益 1.34,轮数均值升到 1.10。接受数不能再代替速度,长度和轮数得一起报。
speccasctok 放松得最少,也是平均准确率最接近无损的一条,轮数约为无损的 0.86 倍。分布贴近目标的独立 Qwen3 草稿能把轮数削掉一截,掉点更少。能用的方向是挑选哪些草稿 token 可以留下。
五条规则到不了同一个 ℓ̄,主表是各自最松的 α,每条只测了四个值。有损运行更常撞上预算,测到的长度偏短,膨胀被低估。GSM8K 的 2048 token 对 Qwen3-8B 偏紧,无损运行已有 25% 撞线,一部分掉点是答案没写完。每题每臂只采样一次,AIME24 只有 30 题。时间只在主模型对、batch size 为 1 时测过。MT-Bench 是一个 judge 的第一轮分数。
这些规则是 vLLM 拒绝采样器里的重写,只在退回严格验证时对过公式,没有对原作者代码。有的模型对只改了接受检验。有损臂的块长固定为 6。目标自己几乎不采样的 token 为什么会把推理拉长,论文没有解释。
胀得最厉害的是没有思考痕迹的 Llama-3.1-8B-Instruct,多出来的是答案正文。强制收束救回的对题集中在 Qwen3-8B,AIME24 上很少。