这项由上海交通大学研究团队完成的研究,以预印本形式于2026年4月发表,论文编号为arXiv:2604.18396,题为《River-LLM: Large Language Model Seamless Exit Based on KV Share》。对于每天都在使用AI助手、代码补全工具或智能客服的普通人来说,这项研究触碰的是一个非常现实的痛点:为什么大模型回答问题总是要等那么久?
每当你向ChatGPT或者类似的AI工具提问,它在屏幕上一个字一个字地"打字"给你看,背后其实是一台服务器在高速运转,把数以亿计的参数一遍又一遍地计算。模型越大,计算越慢,电费越贵,等待越久。研究人员一直在思考:有没有可能让模型"聪明地偷懒"——对于简单的内容少算一些,对于难的内容才全力以赴?
上海交通大学的这支团队给出了他们的答案,并且把这套方法命名为**River-LLM**,意思是"像河流一样平滑流淌的大语言模型推理框架"。他们声称,无需对模型进行任何额外训练,就能让推理速度提升1.71倍到2.16倍,同时保持几乎与原模型相当的回答质量。
---
一、大模型为什么这么慢?先从"流水线"说起
要理解这项研究解决的问题,先要了解一件事:大语言模型是如何一个字一个字地生成文本的。
你可以把一个大语言模型的内部结构想象成一家工厂里的流水线。原料(你的问题)从流水线的最开始进入,经过一道道工序(模型的"层",英文叫Layer),最终在流水线末端产出成品(回答的下一个字)。这家工厂非常有意思:它每次只生产一个字,生产完这个字,才能开始生产下一个字。
现代大语言模型的流水线通常有十几层到几十层,比如研究团队测试的Llama3.2 1B有16层,Llama3.1 8B有32层。每生成一个字,所有层都得走一遍。问题在于,对于大量"简单"的字——比如数学题解答里的"所以"、"等于"、"答案是"这类词——流水线其实不需要跑完所有层就能得到正确结果。那些后面的层,对于这些简单的字来说,基本上是在做无用功。
这就引出了"早期退出"(Early Exit)这个思路。既然流水线的前几层已经能确定这个字是什么了,何不让它提前从流水线里出来,跳过后面那些多余的工序?理论上,这样可以大幅节省时间。
研究团队做了一个实验来验证这个潜力:他们在Llama3.2 1B这个模型上,逐一检查每个字在哪一层就已经能得出与最终结果相同的预测。结果显示,对于GSM8K(一个数学应用题测评集)上的回答,所有字的平均"最优退出层"只有第4.81层,而模型总共有16层。换算一下,这意味着理论上可以把计算量砍掉约70%,速度可以提升3.3倍,而回答准确率只下降6%。
这个数字相当诱人,但现实情况却大相径庭——实际加速效果远没有这么理想。问题出在哪里?
---
二、流水线里的"历史档案":让早期退出几乎失效的真正障碍
要理解这个问题,需要再了解一个大语言模型推理中的关键机制,叫做**KV缓存**(KV Cache)。
还是用流水线工厂的比喻。工厂里每道工序在处理当前这批原料的时候,都需要翻阅之前所有批次的加工记录(历史档案),才能做出正确的决策。这些历史档案就是KV缓存,KV分别代表"Key"(键)和"Value"(值),是每道工序处理过程中保存下来的信息摘要。
正因为有了这些历史档案,工厂才不需要每次都把之前所有批次的原料重新加工一遍——只需要查阅档案就行了,大大节省了时间。KV缓存是大语言模型能够高效运行的核心机制之一。
然而,一旦某个字提前从第5层退出了流水线,它就没有经过第6层到第16层的加工,也就没有在这些层留下历史档案。当下一个字进入流水线,走到第6层的时候,它需要查阅上一个字在第6层的档案——但档案根本不存在!这就是研究团队称之为**"KV缓存缺失"**(KV Cache Absence)的问题。
这个问题让早期退出在实际应用中陷入了两难困境,就好像工厂里的一个悖论:让工人提前下班能省钱,但他们没交的那份工作记录会让后续生产全部卡住,损失更大。
在这项研究之前,学术界提出过四种应对思路,但每种都有明显的缺陷。
第一种叫"补算重做"(Batching Recompute):当发现某个字的历史档案不存在时,临时把它重新算一遍。这相当于工人下班后发现缺了记录,再把整个流程走一遍补档——费时费力,几乎把提前退出省下来的时间全部吃掉了。
第二种叫"单调递减退出"(Mono-Decreasing Exit):规定后续生成的字,退出的层数只能越来越早,不能越来越晚。这样可以保证后面的字总是能找到前面字的档案。但代价是大量本可以提前退出的字被迫继续走完更多层,早期退出的潜力被严重压制。研究团队测试的一个代表方法SkipDecode就属于这类。
第三种叫"状态传播"(State Propagation):当某个字在第5层提前退出,就把第5层的处理结果直接复制粘贴给第6层到第16层,冒充这些层应有的历史档案。这相当于用一份山寨档案替代真实档案,勉强能让生产继续,但档案内容不准确,最终产品质量会下降。CALM、DAT等方法属于这类。
第四种叫"KV遮蔽"(KV Mask):干脆修改工厂规则,让每道工序忽视那些没有历史档案的字,就当它们不存在。这样虽然不会报错,但相当于让工人在信息残缺的情况下工作,产品质量损失相当明显。D-LLM属于这类。
研究团队在Llama3.2 1B上做了实际测试,测量每生成一个字所需的毫秒数。在放宽质量要求(得分约0.15)的情况下,四种方法各有高下,但没有一种能真正填补"理论加速"和"实际加速"之间的鸿沟。KV遮蔽方法需要模型运行更深的层来弥补精度损失,反而增加了骨干网络的计算量;补算重做虽然骨干网络层数少,但补算本身的计算开销极大;状态传播的实际速度甚至不如单调递减退出。
---
三、River-LLM:让每个字都带着"完整档案"提前离场
上海交通大学的研究团队换了一个思路:与其在字提前退出之后想办法补救缺失的历史档案,不如在字提前退出的过程中,就把这些档案顺带生成好。
这就是River-LLM的核心理念,他们称之为**"KV共享退出河流"**(KV-Shared Exit River)。
具体怎么实现呢?研究团队在原始模型的每一层旁边,并排建立了一套"轻量化影子层",称为**退出层**(Exit Layer)。这些退出层是原始模型各层的精简复制品:先把原始层的参数完整复制过来,再用一种叫做**4比特量化**(W4A16)的压缩技术把它们"瘦身"。量化可以理解为把档案从精装版压缩成简装版,内容大体相同,但体积大幅缩小,处理速度更快——研究团队测量到,退出层的处理速度比原始层快约2.4倍。
最关键的设计在于:这些退出层与对应的原始层**共用同一套历史档案存储空间**(即共享KV缓存)。这意味着当一个字从退出层通过时,它产生的历史档案会自动存入原始层的档案位置,后续的字查阅时完全感知不到任何异常。
回到工厂比喻:退出层就像是流水线旁边新建的一条快速通道,速度更快,加工质量略有下降但总体可接受。最妙的是,这条快速通道和主流水线共用同一套档案系统,走快速通道的工人同样会留下完整的工作记录。工人走快速通道,档案照旧归档,后续工人完全不受影响——这就实现了真正意义上的"无缝退出"。
整个建立退出层的过程不需要任何额外训练,只需要复制参数并量化,通常在一分钟内就能完成。这对实际部署来说是个很大的优势,因为训练大型语言模型的成本极为高昂。
研究团队还测试了退出层产生的历史档案与原始层档案的相似度。结果显示,无论在哪一层退出,退出层生成的档案与原始层档案的平均余弦相似度(一种衡量两个向量相似程度的指标,1表示完全相同)均保持在0.97以上。对于Key(键)部分,相似度普遍在0.997至1.000之间;对于Value(值)部分,相似度在0.97至0.994之间。简单说就是:影子档案和真实档案高度一致,用影子档案当替代品几乎没有损失。
---
四、什么时候该走快速通道?聪明的"退出决策"机制
有了快速通道,还需要一套判断机制:这个字到底该走快速通道,还是继续走主流水线?
如果每个字都走快速通道,那高难度的推理题就会出错;如果每个字都走主流水线,那加速效果就完全体现不出来。这套判断机制至关重要。
研究团队发现了一个有趣的规律:在模型的每一层,可以测量这一层的输入和输出之间的相似度,称为**状态转移相似度**(State Transition Similarity)。这个相似度越高,说明这一层的处理对当前字的影响越小,换句话说,当前字已经"接近稳定"了,不需要继续往下算。
据此,研究团队设计了一个简单的退出判断公式:在当前层,计算这一批所有并行处理的字的状态转移相似度,取最小值,如果最小值超过阈值τ,就判断为"可以退出",让这个字从退出层完成剩余的处理。阈值τ是唯一的调节旋钮:调高τ,更难触发退出,精度更高但速度优势减少;调低τ,更容易退出,速度更快但精度略有损失。
研究团队还观察到,状态转移相似度随层数的增加总体呈上升趋势(最后一层除外),这符合早期退出的内在逻辑——当某一层已经决定退出时,后续更深的层通常也满足退出条件,不需要专门走到那里再判断一次。
在GSM8K测试中,当τ=0.5时,River-LLM的平均退出层为第3.79层(总共16层),下一个字的预测匹配率高达98.03%,与原始模型输出的KL散度(衡量两个概率分布差异的指标,越小越相似)仅为0.0045,几乎可以忽略不计。
整个退出判断逻辑的计算复杂度只有O(d),其中d是模型的隐藏维度。在Llama3.1 8B上实测,退出决策逻辑的执行时间约为100微秒,占每个字总推理时间的0.0688%。这个开销几乎可以忽略不计。
---
五、整体推理流程与"骨干卸载"策略
River-LLM在实际推理时,会根据不同阶段采用不同的策略。
处理用户输入的阶段(称为预填充阶段,Prefill Phase)使用序列级退出——所有词在同一层统一退出,这样可以充分利用并行计算的硬件优势,效率更高。而生成回答的阶段(生成阶段,Generation Phase)则切换为字级退出,每个字独立决定在哪一层退出,最大化加速效果。
此外,研究团队还提出了一个叫做**骨干卸载**(Backbone Offloading)的部署策略。由于绝大多数字都会在很浅的层就从退出通道离开,原始模型的深层部分几乎很少被用到。因此,可以把这些深层的原始参数从显存(GPU的高速内存,非常昂贵)中移出,只在极少数需要走完整流程的字出现时才临时调入。退出层始终保留在显存中,随时可用。
这个策略让River-LLM的内存占用大幅下降,与静态全量化模型相当,但保留了对"难字"的高精度处理能力——这正是静态量化无法做到的。
---
六、实验结果:数据说话
研究团队在NVIDIA A40 GPU上,用四个代表性模型——Llama3.2 1B(16层)、Llama3.1 8B(32层)、Phi4-mini(32层)、Ministral3 8B(34层)——进行了全面测试,涵盖数学推理(GSM8K、MATH)、代码生成(HumanEval)和常识推理(BoolQ、HellaSwag、ARC、MMLU)共八个测评集。
在准确率方面,以Llama3.2 1B为例,当τ=0.5时,River-LLM在GSM8K上的得分为29.3(原始模型33.5),在HumanEval上为23.2(原始25.8),在BoolQ上为67.5(原始69.4)。当τ=0.7时,各项得分进一步接近原始模型,GSM8K恢复至33.5,HumanEval恢复至25.7,BoolQ恢复至69.2,几乎与原始模型持平。此时平均退出层从3.79跳升到约15层,速度优势减少,但精度基本无损。
对于更大的Llama3.1 8B,τ=0.5时GSM8K得分为74.4(原始78.2),τ=0.7时为75.6,而平均退出层仅约3层(总共32层),意味着大部分推理只用了不到10%的层数。特别值得关注的是,在HumanEval代码生成任务上,River-LLM(τ=0.7)的得分为57.3,与原始模型的55.5相比**反而更高**。研究团队认为,这可能是因为绕过了深层那些引入"过度思考"噪声的层,反而让模型在代码生成上更加简洁准确。
在速度方面,以Llama3.2 1B为例,原始模型在GSM8K上的吞吐量为84.5字/秒,完全量化基线为195.5字/秒(加速2.31倍),而River-LLM达到182.9字/秒(加速2.16倍)。River-LLM的速度只比完全量化低约10%,但准确率显著更高(29.3 vs 25.1)。
在Llama3.1 8B上,原始吞吐量约25字/秒,完全量化为47.5字/秒,River-LLM为45字/秒(加速1.78倍),三个测评集的准确率损失均在4个百分点以内。对于Ministral3 8B,在MATH上的加速比达到1.85倍,在HumanEval上更是达到1.98倍,同时准确率保持良好。
研究团队还对比了River-LLM与其他早期退出方法(KV遮蔽、单调递减退出、状态传播、补算重做)在吞吐量与准确率之间的权衡曲线。结果显示,River-LLM的曲线处于所有方法的帕累托前沿——在任意给定的准确率水平下,River-LLM的速度最快;在任意给定的速度水平下,River-LLM的准确率最高。其他方法的曲线要么陡峭(速度稍快一点,准确率就大幅崩塌),要么平缓(精度保持不错,但速度提升有限)。
在内存消耗方面,测试使用Llama3.1 8B在不同上下文长度下的峰值显存。原始模型在16K token上下文时消耗16.96 GB,Balcony方法增加到19.77 GB,EE-LLM方法为19.55 GB,而River-LLM只需要8.73 GB,与完全量化基线的6.47 GB相近。在64K超长上下文时,原始模型需要22.96 GB,Balcony需要26.9 GB,而River-LLM仅需14.73 GB。这种在长上下文场景下的内存优势非常突出,因为KV缓存不需要重复存储,整个框架只维护一套。
研究团队还测试了将退出层的量化方法从HQQ换成AWQ后的效果,发现River-LLM可以无缝集成更先进的量化技术。使用AWQ的River-LLM在GSM8K上得分77.3,不仅远高于HQQ版的74.4,甚至高于静态AWQ完全量化(76.2),同时吞吐量保持竞争力(46.9 vs 48.1字/秒)。这说明River-LLM的框架设计是开放的,量化技术越进步,River-LLM就能越受益。
---
七、这项研究的局限在哪里?
研究团队自己坦承了两点主要局限。其一是测试规模:目前的实验只覆盖了1B到8B参数量的模型,对于24B、70B等更大规模的模型,River-LLM的表现还有待验证。其二是加速场景的不均衡性:River-LLM的加速效果主要体现在文本生成阶段,对于以处理长输入为主(而非生成长输出)的任务,比如MMLU这类问答测评,加速效果相对有限,因为这类任务在预填充阶段耗时更多,而预填充阶段目前采用的是序列级退出,优化空间相对较小。
---
归根结底,River-LLM解决的是一个长期以来卡在"理论美好、现实尴尬"状态的工程难题。早期退出这个思路并不新鲜,学界已经研究了很多年,但始终因为KV缓存缺失这个拦路虎而无法真正走出实验室。上海交通大学的这支团队通过一个相对简洁的设计——把退出层和骨干层共享档案存储——让这个问题有了一个优雅的解法。
对于普通用户来说,这意味着在同样的硬件上,未来的AI工具可能能跑得更快、更省电,或者在同样的响应速度下支持更多人同时使用,降低服务成本。对于需要在有限设备(比如手机、边缘计算设备)上部署大模型的应用场景,River-LLM这类框架的价值尤为突出。
如果你对这项研究感兴趣,想进一步了解技术细节,可以通过arXiv编号2604.18396查询完整论文,论文目前以预印本形式公开,无需订阅即可免费阅读。
---
Q&A
Q1:River-LLM为什么不需要额外训练就能加速大模型推理?
A:River-LLM的核心是把原始模型各层的参数复制出来,再用4比特量化压缩成轻量化的"退出层",整个过程通常在一分钟内完成。退出层和原始层共享同一套KV缓存存储空间,因此不需要重新训练模型来适配新结构,只需要一次性的参数拷贝和压缩即可部署。
Q2:River-LLM的KV共享机制会不会导致回答质量大幅下降?
A:根据实验数据,退出层生成的KV缓存与原始层的余弦相似度普遍在0.97以上,差异极小。在GSM8K测评中,当退出阈值τ=0.7时,Llama3.2 1B的准确率从33.5降至33.5(几乎持平),Llama3.1 8B从78.2降至75.6,代码生成HumanEval上甚至出现了小幅提升,说明质量损失总体可控。
Q3:River-LLM和直接对大模型做全量化相比有什么优势?
A:全量化对所有字一视同仁地降低精度,对"难字"(高熵、复杂推理)的损害尤为明显,在GSM8K上Llama3.1 8B全量化后准确率从78.2降至69.8,损失较大。River-LLM只对"简单字"走轻量化退出通道,对"难字"仍走原始高精度路径,因此准确率保持在74.4%至78.2%之间,同时速度接近全量化水平(慢约10%)。