微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 俄勒冈州立大学与DeepSolution联手突破AI推理瓶颈:让大模型"边流水线生产边预测",速度提升数倍

俄勒冈州立大学与DeepSolution联手突破AI推理瓶颈:让大模型"边流水线生产边预测",速度提升数倍

2026-06-05 09:47
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-06-05 09:47 科技行者

这项由俄勒冈州立大学与DeepSolution公司联合完成的研究,于2026年5月发表在arXiv预印本平台,论文编号为arXiv:2605.30852。研究提出了一种名为"投机流水线解码"(Speculative Pipeline Decoding,简称SPD)的全新大语言模型推理加速框架,为长期困扰AI工程师的推理速度瓶颈问题提供了一条新的解决路径。

当你在手机上打字时,输入法会猜测你接下来想打的字——这就是一种简单的"投机预测"。大型语言模型(ChatGPT、DeepSeek这类AI)的工作方式与之类似,但复杂得多。每次生成一个字,模型都要把整个"大脑"从头到尾运转一遍,才能输出下一个字。这个过程就好像每做一道菜,都要把整个厨房的流程走一遍,效率极低。这篇研究的核心贡献,就是重新设计了这个"厨房流程",让厨师们能够同时处理多道工序,从而大幅提升出餐速度。

**一、为什么大模型"说话"这么慢——原来是被内存拖了后腿**

要理解这篇研究解决的问题,得先搞清楚大语言模型为什么慢。很多人以为AI运行慢是因为计算量太大,但实际上,真正的瓶颈并不在于GPU算力,而在于内存读写速度。每次生成一个新的字或词,模型都需要把几百亿个参数从内存里调出来算一遍,然后只输出一个结果。这就好像一个拥有超强计算能力的工厂,每次开动所有机器,却只生产一颗螺丝钉——大量的机器时间都浪费在了"开机"和"关机"的过程上。

已有研究者提出了"投机解码"(Speculative Decoding)这一思路来解决这个问题。其基本逻辑是:先用一个小模型快速猜测接下来几个词,再让大模型一次性批量验证这些猜测是否正确。如果猜对了,就一下子产出多个词;如果猜错了,就丢弃错误结果从头来过。这个策略的妙处在于,大模型"批量验证"的成本并不比验证一个词高多少,因此只要猜测的准确率足够高,整体速度就会显著提升。

目前最主流的投机解码方法叫做EAGLE(以及其升级版EAGLE-3),它不使用独立的小模型来猜词,而是在大模型内部附加一个轻量级的"猜测模块",利用大模型内部的隐藏状态来预测后续词。这个方法的准确率已经相当不错,但它依然存在两个根本性的结构缺陷,这正是这篇论文要攻克的核心问题。

**二、现有方法的两块"硬伤"——猜得越远越不靠谱,大模型还得干等**

现有投机解码方法的第一块硬伤叫做"长程衰减"(long-range decay)。用一个直观的例子来理解:假设你是一个接力赛中的预言家,第一棒选手还没跑完,你就要预测第四棒选手会在哪个位置接棒。第一棒的结果是准确的,但你对第二棒的预测基于第一棒的猜测,第三棒的预测又基于第二棒的猜测……错误不断叠加,到第四棒时你的预测已经严重偏离真实情况。现有投机解码方法也面临完全相同的困境:猜测第2个词时,模型只能依赖未经大模型完整验证的浅层中间状态;猜测第8个词时,这种"不靠谱依赖"已经叠加了七层。EAGLE-3尝试用"训练时模拟更难的场景"来缓解这个问题,但其训练中能模拟的猜测深度最多只有8步,超过这个范围效果就急剧恶化。

第二块硬伤叫做"串行等待"——大模型和猜测模块之间存在相互干等的问题。传统方法的流程是:猜测模块先跑完,依次生成多个候选词,然后大模型才能开始批量验证。在猜测模块工作的这段时间里,价值数百亿参数的大模型只能闲置等待,白白浪费了算力。有研究者尝试让猜测模块并行生成候选词(P-EAGLE),但这样训练复杂度会急剧上升;另有研究者让猜测模块提前预判大模型的验证结果(Speculative Speculative Decoding),但这导致候选分支呈几何级数爆炸,计算和内存负担都变得难以承受。此外,还有一个名为PPSD的方法,它把大模型切成多个"流水线阶段"并行运行,用第一阶段的浅层输出来猜测下一个词。方向是对的,但它只用了第一阶段的浅层信息,猜测准确率很低,而且猜测模块依然在大模型运行完一步之后才开始工作,并没有真正消除等待。

