给大模型「投机解码」松绑:免训练,即插即用近似验证,速度再提15%
新智元 · 人工智能
新智元 2026-09-05 07:58 湖南 新智元报道 大语言模型「逐字蹦」式的自回归生成,是推理慢、成本高的核心瓶颈。 投机解码 (Speculative Decoding)让一个轻量「草稿模型」先猜好一整块字、再由大模型一次并行「批改」,是近年最主流的免费提速思路之一,已被vLLM等主流框架广泛采用。 但它有一条「严格」的批改规则: 草稿只要在第一个字上和大模型的最优选择不一致,验证立即停止,后面的草稿全部作废, 哪怕大模型其实已经把这一整段都批改完了。 北京航空航天大学、清华大学、香港大学、北京大学联合团队提出的 近似投机解码(Approximate Speculative Decoding,ASD) ,给这条规则「松了绑」:在严格可控的预算内,有选择地接受极少数「大模型本来也几乎想选」的分歧字,并把后面仍然正确、且已经算好的内容 捡回来接着用 。 论文链接: https://arxiv.org/abs/2608.03447 开源代码: http s://github.com/Kissmetothemoon/ASD 几个关键数字: 在Qwen3-14B + DSpark-14B的 7 个任务 上,固定负载吞吐平均提升 7.78% (区间 3.64%–11.73% ),平均每轮接受token 数从 3.85 提升到 4.20; 在DSpark / EAGLE3 / Medusa三种草稿框架、共 10组 设置中全部取得正增益( 3.05%–15.26% ,平均 7.52% ), 最高提速15.26% ; 在 284B参数 的超大模型DeepSeek-V4-Flash上(8 张 H20 GPU),验证端接受率提升约 10%–16% ; 验证器新增逻辑每个输出token仅 0.045–0.083毫秒 ,且 无需训练、无需微调、无需额外跑一次大模型 ;预算设为零时,严格退回标准投机解码; 更关键的是,ASD是一个 即插即用的验证器模块 :不改动草稿模型与原有流程,在 DSpark、EAGLE3、Medusa等多种主流投机解码 算法 上均实现了正向提速。 研究背景 大语言模型是逐字(token)自回归生成的:每输出一个字,都要把动辄数百、上千亿参数的大模型完整跑一遍。生成一篇上千字的回答,意味着成百上千次串行的大模型前向计算。 投机解码的做法是:让一个轻量的「草稿模型」(drafter)一次性猜好后面的几个字,再由大模型(target)在一次前向中并行「批改」。猜对的字直接采纳,猜错的位置则丢弃草稿、由大模型重新生成。在严格的理论保证下,这种方法可以做到与大模型单独生成完全一致的输出,因此被广泛采用。 但传统的「批改规则」存在一个固有浪费。标准贪心验证采用二元判断:草稿只要在第一个字上与大模型的最优选择(argmax)不一致,验证就立即停止,后面的草稿全部作废。 这就像老师批改一份听写:学生第一个字写错了,老师却把 后面已经批过、而且批对了的内容也一并撕掉 ,让学生重写。规则虽然「严格」,却浪费了已经完成的批改工作。 可问题在于,在这一轮并行验证中,大模型其实已经把这一整段草稿每个位置的分数(logits)都算出来了。这些已经付出的计算,随着第一个分歧的出现被白白丢弃。 更微妙的是:大模型给后面位置打分时,本就是「假设前面草稿都成立」来逐行计算的。也就是说, 如果我们愿意接受前面那一处小分歧,后面紧跟着的一长串字,很可能恰好仍是大模型的最优选择: 它们本来就已经被算对了。 token不一致 不等于任务失败 研究团队注意到一个常被忽视的事实:草稿与大模型在某个字上「不一致」,并不等于最终答案出错。 论文举了很直观的例子:同一个数学结果,可以写成 1776 、 1,776 或带方框的 \boxed{1776} ; 37×48 与 48×37 交换了顺序;推理中「因为……所以……」换成「由于……因此……」, 字面上明明不一样,最终答案却完全相同 。也就是说,token 级别的分歧只是任务质量的一个「不完美代理信号」,而非错误本身。 当然,团队也特别强调:接受一个非贪心的字会改变解码轨迹,这 并非无损优化 。真正的难题不是「无视分歧」,而是 如何在允许极少数分歧的同时,把它们的「累计代价」控制在整个请求范围内,不让近似误差随着输出变长而悄悄累积? 单纯地在每一块草稿里各自放宽,会让偏差在多轮解码中反复叠加;而每块都重置「容错额度」,又无法对同一段生成中已经引入的偏差负责。这正是 ASD 要解决的问题。 研究方法 ASD 的核心思想是:与其在第一个分歧处「一刀切」,不如在严格可控的预算内,有选择地接受极少数「大模型本来也几乎想选」的分歧字,随后直接复用其后仍与大模型贪心选择一致的连续后缀,这部分字无需再做任何近似决策,也无需额外跑一次大模