![]()
这项由中国科学院自动化研究所、中国科学院大学与腾讯微信联合完成的研究,于2026年5月发布在arXiv预印本平台,编号为arXiv:2605.06221。对于所有使用过AI助手处理长篇文档、进行多轮对话或调用智能客服的人来说,这项研究触及了一个每天都在发生却鲜少被关注的效率瓶颈。
每当你向一个AI助手粘贴一篇几万字的合同要求它摘要,或者要求它阅读一份长达百页的报告后回答问题,AI在给出第一个字之前往往需要等待相当长的时间。这段等待时间在技术上称为"首字延迟"(Time-To-First-Token,简称TTFT),它取决于AI处理你输入的全部内容需要多久。输入越长,等待越久,这几乎是铁律。研究团队将这个问题比作图书馆里一位勤勉的管理员:无论你问什么问题,他都要把图书馆里每一排书架、每一本书、每一页纸都认认真真地翻阅一遍,才肯开口回答。显然,如果管理员能聪明地判断哪些书架根本与你的问题无关,跳过那些不重要的部分,他给出答案的速度就会大幅提升。
UniPrefill正是基于这一直觉设计的框架。研究团队在实验中证明,这套方法能让AI处理长文本的速度最高提升2.1倍,而且不会对回答质量造成明显损失。更关键的是,当同时有很多用户在使用同一台AI服务器时,这个加速效果会变得更加显著——恰好对应了真实世界中AI服务最紧张的使用场景。
一、为什么"读完再说"会成为大问题
要理解这套方法的价值,需要先明白现代AI助手在处理长文本时究竟面临怎样的计算挑战。当前最主流的大型语言模型,其核心计算机制叫做"自注意力"(Softmax Self-Attention)。这个机制的工作方式,可以用一场非常特殊的圆桌会议来类比:假设输入的每一个词都是一位与会者,而"自注意力"要求每位与会者在发言之前,必须与会议室里所有其他人都握一次手,充分了解彼此的关系,才能决定自己说什么。这意味着与会者越多,握手总次数就会以平方倍数暴增。输入1000个词时需要100万次握手,输入10000个词时则需要1亿次握手——计算量呈爆炸式增长,等待时间自然也随之急剧拉长。
面对这个问题,AI领域的研究者们近年来开发出一批"混合架构"模型,试图降低这种计算负担。一类做法是将部分"全体握手"层替换成效率更高的"线性循环"层,让复杂度从平方级降回线性级;另一类做法是让大多数层只与附近的邻居握手,仅保留少数几个"全体握手"的全局层来捕捉长距离信息。前者的代表是Qwen3-Next-80B-A3B这样的模型,后者的代表则是Gemma-3-12B。这些混合设计大幅降低了理论计算量,并已被多家主流厂商用于生产级模型。
然而,现有的加速方法却有一个根本性的局限:它们几乎清一色地聚焦于优化"全体握手"这一步,对于其他类型的计算层视而不见。以MInference、FlexPrefill、XAttention等代表性工作为例,它们通过识别注意力矩阵中稀疏的、可以跳过的部分来提速,在纯全注意力模型上确实能实现惊人的加速效果。但当这些方法被移植到混合架构上时,问题就暴露出来了:在一个四层循环中只有一层是"全体握手"层的模型里,即便把那一层的握手加速到极致,其余三层的计算时间依然纹丝未动。就像一趟包含飞机、火车和公路三段的长途旅程,你只优化了飞机这一段,对整体耗时的改善自然非常有限。实验数据也印证了这一点:在处理128K长度文本时,MInference在Gemma-3-12B上的加速倍数仅为1.03倍,几乎没有任何帮助。
与此同时,这些稀疏注意力方法还有另一个硬伤:它们与工业级推理引擎的核心调度机制不兼容。现代AI服务器使用一种叫做"连续批处理"(continuous batching)的策略来同时服务多个用户——不同用户的请求被打包在一起处理,就像一辆公交车沿途上下乘客,而非每次只送一位乘客。FlexPrefill之类的方法假设每次只处理一个固定的请求,无法适应这种乘客随时上下车的动态场景,因此始终停留在研究原型阶段,从未真正进入生产环境。
二、图书馆管理员的聪明剪枝法
UniPrefill的核心思路可以用前面那位图书馆管理员的比喻来延伸理解。这位管理员现在学聪明了:在开始认真阅读之前,他先用一分钟快速扫一眼所有书架,判断哪些区域根本和你的问题没关系,然后直接跳过那些区域,只认真阅读真正重要的部分。更妙的是,一旦他决定跳过某个书架,这个决定对整栋图书馆剩余的每一层楼都生效——他不仅在当前楼层跳过,后续所有楼层也同样跳过那个书架。这样一来,省下的时间就不只是一层楼的扫描时间,而是所有楼层叠加起来的节省。
技术层面,UniPrefill的运作方式分为三个紧密衔接的步骤。
第一步叫做"重要性估计"。每当处理到一个包含"全体握手"的层时,系统不会立刻让所有词之间都互相计算,而是先只取输入序列末尾的一小部分词(默认取最后128个词)作为"提问者",让这些提问者与序列中的所有词做一次快速握手,得到一份初步的"重要性分数"——即每个词对于生成下一个字来说大概有多重要。这个操作的计算量远小于完整的全体握手,因为提问者只占总词数的一小部分。
这里有一个值得特别说明的细节:UniPrefill的重要性估计与另一个广为人知的方法SnapKV有表面上的相似之处,但两者的本质目的完全不同。SnapKV在处理完整个输入之后,才用这个评分来压缩后续生成阶段需要存储的缓存,并不减少处理输入时的计算量;而UniPrefill是在处理输入的过程中就利用这个评分来决定跳过哪些词,节省的是当下正在进行的大量计算,两者根本不在同一个时间点发挥作用。
第二步叫做"Top-p词块筛选"。系统将整个输入序列按照固定大小(默认64个词一组)分成若干"词块",并把刚才算出的重要性分数在每个词块内取平均,得到每个词块的综合重要性。然后,系统按照重要性从高到低排列这些词块,保留重要性之和刚好达到总重要性99%的最小词块集合,其余词块一律丢弃。
之所以选择"Top-p"而不是直接保留固定数量的词块(即"Top-k"),有其深刻的统计原因。注意力的分布因文本内容而异:有时高度集中在少数几个关键词上,有时则均匀分散在大量词语中。如果固定保留50个词块,在前一种情况下会保留大量无关内容,在后一种情况下则可能丢掉重要信息。而Top-p会自动适应:注意力集中时保留少,注意力分散时保留多,始终保证丢弃部分的注意力质量占比不超过1%,形成一个严格的信息损失上界。
此外,有两类词块无论评分高低都会被强制保留:序列最开头的128个词(这些词在注意力机制中扮演特殊的"锚点"角色,AI研究者将其称为"注意力沉淀")和序列末尾的128个词(即刚才参与估计的"提问者"本身)。
第三步叫做"稀疏性跨层传播"。这是UniPrefill与所有前代方法最本质的区别所在。被判定为不重要而丢弃的词块,不仅在当前这个"全体握手"层被跳过,而且在当前层之后的所有层——无论是线性循环层、滑动窗口层,还是前馈神经网络层——都被永久性跳过,直到下一个"全体握手"层重新做一次评估为止。跳过的词的隐藏状态被冻结在丢弃时刻的数值,不再参与任何计算,但会被保留下来传递给后续层,以便在需要时"复活"。
这个设计的计算收益是叠加的:假设某次丢弃操作保留了60%的词,那么后续每一个计算层都只需要处理60%的词,节省的计算量与后续层数成正比。在一个有几十层的深度模型中,这意味着早一层做出丢弃决定,就能省下更多的计算资源。研究团队的理论分析也证明,在序列极长的情况下,UniPrefill能节省的计算量与稀疏注意力方法能节省的计算量之比,随着序列长度的增长趋向无穷大——也就是说,文本越长,UniPrefill相对于稀疏注意力方法的优势越悬殊。
三、把这套逻辑塞进工业级服务器
算法设计再精妙,如果无法在真实的生产环境中运行,也只是一纸空文。研究团队在系统工程层面同样付出了大量努力,将UniPrefill深度集成进了目前工业界使用最广泛的推理引擎vLLM。
首先,整套重要性估计和词块筛选的流程被实现为四个紧密融合的GPU计算核(kernel),完全在显卡上执行,不需要在GPU和CPU之间来回传输数据。具体流程是:先计算末尾128个词与所有词的注意力得分矩阵,然后用在线softmax算法对其归一化,接着在每个词块内做空间聚合得到词块级别的分数向量,最后用一个排序加阈值的操作确定保留哪些词块,生成一个二值掩码。
在处理多GPU并行计算时,不同的GPU各自只负责部分注意力头,因此每个GPU看到的重要性分数只是一个局部视角。研究团队的解决方案是在做筛选决定之前,先把所有GPU的局部分数加总,得到全局分数,再做统一的筛选。这样能确保所有GPU对于哪些词块该留、哪些词块该丢,达成完全一致的决定,避免出现"张三留着第5号词块、李四却丢掉了第5号词块"这种混乱局面。
更复杂的问题在于如何与vLLM的连续批处理调度器协同工作。vLLM会同时处理多个用户请求,不同请求被打包成一个批次,用一套统一的数据结构管理所有词的位置信息、KV缓存(即AI存储已处理词的"记忆")的物理地址、每个请求的序列长度等等。当UniPrefill丢弃了某些词之后,这套数据结构中的每一项都需要相应更新,否则后续计算就会出错。
研究团队为此设计了精细的状态维护机制。每次发生丢弃操作时,系统会记录下丢弃发生的层编号和丢弃后保留的词数,形成一份"丢弃历史账单"。在随后的生成阶段,AI需要回头查阅自己在处理输入时写下的"记忆"(KV缓存),此时系统会根据这份账单,告诉每一层它在处理输入时实际写入了多少条记忆——因为不同的层写入的记忆条数可能不同,全局注意力层和滑动窗口注意力层管理的缓存甚至彼此独立。这整个过程不需要修改模型权重,也不需要改动vLLM底层的内存分配器,可以像一个透明的加速插件一样无缝嵌入。
四、在真实测试中的表现究竟如何
研究团队选用了一个名为RULER的长文本理解基准测试来评估UniPrefill的质量,同时在vLLM框架内测量了实际的处理速度。RULER覆盖了检索、多跳推理、信息聚合、问答等多种任务类型,上下文长度从4K扩展到128K,被认为是目前评估长文本AI能力最全面的测试之一。
在三个模型上,UniPrefill的表现都明显优于其他加速方法所能达到的最佳精度-速度权衡点。以纯全注意力架构的LLaMA-3.1-8B为例,在128K上下文长度下,UniPrefill的RULER分数为79.87,与未加速的基准版本76.89相比甚至略有提升(这是因为保留了最重要的词之后,注意力反而更加聚焦),同时实现了2.26倍的首字延迟缩短。相比之下,LazyLLM在同样长度下分数跌至49.71,精度损失惨烈;MInference虽然保住了78.21的分数,但加速倍数仅为1.34倍。
在混合架构模型上,UniPrefill的优势更加突出。对于Qwen3-Next-80B-A3B(线性与全注意力以3:1混合),MInference在128K上的加速倍数只有1.05倍,而UniPrefill达到了1.68倍。对于Gemma-3-12B(滑动窗口与全注意力以5:1混合),MInference的加速倍数仅1.03倍,UniPrefill则达到1.49倍。这印证了研究团队的核心判断:当全注意力层在模型中的占比越来越小时,只优化注意力层的方法效益越来越差,而UniPrefill的跨层稀疏传播机制让它在这些场景下仍然有效。
在vLLM内的吞吐量测试则展示了另一个维度的加速效益。单用户使用128K文本时,LLaMA-3.1-8B的处理吞吐量从21013个词每秒提升到43672个词每秒,提升幅度达107%。当同时有16个用户时,提升幅度进一步扩大到109%。Qwen3-Next-80B-A3B在128K单用户场景下提升48%,16用户场景下提升68%。Gemma-3-12B的提升幅度相对较小,128K单用户42%,这与它的架构中全注意力层占比最低(仅六分之一)直接相关。
一个略显反直觉的现象是,在极短的文本(4K)和极小的批次(单用户)下,Qwen3-Next-80B-A3B的吞吐量反而下降了3%到5%。研究团队对此的解释是:在极短文本中,几乎没有什么词块能被真正丢弃,重要性估计本身的计算开销反而成为了额外负担。这说明UniPrefill的优势区间主要在长文本和多用户并发场景下——而这恰好是生产环境中最常见、最紧迫的情形。
五、微调参数时的规律与取舍
研究团队还系统地测试了两个关键超参数对性能的影响,提供了选择它们时的直观依据。
词块大小G控制了丢弃操作的粒度,可以理解为图书馆管理员每次跳过的最小单位是"一层书架"还是"一排书架"。G=64(默认值)是精度与速度之间的平衡点。G=32(更精细)能让管理员跳过更小的单元,在长文本下丢掉更多不重要的内容,但判断本身的计算开销也更大;G=128(更粗粒度)适合短文本,判断快但灵活性低。实验数据显示,G=32在LLaMA-3.1-8B的128K场景下能达到121%的吞吐量提升,代价是4K场景下精度从96.53略降至93.42。
末尾查询数量n决定了重要性估计时"提问者"的数量。n过少时(n=32),用于估计的样本太少,估计结果方差大,容易误判重要性,RULER平均分从90.45下滑至87.77。n过多时(n=512),估计精度提升但计算开销也随之增加。n=128在精度与开销之间达到最优,成为默认设置。
说到底,UniPrefill做的事情并不复杂:它让AI在认真处理输入之前,先做一次快速的"重要性预扫描",然后在接下来的每一层计算中,都只处理那些真正值得关注的部分。这个思路的巧妙之处在于,它绕开了"只能加速注意力层"的局限,把一次判断的收益扩散到了整个模型的所有层,在混合架构模型上依然奏效。而通过与vLLM的深度集成,这套方法得以在真实的多用户服务场景中实际运行,而非停留在实验室阶段。
对于普通用户而言,这意味着未来使用AI处理长篇文档时,等待第一个字出现的时间有望缩短一半甚至更多,尤其是在服务器繁忙、同时有很多人在使用的时候。对于AI服务提供商而言,同样的硬件资源可以服务更多用户,或者在不增加服务器的前提下支持更长的输入文本。
当然,这项研究也坦承自己的边界:UniPrefill目前专注于"读入阶段"的加速,对于AI生成每一个字的"输出阶段",以及模型训练本身的效率,目前尚未涉及,研究团队将其列为未来的探索方向。有兴趣深入了解技术细节的读者,可以通过arXiv编号2605.06221查阅完整论文,代码已在GitHub开源。
Q&A
Q1:UniPrefill是如何决定哪些词可以被跳过的?
A:UniPrefill在每个全注意力层处,先用序列末尾的128个词快速扫描整个输入,为每个词块打出一个重要性分数,然后保留重要性之和达到99%的最小词块集合,其余全部跳过。序列开头的128个词和末尾的128个词无论分数高低都会被强制保留。
Q2:UniPrefill加速长文本处理会不会让AI的回答质量变差?
A:在RULER长文本基准测试中,UniPrefill与不加速的基准版本相比,精度损失极小,部分情况下甚至略有提升。相比之下,LazyLLM和SlimInfer等其他加速方法在同等加速比下会出现明显的精度下降。
Q3:UniPrefill对混合架构模型(比如Qwen3或Gemma-3)有效吗?
A:有效,而且这正是UniPrefill的核心优势所在。由于UniPrefill会将丢弃决定传播到全注意力层之后的所有层(包括线性层、滑动窗口层和前馈层),它在混合架构上依然能获得可观的加速,而纯稀疏注意力方法在这类模型上加速效果通常不足1.1倍。





京公网安备 11011402013531号