**三、流水线工厂来了——SPD如何重新设计整个"生产流程"**

面对上述两个硬伤,这篇研究提出了投机流水线解码(SPD)。要理解它的核心思路,可以用一家汽车装配工厂来类比。传统方法就像每辆车都要在一条单一的长流水线上从头到尾依次加工完毕,才能出厂;而SPD则像现代汽车工厂那样,把整条流水线分成多个工位,每个工位同时处理不同阶段的车辆——当一辆车在烤漆时,另一辆车正在安装发动机,还有一辆车在做最终检测。这样,虽然每辆车完工的总时间没变,但工厂的整体产能却成倍提升。

具体来说,SPD将大模型(比如有32层"处理层"的模型)切分成若干个"流水线阶段"(n个阶段)。在任意一个时刻,有n个词正处于流水线的不同阶段被同时处理。当n=4时,就意味着同时有4个词处于不同的加工深度:最新的词刚进入第一阶段,前一个词在第二阶段,再前一个在第三阶段,最早的那个词则在最后阶段即将完成。

关键问题随之而来:要让流水线持续不断地运转,每完成一步处理就必须往流水线头部塞入一个新词,否则流水线就会出现"气泡"(某些工位空转),效率大打折扣。然而,新词的产生依赖于当前词的最终输出,而当前词还在流水线中途,尚未完成!这就产生了一个时间悖论。SPD的解决方案,就是引入一个专门的"流水线猜测模块"来预测这个新词,让这个模块与大模型的流水线步骤同步并行运行,彼此互不干等。

**四、多深度特征融合——猜测模块如何做到"既快又准"**

SPD猜测模块的第一个关键创新是"多深度特征融合"(Multi-Depth Feature Aggregation)。

回到工厂比喻:如果你要预测某辆车何时能出厂,仅仅看它刚进工厂时的原始状态(一堆钢板)当然预测不准;但如果你同时能看到它当前在哪个工位、已完成了哪些工序,以及之前已经出厂的同款车辆的完整数据,那你的预测就会准确得多。SPD猜测模块做的正是这件事。

对于当前在流水线中的每一个词,模块都会收集它目前已经处理过的所有层次的隐藏状态,并聪明地从中提取三个"快照":最浅层(词的原始嵌入表示,即词的"原材料状态")、最深的已处理层(词当前最深的处理结果,即"当前最新加工进度")以及中间层(位于两者之间,相当于"中期加工状态")。这三个快照通过一个全连接层融合成一个综合特征向量,作为猜测模块的输入。对于那些已经被大模型完整处理并验证过的历史词,则直接使用其完整的最深层特征。

这个设计的精妙之处在于:无论流水线有多长,无论猜测的是第几个未来词,每次猜测所依赖的最不完整的信息,最多也只是"只经过了n个阶段中的一个阶段"的词的特征,也就是说,信息不完整程度被硬性地、数学上确定地压制在了一个常数n以内,而不会像传统方法那样随猜测步数的增加而无限累积。这从根本上解决了"长程衰减"问题。

**五、同步并行执行——让猜测模块和大模型同时工作,消除一切等待**

第二个关键创新是"同步并行执行调度"(Simultaneous Execution Schedule),即彻底消除猜测模块和大模型之间的相互等待。

传统方法(包括PPSD)的时间线是这样的:大模型先完成一步流水线推进→猜测模块基于新的输出结果开始猜测→猜测完成后大模型再推进下一步。这意味着每一步都有"顺序等待",猜测模块占用的时间直接累加到总时延上。

SPD的调度策略则是把猜测模块的执行窗口整体"前移":当一个新词刚刚被推入流水线第一阶段的瞬间,猜测模块立即开始工作,预测再下一个词。此时猜测模块使用的是流水线"推进前"的状态——也就是说,最新的那个词只有原始嵌入,而其他词使用各自当前深度的特征(而非推进一步后的更深特征)。猜测模块运行的整个过程,与大模型完成这一步流水线推进的过程完全重叠、同步进行。当大模型完成这一步时,猜测模块也恰好完成了对下一个词的预测,可以立即将其塞入流水线——零等待,零气泡。

