投机解码(speculative decoding)是目前大模型推理提速的主流路线之一:小 drafter 先猜一批 token,目标模型一次性并行验证,猜中的直接采纳。但决定整体加速的不只是 drafter 猜得多快,更关键的是接受长度(acceptance length)——每轮验证能留下几个 token。监督微调在固定响应上训练 drafter,容易撞上接受长度平台期;在线蒸馏(on-policy distillation,OPD)把训练挪到 drafter 自己采样的块上、保留逐 token 的目标监督,被证明能推过平台期。麻烦在于,传统 OPD 管线要靠「drafter 提案、目标验证、接受前缀决定下一轮起点」的串行循环收集监督信号,rollout 与训练交替执行,论文实测收集阶段 GPU 利用率明显偏低。

arXiv 11 月 2 日提交的 SpecOPD(arXiv:2611.02846,15 位作者,Hugging Face 论文页挂着 Qwen 组织标识)问了一个更根本的问题:在线监督凭什么必须继承这套串行依赖?他们的结论是——不必。监督一个 draft block 只需要参考前缀加上它自己采样的历史,不需要等一条完整响应被逐轮验证完。

把 rollout 拆成一棵提案树

SpecOPD 把参考序列当共享主干,在主干上随机取一组锚点,让当前 drafter 在每个锚点后并行采样独立分支,再把分支打包成提案树:主干只 prefill 一次,全部分支共享前缀计算,由目标模型并行打分。工程难点在分支历史不能互相污染,论文按注意力类型给出三套方案:GQA 全注意力用树形掩码;QSA 稀疏注意力用分支一致的 indexer 组;GDN 线性注意力的递归状态没法靠掩码隔离,改用索引状态回放。训练目标上,E2E-TV 替代损失直接把优化对准接受长度本身。

三个数字,一张评测矩阵

论文报告:平均接受长度最高提升 41.45%;相对串行 rollout OPD,监督 token 吞吐 16.09 倍;相对自回归解码,生成加速最高 3.56 倍。评测矩阵铺得够开:目标模型覆盖 Qwen3-8B(GQA)、Qwen3.8-27B(GQA-GDN 全线性)、Qwen3.8-Flash-Next-125B(QSA-GDN 稀疏线性)三档;drafter 有 DFlash、DSpark、DFlash V2 三种并行架构;任务覆盖对话、编码、数学、agentic 四域。

冷静看的部分

两点先按住。其一,16.09 倍是训练侧「监督 token 吞吐」口径,不是端到端训练时间,更不是推理加速;3.56 倍也是「最高」值而非平均。其二,作者在 Hugging Face 社区帖说明:首发仓库只含项目概览与图表,训练代码、评测脚本、模型权重都不在首发版本里,Hugging Face 上也暂无模型关联这篇论文——论文先行、工件在路上,复现要等后续。

对做推理服务的人,这篇的价值不在数字,而在视角:当并行 drafter 架构收敛成少数几条主流路线,瓶颈已经从「设计更好的 drafter」挪到「更快地训练 drafter」,训练吞吐本身成了系统能力。下次看到厂商宣传推理提速,值得先问一句:他们的 drafter,多久重训一次?

参考:arXiv:2611.02846 · Hugging Face 论文页