← 返回 PaperDaily
大模型与智能体
百度等揭示投机解码"有损加速"陷阱:任务越难,质量掉得越狠!
大模型推理加速是刚需,但"放水"换速度的代价到底是什么?这篇来自百度等团队的工作把有损验证方法扒了个底朝天,用严谨实验揭示了一个反直觉结论:任务越难,截断式验证的质量掉得越狠。看完这篇,再也不敢随便用"有损加速"了。
龙哥读论文
阅读 3
查看原文
原论文信息如下:
大模型跑得慢,这是所有AI从业者的心病。为了治这个病,投机解码(Speculative Decoding)应运而生:让一个轻量级的小模型先"打草稿",再让大模型"批改作业",一次性验证多个token,从而省下大量推理时间。这个思路最初的设计是严格保证输出分布与大模型一致,也就是所谓的"无损"加速。但无损有上限,于是后续工作开始"放水"——引入有损验证机制,牺牲少量质量换取更快的速度。
听起来很合理对不对?但问题是,"少量质量损失"到底是多少?没人认真核算过。百度、浙江大学等机构的研究者发现,很多有损验证方法声称的加速效果,很大一部分其实是"截断采样"本身的功劳,而非验证机制本身的贡献。更扎心的是,这些方法在困难任务上的质量下降幅度,远比论文里报的数字要严重得多。
这篇论文从机制层面把现有的有损验证方法梳理成两大类,并指出了各自的关键问题和设计原则。如果你正在做大模型推理加速、或者在使用投机解码相关的开源框架,这篇文章值得仔细看一遍。
引言:投机解码加速的"免费午餐"为何失效?
投机解码的基本思想可以用一个形象的比喻来理解:让实习生(草稿模型)先写一版方案,老板(目标模型)快速审阅一遍,如果方案没问题就整段采纳,如果有问题就只改有问题的部分。理想情况下,老板只需要看一眼整份方案,而不需要逐字逐句重写,这就大大提升了工作效率。
无损投机解码的"验收标准"是非常严格的:老板必须保证最终输出的质量和自己亲自逐字写完全一致。这个约束保证了输出质量,但也限制了加速的上限。为了突破这个上限,研究者开始尝试放宽验收标准——允许老板对实习生的方案"睁一只眼闭一只眼",只要整体方向没问题就放行,这就是有损验证的由来。
但问题在于,"睁一只眼闭一只眼"会让老板的决策风格悄悄改变。原本老板有自己的判断标准,现在被实习生的思路带偏了,输出的分布不再是老板原本的分布。这种"偏航"在不同任务上的影响天差地别:简单任务上可能完全看不出来,但在困难任务上可能酿成大错。
图1:无损基线与截断式验证之间的准确率差距随任务难度加宽,从GSM8K上的+0.38个百分点扩大到AIME上的+6.67个百分点
上图展示了本文最核心的一个发现:以SpecCascade为代表的截断式验证方法,在容易任务GSM8K上与真正的基线(使用min-p采样的目标模型)差距只有0.38个百分点,几乎看不出来;但在困难的AIME任务上,差距暴增到6.67个百分点。而对比"错误基线"(没有使用min-p采样的目标模型),SpecCascade甚至表现得更好——这就解释了为什么之前的一些工作会得出误导性的结论。
方法概述:两类有损验证机制的统一视图
论文最关键的贡献之一,是把散落在各文献里的有损验证方法做了一次"物种分类"。乍看之下,Medusa的典型接受、SpecCascade、lenience-based relaxation、CoS等方法差异巨大,但论文从机制层面揭示了它们的本质:所有方法要么属于截断式验证,要么属于协作式验证,没有第三种。
这个分类的妙处在于,它让不同方法之间的比较变得公平了。以前每个方法都宣称自己比无损基线快多少,但用的评测基准、超参数、基线配置各不相同,根本无法放在一起比。现在归好类之后,每一类内部的机制共性浮出水面,真正的优劣势也就一目了然。
图2:协作式和截断式方法诱导的分布对比。(a) CoS、(b) Lenience、(c) 截断验证、(d) 截断采样;token按目标概率降序排列,展示了不同机制下生成分布的差异
从上面的分布对比图可以直观看出两类方法的本质区别。协作式验证(CoS和Lenience)生成的是目标分布和草稿分布的某种混合,区别在于混合方式不同:CoS是均匀混合,Lenience则是自适应的——在草稿概率低于目标概率时应用插值,在中等过冲区域保持草稿不变,只有在严重过冲时才进行封顶修正。而截断式验证(SpecCascade和典型接受)生成的则是被截断集合重新归一化后的草稿分布——集合内的草稿token照单全收,集合外的一律丢弃且不重新采样。
核心设计:截断式验证的隐藏陷阱与协作式验证的过冲原则
截断式验证的定义非常简洁:草稿token在截断集合内就接受,在集合外就拒绝且不做任何补偿。用公式表达就是:h(x)=1[x∈AΘ],即接受概率为1或0的硬门控。SpecCascade用的min-p采样定义允许集合,Medusa的典型接受则基于η-sampling定义允许集合,两者本质相同。
论文指出的关键问题在于:这些方法在评测时,拿来做对比的基线是"标准SD"(即严格匹配目标分布的传统投机解码),而不是"截断采样+推理验证"这个真正公平的基线。由于截断采样本身就会改变目标模型的输出分布(在这类方法中被证明能提升性能),所以截断式验证的"增益"实际上有一部分来自截断采样本身,而非验证机制。
协作式验证的思路与截断式完全不同,它的做法是把草稿分布和目标分布做混合。CoS是固定系数混合,lenience-based relaxation则是自适应混合。论文通过巧妙的消融实验,将lenience机制中的自适应插值和过冲封顶拆开来看,结果令人意外:真正起作用的是过冲封顶,而不是自适应插值。
这个发现的价值在于指出了一个设计原则:在做协作式验证时,不需要均匀地混合草稿和目标分布,只需要针对那些草稿概率严重超过目标概率的token进行压制,就能保持生成质量。其它区域可以放心大胆地交给草稿模型——因为那里草稿模型的判断大概率是靠谱的。
表格1:在MBPP+上对lenience-based relaxation中两种机制的消融实验。仅使用过冲封顶即可在保持任务性能(75.93%)的同时获得较高块效率(5.59),而自适应插值则带来严重的效率-质量权衡(λ=0.2时准确率仅50.26%)
上面的消融结果非常直观:仅保留过冲封顶(去掉自适应插值,使用固定插值替代),在λ=0.2时MBPP+上的Pass@1高达75.93%,几乎和无损基线持平;而仅保留自适应插值(去掉过冲封顶),同参数下的准确率直接崩到50.26%。这个对比结果让论文的结论站得非常稳:过冲token是低质量生成的主要来源,控制过冲远比均匀插值重要。
核心原理推导:从接受概率到分布失真的数学刻画
为了更好地理解截断式验证为什么会出现性能陷阱,论文从理论上推导了截断采样对投机解码效率的影响。核心公式如下:
引理1(截断采样的效率效应):截断采样对单token接受概率的改变可以分解为一个非负增益项(在保留的支持集A上累积)和一个损失项(在丢弃的尾部累积)。ΔBE的符号决定了截断采样对投机解码效率是帮助还是伤害。
这个分解的意义在于:min-p采样在pbase较小时增益占优,但当pbase接近0.9时,被丢弃的质量开始超过重新分配的增益,效率增益逐渐消失甚至转为负值;而η-sampling在所有测试的分布对和ε取值下都保持ΔBE>0,效率增益稳步上升。这解释了为什么图5中min-p采样的块效率曲线先升后降,而η-sampling则持续上升。
图4:不同草稿-目标对齐比例下Min-p和η采样的净变化ΔBE。每个三元组分别报告匹配、部分重叠和不相关候选token的比例
进一步地,论文还推导了截断式验证与截断采样基线之间的KL散度。在标准SD下,随着草稿模型逼近目标模型,KL散度趋近于0;但在EAGLE-3的树形验证下,KL散度即使草稿完全等于目标也不会消失,而是恒大于0。这个理论预测非常关键,它意味着EAGLE-3这类多草稿树验证框架会系统性放大截断式验证的分布失真。
为什么会这样?直觉上理解:标准SD中,每个token位置只有单一草稿候选,被拒绝后会从残差分布中重新采样,这种重采样机制在一定程度上"纠偏"了草稿的偏差;而EAGLE-3的树形验证中,多个草稿token构成一棵树,验证时如果集合内存在可接受token就必然接受,且被拒绝后从截断目标分布中采样补充token,缺少了对草稿偏差的纠正机制。草稿模型越好,树中就有越多token落在允许集合内,被"照单全收"的比例越高,分布失真反而越严重。
数据准备及实验设计:四基准框架揭示真实权衡
论文的评测设计本身就是一个值得借鉴的框架。研究团队选择了四个先抛一个很反直觉的结论:论文对当前主流的有损验证方法做了一次系统性的“体检”,结果发现不少方法宣称的加速收益,实际上是“配方不同导致的假象”。如果严格用匹配的截断采样作为基线来评测,截断式验证(truncation-based verification)在大多数基准上的准确率,反而低于基线模型本身。更耐人寻味的是,任务难度越高,这种质量损失越明显——GSM8K上只有0.38个百分点的差距,到了AIME上直接飙到6.67个百分点。换句话说,那些看起来很美的“有损加速”,很可能只是在简单任务上自欺欺人。
这篇来自百度、浙江大学等团队的工作,把散落在各种论文里的有损验证方法一次性梳理清楚,并给出了两个关键发现:第一,截断式验证存在一个被普遍忽略的公平性陷阱;第二,协作式验证真正起效的机制不是“均匀混合”,而是“对过冲token的封顶控制”。这两个发现直接改变了行业对这类方法的认知。
两类有损验证机制的统一视图:从表象差异到本质分类
要理解这篇论文的贡献,得先建立一个概念框架:有损验证到底“损”在哪里?传统投机解码里,草稿模型提出的token要被目标模型验证,验证通过的标准是“草稿分布与目标分布完全一致”。这听起来严格,但也限制了加速空间。有损验证的思路就是把这个标准放宽——“差不多就行”。但“差不多”的方式五花八门,论文发现,本质上只有两大类:截断式验证和协作式验证。
先介绍第一类:截断式验证(Truncation-based Verification)。它的运作逻辑非常简单:用截断采样(Truncation Sampling)定一个“允许集合”A_Θ,草稿token落在这个集合里就无条件接受,落在集合外就拒绝且不做任何重新采样。形式化地说,接受概率h(x)=1[x∈A_Θ],是一个硬门控。这里提到的截断采样包括两种常见策略:min-p采样和η-sampling,它们分别用动态阈值和熵相关阈值来划定允许集合。之前提出的Medusa典型接受(Typical Acceptance)和SpecCascade,本质上就是这种机制——它们只是“换了个皮”的截断式验证。
再来看第二类:协作式验证(Collaborative Verification)。这类方法不再用目标分布p作为验证基准,而是把草稿分布q和目标分布p做一个凸组合,得到一个新分布。CoS(Collaborative Decoding via Speculation,一种基于协作解码的投机加速方法)在这个组合里使用固定插值系数λ;而lenience-based relaxation则用自适应插值系数,只对部分区域做插值。论文的一个重要洞察是:这两类看似差异很大的方法,背后的机制高度统一——都是对“验证的参考分布”动刀子,只是一个动得简单粗暴,一个动得精细巧妙。
这个统一分类的价值,在于它让“公平对比”成为可能。以前每个方法都在自定义的评测环境里宣称自己SOTA,显得花团锦簇;现在论文把所有方法放进同一个框架里,放在同样的基线下、同样的基准上对比,谁在裸泳一目了然。
截断式验证的隐藏陷阱:基线选择如何影响公平评测
截断式验证的问题出在哪里?论文用一句话点破:它的“成功”很大程度是吃了基线的亏。之前的工作大多拿默认解码配置(不截断)的SD作为对比对象。可问题是,截断采样本身就会改变生成分布,通常会过滤掉低概率噪声token,起到提升生成质量的作用。你把截断的效果和验证机制的效果混在一起算账,自然显得新方法“又快又好”。
论文给出的正确做法是:把基线换成“同样使用截断采样策略的目标模型 + 无损验证”。这样,验证机制的贡献和截断采样的贡献就被干净地分开了。表格2展示了这个公平对比下的完整结果,使用的模型对是Qwen2.5-72B作为目标模型、Qwen2.5-0.5B作为草稿模型。
表格2:标准投机解码下的评估结果(Qwen2.5-72B + Qwen2.5-0.5B)。每种验证方法只与匹配的截断采样基线比较(使用相同的允许集合),加粗为匹配对中更好的任务性能。
从表格2可以读出很多有意思的信息。以MATH基准为例,min-p采样基线准确率是76.51%,而作为截断式验证代表的SpecCascade只有75.63%,直接低了近1个百分点。INCLUDE基准上差距更大:67.79%对66.82%。典型接受(Typical Acceptance)相对η-sampling基线也全面落后。虽然在个别基准上(比如SpecCascade在BFCL上)截断式验证略占优势,但整体平均下来,SpecCascade比匹配基线低了0.38个百分点,典型接受低了0.32个百分点。这些数字意味着:一旦用公平基线来对比,截断式验证所谓的“超越SD”优势就消失了,它们真正的贡献只剩下微弱的效率提升。
更彻底的“揭底”来自效率层面的理论分析。论文的引理1把截断采样对块效率(Block Efficiency,即单次验证接受token的数量)的影响分解成一个非负增益项和一个损失项:增益来自保留集合内概率质量的重分配,损失来自被截断尾部原本可以匹配接受的部分。模拟和实测都显示,min-p采样在pbase较小时增益占优,但当pbase接近0.9时,损失反超、效率增益消失;而η-sampling的策略则稳定地在所有测试范围内提供正的效率收益。图5的块效率曲线如实呈现了这一差异。
图5:截断式方法在不同超参数设置下的块效率。上行是min-p采样和SpecCascade随pbase的变化,下行是η-sampling和典型接受随ε的变化,虚线表示无损SD基线。
这给工程团队的启示很直接:当有人把“截断采样+验证”包装成新方法时,一定要先问一句——它的基线到底是默认解码,还是同样使用了截断采样的无损验证?如果是前者,那这杯“免费午餐”就掺了水。
过冲截断:协作式验证中保持质量的关键开关
如果截断式验证是“雷区”,那协作式验证是不是就没有坑了?论文的回答是:协作式验证有希望,但必须找准“开关”。为了弄清楚这个开关到底长什么样,论文先对lenience-based relaxation做了机制拆解。lenience规则把验证空间分成三个区域:当草稿概率低于目标概率(欠冲区域)时,执行自适应插值;当草稿概率中等程度超过目标概率(过冲区域)时,直接放行;只有当草稿概率严重超过目标概率(严重过冲区域)时,才用天花板p/ℓ进行封顶修正。
直觉上,那个“自适应插值”看起来最精巧,最值得保留。但论文用消融实验给出了反直觉的答案:真正保住生成质量的关键,是过冲封顶,不是自适应插值。在前文的表格1(MBPP+,Pass@1)中,单独保留过冲封顶时,准确率能达到75.93%,与无损SD基线几乎持平;而单独保留自适应插值时,准确率直接掉到50.26%,几乎是“灾难级”退化。这个对比足够震憾:协作式验证真正的“灵魂”在于抑制草稿模型过度自信的token。
图3:协作式验证在MATH、MBPP+、INCLUDE、BFCL四个基准上的效率-任务性能权衡。星形虚线代表无损SD基线,彩色曲线为方法在参数扫描下的表现轨迹。
图3把lenience和CoS的差距展示得很透彻。lenience机制在四个基准上,精度都紧贴无损SD基线,块效率还能稳定高于基线;而CoS则画出了一条条向下滑落的圆弧——随着λ减小(越依赖草稿),精度一路走低,有些点的下降幅度超过15个百分点。这个对比说明:均匀插值不是好的妥协方案,它会让草稿模型把过多的“性格”注入输出;真正高效的方式是只在少数过冲token上下手,其他区域放草稿自由发挥。
EAGLE-3场景下的风险放大效应:树验证为何加剧失真
前文的讨论还停留在单草稿序列的标准SD框架下。但当前业界更流行的加速方案,已经从“单序列验证”进化到了“树形验证”——EAGLE-3就是代表。EAGLE-3不再是线性地验证一串草稿token,而是构造一棵草稿树,一次前向传播同时验证多个候选分支。树形验证的接受率更高,理论上加速比也更大。那么问题来了:截断式验证和树形验证叠加,是“强强联合”还是“火上浇油”?
论文用理论推导给出了明确的答案:后者。他们对比了标准SD和EAGLE-3两种框架下,截断式验证相对匹配基线的KL散度差异。这里的KL散度(Kullback-Leibler Divergence,KL散度)用来衡量两个概率分布之间的信息损失。关键结论是:当草稿分布逐渐逼近目标分布时,标准SD下截断式验证的KL散度会趋于0;但在EAGLE-3的树验证下,这个KL散度始终保持正值、不会消失。换句话说,草稿模型训练得越好,树验证中落在允许集合内的token就越多,被“照单全收”的比例越高,目标分布的结构性偏航反而越严重。
为什么树验证会“放不下”这种失真?直觉解释并不复杂:标准SD中,被拒绝的草稿token会触发一个从残差分布重新采样的步骤,这相当于给输出分布加了一道“校准器”。而树验证为了追求效率,几乎总是接受树中某个分支,并且不再做重采样校正——校准器被拆掉了,草稿模型的偏置就成了生成分布的“永久居民”。
表格3:EAGLE-3下的评估结果(LLaMA-3.1-8B + 官方草稿模型)。加粗为匹配对中更好的任务性能。
表格3的数据,把这个“放大效应”的惨烈程度彻底摆在了桌面上。SpecCascade相对匹配基线的平均差距从标准SD下的−0.38个百分点扩大到EAGLE-3下的−1.68个百分点;典型接受更是重灾区,平均差距从−0.32个百分点一路扩大到−6.32个百分点,在INCLUDE单项上掉到−8.8个百分点。更扎眼的是,典型接受在全部四个基准上都跌破了EAGLE-3无损基线,SpecCascade也在两个基准上跌破基线。树验证确实带来了一点块效率提升,但这点提升跟质量的崩塌完全不成比例。
图6:EAGLE-3下截断式方法的效率和任务性能权衡。每个点代表一种超参数设置,横轴为块效率,纵轴为准确率或Pass@1,虚线为默认基线。
图6中这些点云触目惊心。典型接受在MATH、INCLUDE上,效率上升的同时精度反而下降——那种“多快好省”的天真幻想,在树验证框架里基本破灭。龙哥看到这张图的时候,心情已经不能用“意外”来形容,更接近一种“果然如此”的释然。
有损验证的未来:如何设计既快又稳的推理加速方案
这篇论文既没有提出新的加速算法,也没有刷新推理速度记录,但它提供的“排雷指南”对行业的实际意义,不输于任何一套新框架。
第一,有损验证的评测规范必须重写。任何使用截断式验证的新方法,都要和“同截断策略下的无损验证”对比,而不是和默认解码对比。做不到这一点的论文,结论都要打上问号。第二,如果要在生产环境中使用EAGLE-3这类树验证框架,务必要对截断式验证做额外的质量回归测试;树形验证会放大分布失真,这在数学、代码等需要精确推理的场景中是不可接受的。第三,协作式验证是一个更有潜力的方向,但设计重心应该放在“过冲抑制”上,而不是均匀混合。与其让草稿模型全面接管输出,不如精准地按住那少数几个过度自信的token。
论文还指出,未来的有损验证设计可以走向更智能的方向:根据任务难度动态调整过冲阈值,让验证规则学会“在简单推理上多放行、在复杂推理上多把关”。这将比今天这种“全局参数扫一遍取均值”的范式精细得多,也为后续研究打开了新空间。
龙迷三问
什么叫“截断采样基线”?为什么说它是更公平的对比对象?截断采样(Truncation Sampling)是指在生成时把词表里概率过低的token裁掉,只在保留集合里重新归一化采样。所谓“截断采样基线”,就是让目标模型自己在推理时使用同样的截断策略进行采样,再配合无损验证来生成。有损截断式验证的接受集合和核心操作都来自截断采样,如果拿“不截断”的默认生成做基线,就把截断采样带来的质量提升算到了验证方法头上,自然显得不公平。
论文中说的“过冲”(Overshoot)到底是什么?过冲是指草稿模型对某个候选token给出的概率,明显高于目标模型给它的概率。通俗地讲,就是“实习生对这个方案信心爆棚,但老板其实没那么看好”。论文的研究发现:低质量生成主要来自那些草稿概率远超目标概率的过冲token。所以,验证机制只要能对这些过冲token做“封顶”处理,就能用很小的效率代价保住大部分生成质量。
EAGLE-3的树形验证为什么会让截断式验证的失真更难消除?核心原因在于缺少残差重采样校准。标准SD中,被拒绝的token会触发残差重采样,相当于给最终分布做了一次“校正”;而EAGLE-3的树验证为了效率,只要树中有一个分支落在允许集合内就接受,同时放弃了重采样步骤。这样一来,草稿模型带来的分布偏置就会原封不动地注入输出,草稿越好,树里可被接受的token越多,失真反而越大。论文用KL散度理论证明了这个效应:标准SD下KL散度趋于0,EAGLE-3下恒为正。
如果你还有哪些想要了解的,欢迎在评论区留言或者讨论~
龙哥点评
论文创新性分数:★★★★☆
对已有方法做了全新的机制归类和理论剖析,属于“重新审视型”创新,不是范式级突破,但足够犀利。
实验合理度:★★★★☆
对比了匹配基线和默认基线两套方案,方法很严谨;但模型对和基准范围有限,个别基准上截断式验证仍占优,结论的普适性需要更大规模验证。
学术研究价值:★★★★☆
给有损验证领域补上了一份重要的“白皮书”,为后续评测和算法设计提供了理论坐标;特别是过冲抑制原则,值得写成设计指南。
稳定性:★★★☆☆
在Qwen2.5和Llama-3.1系列上结论一致,但跨架构、跨数据域的表现尚未验证;部分基准上方法优势仍然存在,不能一棍子打死。
适应性以及泛化能力:★★★☆☆
评测集中在数学、代码、多语理解、工具调用四类任务,缺乏开放域对话和长文本生成验证,适用范围仍需拓展。
硬件需求及成本:★★★★☆
分析型研究,无额外训练成本;推理评测需要跑多个基准和超参数组合,算力有一定开销,测试时间为天级,可以接受。
复现难度:★★★★★
代码已开源,Fast-HSD框架清晰,配套环境和评测脚本齐全,读README基本能直接跑通。
产品化成熟度:★★★☆☆
是对已有加速方案的诊断工具,可以直接接入推理框架做质量审计;但要把它变成生产级的自适应验证器,还需进一步工程封装。
可能的问题:评测覆盖的模型和任务面偏窄,开放生成场景缺失;对截断式验证的“失败”判断基于平均差距,个别指标与基线的差距并不显著;多草稿树验证的结论建立在特定规则假设上,推广时需谨慎。
[1] Leviathan Y, Kalman M, Matias Y. Fast Inference from Transformers via Speculative Decoding. ICML, 2023.