当然,这个"提前启动"的代价是:猜测模块看到的信息比等大模型跑完一步再看要浅一点,这会轻微增加猜测难度。但研究团队指出,多深度特征融合已经提供了足够丰富的上下文来补偿这一点。更妙的是,由于猜测模块的计算时间被大模型的流水线步骤完全"遮盖",猜测模块实际上可以做得更深、更复杂——只要猜测模块的层数不超过大模型单个流水线阶段的层数(即不超过L/n层),额外的计算完全免费。

以一个32层大模型、8个流水线阶段(n=8)为例,每个阶段有4层,猜测模块最多可以有4层Transformer,而这4层的计算成本完全被大模型那4层的执行时间所掩盖。相比之下,EAGLE-3的猜测模块每增加一层,都会直接增加等待时延。

**六、流水线的启动与验证机制——每一步如何严格保证输出正确**

任何投机解码方法都必须回答一个关键问题:如何保证最终生成的文字和原始大模型(不做任何投机加速)的输出分布完全一致?SPD在这方面有严格的机制设计。

验证是"流水式"进行的。每当大模型完成一个流水线步骤,流水线最末端的那个词就会完成最后一层处理,其完整输出会通过大模型标准的语言模型头(LM head)产生精确的概率分布,用于验证紧随其后的那个词(该词是n步之前由猜测模块预测的)。在贪婪解码(每次取概率最高的词)下,只要猜测词与大模型输出的最高概率词一致,就接受;在随机采样下,则采用标准的拒绝采样方法。

一旦某个词被拒绝,就会触发回滚协议。大模型所有层的KV缓存会被同步截断到拒绝点之前,流水线中所有中间隐藏状态被清空(因为它们都是基于那个错误词计算出来的),然后从大模型的验证分布中直接采样一个正确的替换词,以其嵌入重新填充流水线第一阶段,恢复正常运行。这个机制保证了SPD的输出分布与原始自回归解码完全等价——这在学术上叫做"无损加速"。

在流水线启动的暖机阶段(流水线还没被填满),处理方式略有不同:所有历史词都已完整处理,只有最后几个新词处于不同深度,特征格式会从"满管道"状态自然过渡到"暖机"状态。研究团队通过在训练时随机模拟不同的流水线占用程度,确保猜测模块对两种状态都能正确工作。

**七、训练方法——如何让猜测模块学会在"不完整信息"下做出准确预测**

猜测模块的训练采用了知识蒸馏(Knowledge Distillation)框架。训练时,大模型的参数完全冻结,只更新猜测模块的参数。猜测模块的目标是:给定多深度特征输入,预测每个位置上的下一个词的概率分布,使其尽可能接近大模型输出的真实概率分布。具体使用KL散度(可以理解为衡量两个概率分布之间"距离"的指标)作为损失函数。猜测模块有自己独立的语言模型头,其初始权重从大模型的语言模型头复制而来。

训练数据来自多个高质量对话和指令数据集的混合,包括ShareGPT-70k、UltraChat-200k、SmolTalk和SmolTalk-Chinese,共筛选了120万条样本,每条最长2048个词元(token)。训练使用学习率1e-4加线性衰减,只训练1个完整轮次(epoch),训练效率非常高。

训练时最特殊的地方在于序列长度的展开。为了让猜测模块能够在单次前向传播中,同时学会处理流水线不同深度的输入,每个训练词元位置都被展开成n+1个连续的块,分别对应不同的流水线深度(从最深的g^n到最浅的g^0)。这使得训练序列长度变成原来的n+1倍,计算开销相应增加,但这是使猜测模块能够正确工作的最小必要代价。此外,为了提升训练效率,研究团队采用了一个非对称注意力机制:只有最浅层(g^0)的块作为查询(Query),其他层的块只提供键(Key)和值(Value),这把注意力图的规模从O((n+1)^2·N^2)大幅压缩到O((n+1)^2·N),显著降低了训练内存占用。

**八、衡量"快了多少"——一个更严谨的理论加速比指标**

