

这项由阿里巴巴AMAP(高德地图)机器学习团队完成的研究,以预印本形式于2026年6月30日发布在arXiv平台,论文编号为arXiv:2606.31315,有兴趣深入了解的读者可以通过该编号查询完整论文。
每次你打开手机问AI助手一个问题,背后那台服务器其实在做一件相当"费力"的事情——它必须一个字一个字地往外"蹦"答案,就像一个打字速度极慢的秘书,每次只能打完一个字才能看下一个字该写什么。这种逐字生成的方式在技术上叫做"自回归解码",是目前大语言模型最根本的运作方式,也是它最大的速度瓶颈。
为了解决这个问题,研究人员想出了一个聪明的办法,叫做"推测解码"。可以把它理解为一种"猜题+批改"的流水线作业模式:先让一个又快又轻巧的小助手(草稿模型)抢先猜出接下来可能出现的一串字,然后再交给那个精准但缓慢的大模型(目标模型)来一次性检查这串猜测对不对。如果猜对了,就全部采用;猜错了,就从出错的地方截断。这样一来,大模型不用每次只确认一个字,而是可以一口气确认好几个字,速度自然大幅提升。
在这条"猜题+批改"的道路上,近年来出现了一种更激进的思路:让草稿模型不是一个字一个字地猜,而是一次性同时猜出一整个"块"的字,这就是所谓的"块级扩散模型"(diffusion-based draft model)。目前最先进的此类方法叫做DFlash,它通过把大模型的内部状态注入到草稿模型中,让草稿的质量大幅提升,成为该领域性能最强的方案。
然而,阿里巴巴AMAP的研究团队发现了DFlash乃至所有类似方法共同存在的一个盲点:它们在推理时,每次猜测的"块的大小"(即一次猜多少个字)是固定的,直接沿用训练时的设置。这就好比一个出租车司机无论路况如何,永远都以同一个挡位行驶——在高速公路上当然没问题,但在弯弯曲曲的山路上,这么干只会让乘客一路颠簸、油耗飙升。
这支团队的核心贡献,就是为这个问题找到了一个优雅的解法:他们开发了一套叫做**BlockPilot**的系统,让AI在推理时能够根据每个不同的输入,自动选择当前最合适的"挡位"(块大小),从而在"猜得多"和"猜得准"之间取得最佳平衡,最终在Qwen3-4B模型上实现了高达**4.20倍**的推理加速。
---
一、为什么"固定挡位"是个问题
回到出租车司机的比喻。AI在生成文字时,不同的问题难度差别相当大。如果你问它"1加1等于几",接下来的答案几乎是百分之百确定的,草稿模型可以大胆地一次猜出很长一段话,而且大概率全部猜对。但如果你让它"给我写一首关于秋天的诗",接下来的每一行都有无数种可能,草稿模型猜一大片反而容易猜错,导致大模型只能接受很短的一段,大量猜测工作付诸东流。
研究团队系统性地做了一个实验:他们拿出GSM8K(数学题)、MT-Bench(对话)、AIME24(竞赛数学)、MBPP(编程)、Alpaca(指令跟随)等多个代表性数据集,对每一道题分别尝试了各种不同的块大小,记录下哪个块大小能让"被接受的平均字数"(即验收长度τ)最高。这个"最佳块大小"就是他们眼中每道题的最优"挡位",记作B*。
统计结果相当有说服力。在Alpaca数据集上,高达94%的样本的最佳块大小并不是训练时固定使用的那个默认值B,而在GSM8K上这个比例也有66%。换句话说,大多数情况下,固定使用默认块大小实际上都不是最优解,只不过以前没有人注意到这一点,也没有人想着去改变它。
这个发现就好比你去超市买东西,收银员每次都硬要给你装进同一大小的袋子——有时候东西太少,袋子白白浪费;有时候东西太多,硬塞不进去还弄破袋子。真正的好做法是根据你买了多少东西,选一个最合适大小的袋子。
---
二、"挡位"虽然变,但变化有规律
发现了问题之后,研究团队马上面临一个新的难题:最优块大小既然因样本而异,难道我们要对每道题都穷举所有可能的块大小来测试吗?那样的计算量会比原本的推理还要多出几十倍,完全不现实。
幸运的是,数据给出了一个令人振奋的规律:虽然不同样本的最优块大小各有不同,但这些最优值并不是随机散布在整个数字轴上的。它们高度集中在训练时默认块大小B的附近,呈现出清晰的"局部性"结构。具体来说,研究团队发现,对于几乎所有样本,最优块大小都落在[B-3, B+3]这个仅有7个数字的小区间里。超出这个范围之后,验收长度会急剧下降,说明那些极端的块大小几乎从来都不是最优解。
从分布形状来看,最优块大小有两种典型模式:一种是以B为峰值的单峰分布,好像一座山丘,中间最高两边迅速降低;另一种是以B为中心的对称双峰分布,像两个相邻的小山包,但都还是紧靠着B。无论哪种情况,最优值都乖乖地待在B附近,很少有"离家出走"的情况。
这个发现的意义在于:它把一个看似无边无际的搜索问题,直接压缩成了一个极小的、结构清晰的分类问题。本来你可能以为最优块大小可以是1到几百之间的任意数字,现在你知道它几乎必然落在7个候选值里面。这就好比你在找一把丢失的钥匙,本以为它可能在整个城市的任何角落,后来发现它99%的概率就在你家的三个房间里——这时候问题就简单多了。
---
三、用"预感"来选挡位:BlockPilot的核心思路
既然问题已经变成了一个在7个候选值里选最优的小型分类任务,下一步就是:依据什么信息来做选择?
研究团队给出了一个精巧的答案。他们注意到,在大语言模型的工作流程里,有一个自然发生的环节叫做"预填充"(prefilling):当你把问题输入给模型时,模型会先把整个问题从头到尾看一遍,生成对输入的全面理解,并预测出下一个最可能出现的词的概率分布。这一步是所有推理都必须做的,不需要额外付出代价。
关键在于:这个"最后一个位置的预测概率分布"包含着相当丰富的信息。由于模型是通过注意力机制把整个问题从头看到尾的,最后这个位置的概率分布实际上是对整个问题的一种浓缩概括。如果这道题本身很有规律、答案很确定,这个概率分布就会非常"集中"(一个或几个词的概率特别高);如果这道题开放性很强、有很多可能的走向,概率分布就会很"分散"(很多词的概率差不多)。
这个"集中"还是"分散"的性质,恰好就能帮助预判:这道题适合用大块大块地猜(集中则预测稳定,可以大胆),还是应该保守地用小块猜(分散则不确定性高,猜多了容易出错)。
基于这个思路,BlockPilot的设计分为三个步骤。第一步,在模型完成预填充之后,直接提取最后一个位置的完整预测概率分布,把它作为当前这道题的"状态描述"。第二步,把这个概率分布输入进一个极其轻量的小型神经网络——一个只有两层的多层感知机(可以理解为一个简单的"打分器"),让它从7个候选块大小里挑出一个预计验收长度最高的选项。第三步,用这个选出的块大小来驱动后续整个推理过程,包括草稿生成和大模型验证。整个预测只发生一次,预测完成之后块大小就固定下来,不再反复调整。
这个过程就好像一个经验老道的厨师在开灶前先闻一下食材的气味:闻到非常浓郁有规律的香气,就知道这道菜简单,可以放心多备食材;闻到气味复杂多变,就知道这道菜难度高,要谨慎少量分批处理。整个判断只需要一瞬间,不会耽误正式开始烹饪。
值得一提的是,研究团队也尝试过只取概率分布里排名最高的前几个值(Top-k)作为输入,以减少信息量。但结果很糟糕:训练时准确率达到80%,但在新的测试数据上准确率只有10%,明显过拟合。说明完整的概率分布所携带的信息远比前几名更重要——它保留了整个词表上的细微差异,这些差异对判断"当前生成的不确定性有多高"至关重要。
---
四、如何训练这个"打分器"
有了设计思路,接下来就需要训练数据。问题是:每道题的"最优块大小"并不是现成标注好的,需要从头计算。
研究团队采用了一种"穷举标注"的方案。对于训练集里的每一道题,他们先跑一遍大模型的预填充,记录下最后位置的概率分布;然后分别用候选范围内的每一个块大小(即B-2、B-1、B、B+1、B+2这五个值,对应k=2的设置)来运行完整的推测解码过程,记录每种块大小对应的平均验收长度;最后把验收长度最高的那个块大小标为这道题的"正确答案"。
这样构造出来的数据集,每一条都是(概率分布,最优块大小)的配对,格式清晰,可以直接用来训练分类器。由于五种块大小之间的测试是相互独立的,可以并行运行,大大缩短了数据构造的时间。训练集来源于ShareGPT(多轮对话数据)、WSC(常识推理数据)、COPA(因果推理数据)等多个公开数据集,覆盖了对话、推理等多种场景。
训练本身非常简单:把数据集喂给那个两层的小网络,用标准的交叉熵损失(可以理解为"让模型对正确答案赋予更高的分数")来反复调整网络参数,直到它能够比较准确地从概率分布预测最优块大小。整个训练跑100个轮次,使用Adam优化器,学习率设为0.00001,网络的隐藏层宽度设为2048。
---
五、实验结果:四款大模型全面提速
研究团队在四款代表性大语言模型上进行了系统测试,分别是Qwen3-4B、Qwen3-8B、Llama-3.1-8B-Instruct以及Qwen3-Coder-30B-A3B(一个300亿参数的代码专用模型)。评测涵盖数学推理(GSM8K、MATH-500、AIME24)、代码生成(HumanEval、MBPP、SWE-Bench)和对话生成(MT-Bench)三大类任务,并分别在确定性解码(温度T=0)和随机采样(温度T=1)两种设置下进行测试。
拿Qwen3-4B来说,在T=0的设置下,BlockPilot的平均加速比达到4.17倍,平均验收长度为6.59个字符;在T=1的随机采样下,加速比进一步达到4.20倍,平均验收长度为5.92。相比之下,同等设置下最强的固定块大小方案DFlash(16)的最佳表现只有3.99倍(T=0)和3.80倍(T=1)。具体到单个数据集,BlockPilot在GSM8K上以4.76倍的加速比领先,在MATH-500上达到5.45倍,在HumanEval上达到4.74倍,各项基准测试全面超越所有对手。
Qwen3-8B的结果同样亮眼。在T=0时平均加速比4.66倍,在T=1时达到3.94倍,同样是所有方法里的最优。值得关注的是,在某些数据集上的提升幅度相当显著——在AIME24竞赛数学上,BlockPilot以6.16倍的加速比远超DFlash(16)的5.57倍。
在Llama-3.1-8B-Instruct上,BlockPilot在T=0时平均加速3.25倍,在T=1时平均加速2.40倍,两项均好于所有DFlash固定块大小变体。特别是在T=1、AIME24这个最难的组合下,标准DFlash方法甚至出现了慢于自回归基准(加速比低于1)的情况,而BlockPilot依然维持了1.48倍的正向加速,说明自适应选择在困难场景下的鲁棒性更强。
在Qwen3-Coder-30B-A3B这个大体量代码模型上,BlockPilot在T=0时平均加速4.12倍,在T=1时达到3.95倍,同样是最优表现。特别是在HumanEval和MBPP这两个代码生成基准上,BlockPilot的验收长度分别达到9.07和7.80,远超其他方法。
一个普遍的观察是:DFlash(32)(块大小固定为32,远大于训练时的块大小)的表现往往不如DFlash(16),说明块大小并不是越大越好。太大的块虽然"野心勃勃"地一次猜很多,但猜对的比例急剧下降,最终吞吐量反而降低。BlockPilot通过自适应选择,恰恰能规避这种"贪多嚼不烂"的问题。
---
六、这个小网络到底有多轻巧
一个自然的疑问是:为这套推理系统增加一个额外的"打分器",会不会显著增加计算开销?
数据给出了明确的回答。研究团队对比了预测器和主干模型的资源占用:Qwen3-4B的推理延迟约为183毫秒,而块大小预测器的延迟仅为7.34毫秒,占比约4%。在内存方面,Qwen3-4B需要约8.62GB显存,预测器只额外占用0.62GB。预测器的参数量仅约0.32亿,远小于主干模型的数十亿参数。
更重要的是,这个预测只发生一次——在预填充结束之后跑一下,之后整个推理过程中块大小就不再变化,所以这7毫秒的开销被整个推理过程摊薄,实际上对总体速度的影响微乎其微。从绝对收益来看,这7毫秒换来的是平均验收长度从6.31提升到6.59(T=0下的Qwen3-4B),加速比从3.99倍提升到4.17倍,这笔账算下来非常划算。
---
七、细节决定成败:消融实验揭示的设计智慧
为了弄清楚BlockPilot里每个设计决策究竟有多重要,研究团队做了一系列"如果换一种做法会怎样"的对比实验,这在学术界叫做消融研究。
关于网络结构的选择,团队发现把隐藏层宽度从1024扩大到2048,性能有明显提升;但继续扩大到4096几乎没有额外收益,说明2048已经足够捕捉从概率分布到最优块大小的映射关系。在网络深度方面,两层比一层稍好,三层则没有进一步改善,在某些数据集上还略有下降——这说明这个分类任务并不复杂,不需要深层网络来"过度思考"。
关于候选范围k的选择,团队测试了k=1、k=2、k=3三种设置。k=1时搜索范围太窄,遗漏了部分本可选到的更优块大小;k=2时性能最好,在GSM8K和HumanEval上都表现最优;k=3时性能反而有所下滑,因为候选集变大了,分类难度增加,预测准确率下降。因此最终选择k=2,对应候选集为{B-2, B-1, B, B+1, B+2},共5个选项。
关于输入如何处理的问题,研究团队对比了三种方案:直接使用原始概率分布、对概率做归一化处理、以及对概率做softmax变换。结果显示,直接使用原始概率分布的效果最好,归一化和softmax都会使性能有不同程度的下降。这说明原始分布中那些绝对概率值的大小本身就是有效信息——如果最高概率是0.9,说明模型非常确定;如果最高概率只有0.3,说明模型在多个候选之间犹豫不决。归一化和softmax会抹去这种绝对尺度信息,导致判断依据变得不那么充分。
---
八、理论上为什么这套方案是合理的
研究团队不仅做了实验,还从理论上论证了BlockPilot的合理性。这部分内容相对抽象,但可以用直观的方式来理解。
首先,他们从一个叫做"前缀存活过程"的角度来分析验收长度。可以把大模型验证草稿token的过程,想象成一排待审查的士兵一个个通过长官检阅。每位士兵被淘汰的概率各不相同,而一旦某位士兵被淘汰,后面的士兵就全部不再被考虑。平均能通过多少士兵,就取决于每一位士兵各自的通过概率的连乘积。这个"通过概率的连乘"就是所谓的前缀存活概率。
接下来,研究团队分析了块大小如何影响这个连乘结果。他们指出,每个位置的接受概率可以分解为两部分:一部分反映这道题本身的"可预测性"(记作γ),另一部分反映当前使用的块大小与训练时块大小之间的"匹配程度"(记作r(b,B))。可预测性γ因题而异:数学计算题答案确定,γ高;开放性对话题答案发散,γ低。匹配程度r(b,B)则被建模为一个以B为中心的高斯衰减函数:块大小越靠近训练时的B,r越接近1;偏离越远,r越接近0。
把这两部分代入验收长度的公式,会得到一个关键结论:最优块大小一定集中在训练块大小B的附近,而具体集中在哪里,则取决于γ(可预测性)的高低。这从数学上证明了两件事:其一,最优块大小确实具有局部性(所以才能限制到7个候选值里);其二,不同样本的γ不同,所以最优块大小确实因样本而异,固定块大小策略必然是次优的。
另外,研究团队还分析了"万一预测错了怎么办"的问题。他们推导出,验收长度的损失与预测出来的块大小和真实最优块大小之间的距离成正比。这意味着哪怕没有完全猜对,只要猜到的块大小和最优值相差不远,损失就会很小。结合候选范围只有5个值的现实,这进一步说明一个轻量级的预测器完全足够胜任这项任务,不需要一个大型的专门模型来解决。
---
归根结底,BlockPilot做的事情说起来并不复杂:它发现了一个长期被忽视的问题(推测解码的块大小不该固定),找到了一个规律(最优值集中在训练块大小附近),设计了一个简单有效的解法(用预填充后的概率分布训练一个轻量分类器),并用大量实验证明了这套方案在多个模型和多种任务上都管用。
对于普通用户来说,这项研究意味着:未来当你使用基于大模型的应用——无论是AI聊天助手、代码补全工具还是数学解题器——它的响应速度可能会比现在快三到四倍,而输出的内容质量却丝毫不会打折扣(因为最终的生成仍然由大模型把关,推测解码本质上是无损加速)。这对于那些需要实时互动的场景,例如代码开发辅助或者在线教学,体验提升会相当明显。
当然,这项研究也有一个坦诚指出的局限性:对于特别大的模型(如300亿参数级别),构建训练数据时需要对每个样本跑5次完整的推测解码(对应5个候选块大小),每次大约5秒,加起来大约25秒一个样本,数据构建阶段的计算成本不算低廉。不过团队也指出,这个开销只在离线数据准备阶段发生一次,训练和推理阶段不受影响,未来还可以通过启发式剪枝、早停等策略进一步优化。
对于那些对这个方向感兴趣的读者,可以进一步思考这样一个问题:既然块大小可以自适应调整,那么草稿生成的步数(即扩散步骤数)是否同样应该自适应?或者验证策略本身是否也有优化空间?这些问题或许会是这个领域下一步值得探索的方向。完整论文可通过arXiv编号2606.31315查阅。
---
Q&A
Q1:BlockPilot是用来做什么的,和普通大模型推理有什么区别?
A:BlockPilot是一套专门用于加速大语言模型推理的系统,它建立在"推测解码"技术之上。普通的大模型推理每次只能生成一个字,而推测解码会先用一个小模型批量猜测多个字,再让大模型一次性检查,从而加快速度。BlockPilot的创新在于,它会根据每道题的具体特点,自动决定每次猜多少个字最合适,而不是像传统方法那样固定猜同样数量的字,从而在Qwen3-4B上实现了4.20倍的加速。
Q2:BlockPilot自适应选择块大小的依据是什么?
A:BlockPilot在大模型读完用户输入之后,会提取出模型对下一个词的预测概率分布,这个分布可以反映当前任务有多"确定"。确定性高的任务(比如数学计算)概率集中,适合一次猜更多字;开放性强的任务(比如写诗)概率分散,适合保守一次猜少一些。BlockPilot用一个两层的小型神经网络,把这个概率分布输入进去,从5个候选块大小里选出预计效果最好的那个,整个过程只需要约7毫秒。
Q3:BlockPilot会不会影响大模型输出的质量或准确性?
A:不会。BlockPilot只改变了草稿生成的策略,最终的输出依然经过大模型完整验证,不符合大模型判断的草稿字符会被截断丢弃,只有大模型认可的部分才会保留。因此,从用户角度看配资官网开户,最终生成的内容与原来的大模型完全一致,质量和准确性没有任何损失,加速是完全无损的。
涨配资提示:文章来自网络,不代表本站观点。