在对比不同加速方法时,简单地比较"生成了多少词"是不够准确的,因为不同方法的时间消耗结构差异很大。研究团队引入了一个叫做"等效接受长度"(Equivalent Acceptance Length,L'_acc)的指标来衡量理论加速比。

这个指标的推导非常清晰。假设每层计算耗时相同,普通自回归解码每生成一个词需要1个单位时间(所有32层都要跑一遍)。SPD中每个流水线步骤只跑1/n个单位时间(只有L/n层),而猜测模块的耗时完全被遮盖,不计入总时间。假设总共生成了N个词,实际执行了K个流水线步骤(每次拒绝都会多用几步来完成回滚和重启),则接受率α=N/K,SPD的理论加速比为N除以K×(1/n),化简后恰好等于α×n,即L'_acc。

对EAGLE-3来说,猜测模块每轮需要跑m步来生成m个候选词,每步耗时Ls/L,再加1个单位时间让大模型验证,总耗时为m×(Ls/L)+1,理论加速比为Lacc×L/(Ls×m+L),始终严格小于Lacc。这意味着EAGLE-3的实际加速比总是被其原始接受长度打了折扣。

对PPSD来说,每步耗时是1/n加上Ls/L,理论加速比为L'_acc×L/(Ls×n+L),同样严格小于L'_acc。

因此,SPD的理论加速比在三种方法中是计算上最为"干净"的:L'_acc直接等于理论加速比,没有任何折扣因子。

**九、实验结果——数字说明一切**

研究团队在Qwen3.5-4B(40亿参数)和Qwen3.5-9B(90亿参数)两个模型上,针对MT-Bench(多轮对话)、GSM8K(数学推理)、HumanEval(代码生成)三个基准测试集进行了全面评测,并与EAGLE-3和PPSD进行了系统比较。

在总体均值表现上,SPD在大多数配置下都取得了最高的理论加速比。以Qwen3.5-4B为例,采用8个流水线阶段、4层猜测模块、宽度为4的草稿树(W=4)、随机采样(T=1)时,SPD的L'_acc达到3.43,而对应的EAGLE-3(m=7)在同等候选词数量下的理论加速比仅为2.79,PPSD(n=8)仅为1.67。只有在贪婪解码(T=0)且使用宽度4草稿树(W=4)的设置下,EAGLE-3(m=7)以3.61的理论加速比略胜SPD(n=8, Ls=4)的2.91。

规模可扩展性方面,SPD展现出非常理想的扩展规律:将流水线阶段数从4增加到16,理论加速比单调递增;将猜测模块层数从1增加到4,理论加速比也稳步提升,且没有任何额外延迟代价。相比之下,EAGLE-3在增加猜测步数(m从7到15)时,虽然原始接受长度有所增加,但理论加速比反而下降(如T=0, W=1时从2.72降至2.39),因为更多的猜测步骤带来了更多的不可遮盖的串行开销。PPSD在增加阶段数时,则因为每阶段特征更浅、猜测更不准确,理论加速比也随之下降。

在随机采样(T=1)场景下,SPD相较于EAGLE-3的优势更加明显。研究团队对此的解释是:SPD猜测模块接触到更丰富的多深度目标模型特征,能够更准确地拟合目标模型的完整概率分布(包括低概率词),而非仅仅近似高概率词。在实际应用中,非零温度采样是更常见的使用方式(因为它能产生更多样化、更自然的文本),所以SPD在T=1下的优势具有很强的实际意义。

在任务类型方面,三个测试集呈现出清晰的规律:HumanEval(代码)的接受长度最高,GSM8K(数学)次之,MT-Bench(对话)最低。这与直觉相符——代码的下一个词往往有极高的确定性(比如固定语法结构),而开放性对话的下一个词则不确定性很高。SPD在Qwen3.5-9B的HumanEval上,T=1, W=4配置下L'_acc高达5.97,意味着理论上可以将推理速度提升接近6倍。

**十、消融实验——"提前启动"的设计到底值不值**

研究团队还专门做了一个对照实验,来验证"使用流水线输入状态"(即猜测模块提前启动,与大模型同步运行)相比"使用流水线输出状态"(即等大模型跑完一步再启动猜测模块)的设计优劣。

结果非常能说明问题。使用输出状态时,猜测模块能看到更新一步的更深层特征,因此原始接受长度确实大幅提升——以Qwen3.5-4B、n=16为例,T=1, W=4时接受长度从3.44飙升至4.78。然而,由于使用输出状态意味着猜测模块必须等大模型跑完才能开始,两者无法并行,串行等待重新出现,理论加速比随之崩塌——4.78的高接受长度对应的理论加速比只有2.39,远低于输入状态设计的3.44。这个对比清晰地证明了"消除等待"比"提高单步猜测准确率"对整体加速比更为关键。

**十一、局限性与未来方向——研究者自己的诚实评估**

研究团队在论文中坦诚地指出了两个主要局限性。

第一个是工程实现层面的限制。目前SPD的实现基于原生PyTorch,缺乏系统级优化(如自定义CUDA内核、异步跨阶段执行、vLLM或SGLang的深度集成),因此无法直接测量真实的端到端墙上时钟加速比。实验中报告的全部是理论加速比,而不是实测速度。研究团队明确表示,现有的串行操作在理论上是可以并行化的,未来工作将重点解决这些工程挑战。在单张GPU上,多个流水线阶段并行运行还可能遇到内存带宽瓶颈和内核启动开销问题。

第二个是异构模型架构下的负载均衡问题。以Qwen3.5-4B为例,其32层中每4层有3层线性注意力层和1层标准注意力层,不同的层计算量并不相同。如果把32层切成16个阶段(每阶段2层),不同阶段的计算时间会有差异,破坏流水线的严格同步,可能引入气泡。不过,这个问题只存在于部分特殊架构中,选择层数更多或架构更均匀的模型可以回避这个问题。

---

说到底,这篇研究做的事情,是把大模型推理从一条"单行道"改造成了一条"多车道流水线高速公路",同时安排了一个能在当前车辆行驶过程中就提前预测下一辆车行驶路线的智能调度系统,让高速公路始终保持满载运行,不出现任何空等。

这个方案的最大价值在于两点的同时实现:其一,猜测的难度被物理性地封顶了,不会因为想猜更远的未来而指数级变难;其二,猜测的计算成本被彻底"隐形"了,不会因为猜测模块做得更精细而增加任何等待时间。这两点在现有方法中是相互矛盾的——要猜得准就得猜得深,猜得深就得等更久,而SPD用流水线并行的架构设计巧妙地绕开了这个矛盾。

对普通用户来说,这项研究的潜在影响是:未来使用ChatGPT、Claude或各种国内AI助手时,模型的响应速度可能会有实质性提升,尤其是在写代码或做数学题这类需要生成大量格式化文本的场景下,体验改善会更加明显。当然,从理论算法到生产级系统还有很多工程工作要做,这是研究团队接下来的主要任务。

感兴趣的读者可以在arXiv平台通过论文编号arXiv:2605.30852查阅完整原文,代码也已在GitHub上开源。

---

Q&A

Q1:投机解码(Speculative Decoding)和普通的大模型推理有什么区别?

A:普通大模型推理每次只生成一个词,每次都要把全部模型层从头算到尾。投机解码的思路是先用一个轻量级模块快速猜测接下来几个词,再让大模型一次性批量验证这些猜测。由于批量验证的成本几乎和验证一个词一样低,只要猜测准确率足够高,整体速度就会明显提升,且保证输出结果与普通推理完全一致。

Q2:SPD方法需要重新训练大语言模型本身吗?

A:不需要。SPD在训练时会完全冻结大语言模型的所有参数,只训练一个额外的轻量级猜测模块。这个猜测模块通过知识蒸馏方式学习模拟大模型的输出分布,训练数据约120万条对话样本,只需训练1个轮次,训练成本相对较低。大模型本身不做任何修改。

Q3:SPD的理论加速比和EAGLE-3相比,在什么情况下SPD更有优势?

A:SPD在随机采样(温度T=1)场景下优势最明显,因为它能更准确地捕捉目标模型的完整概率分布。在代码生成(HumanEval)任务上,SPD的优势也尤为突出,Qwen3.5-9B上L'_acc最高达到5.97。只有在贪婪解码(T=0)加宽度4草稿树的设置下,EAGLE-3凭借更高的原始接受长度在理论加速比上略占上风。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-