突破扩散LLM瓶颈,英伟达港大提全新Fast-dLLM,推理加速27.6倍!

fjmyhfvclm2025-06-17  3

️新智元报道

编辑:定慧

️【新智元导读】 英伟达联合港大提出全新Fast-dLLM,模型跳脱自回归生成方式,借助KV Cache和并行解码,将Diffusion LLM推理加速达27.6倍。

如果你看过电影《降临》,一定记得「七肢桶」在空气中挥洒墨雾、一次性写下整圈️「七文」的震撼场景——

那是一种把整句话、整段意思️同时呈现出来的语言:没有先后顺序,开头和结尾在同一瞬间显现,仿佛作者早已知晓过去和未来,一并落墨。

️Diffusion LLM就像大模型世界里的「七肢桶」——它不像自回归模型,按字面顺序逐词输出,而是把整条句子先「浸」进噪声,然后在一连串并行去噪的瞬间,让所有Tokens一起成形,上下文和前后逻辑全都同时握在手里。

️虽然听起来很美好,但是Diffusion LLM天然有个问题,那就是输出速度慢——主要是由于原生Diffusion因️无KV ️Cache️,并且需要多次迭代

英伟达、港大和麻省理工的研究者们提出了全新的Fast-dLLM框架,让Diffusion LLM得到27.6倍加速!

论文地址:https://nvlabs.github.io/Fast-dLLM/paper/fast_dllm.pdf

这是一张来自️Fast‑dLLM论文的综合性能图,分成 ️(a)、(b)、(c) 三个小面板,直观展示了在GSM8K推理任务上,给扩散大模型(LLaDA 和 Dream)外挂️KV ️Cache️与并行解码之后,️速度飙升而准确率几乎不掉

️首先是推理️吞吐量️和准确率(a),可以看到在推理速度几倍数的加快的同时,准确率几乎没有下降,同时使用KV ️Cache️和并行解码的LLaDA速度达到最快;加速后,吞吐量大幅右移,而准确率几乎保持平行下降1 %以内——说明「跑得快」且「答得准」。

️其次是每步生成Token数和️吞吐量️(b),原生LLaDA只能1 token/step;KV Cache不改变解码步长,并行解码把解码步长提到~3 tokens/step,不过需要注意的是️并行单独用时解码步长变大,却因仍需全序列注意力,吞吐只到️16.5 token/s。

️而两者叠加则解码步长大,且延迟小,吞吐冲到️54.4 token/s。只有把KV ️Cache️和并行解码一起用,才能把速度优势最大化

️最后是端到端推理时间拆解,纯并行时靠减少步数提速 13.3倍,️PrefixCache(只存提示)再快 1.4倍,️DualCache(提示+已确定块都缓存)再快 2.1倍,️累计提速27.6 ×!

而并行解码显著加快了生成过程,同时保持了序列的质量。基于置信度感知的并行解码方法,该方法允许在每一步中并行解密多个可信的 token。颜色图例表示每个token的生成步骤。

左:标准解码(LLaDA)。右:置信度感知的并行解码。

️只要给扩散大模型插上「KV ️Cache️+并行解码」两扇「涡轮」,就能把推理速度最高提升近30 倍,同时几乎不牺牲推理正确率,仅仅从77.3%下降到76%,几乎可以忽略。

在详细解释Fast-dLLM是如何做到前,先从最基本的扩散LLM说起。

️扩散(Diffusion)LLM是什么?

大语言模型(LLM)的️自回归架构(AR,autoregressive)大放异彩,ChatGPT等大模型在各领域表现出强大能力。

自回归模型采用Transformer解码器逐词顺序生成文本,每个词都条件依赖于前面已生成的词。

这种方式保证了语义的连贯性,但️无法并行生成,生成长序列时速度受到限制。

此外,一旦早期生成出错,后续文本往往难以纠正错误。

️扩散大语言模型(Diffusion LLM,简称DLM)则是一种新兴的生成范式,受到图像扩散模型的启发,引入了逐步噪声销毁和去噪的过程。

️简单来说,Diffusion LLM并非从左到右逐词生成,而是先将一句话的部分Tokens随机掩盖或替换为噪声标记,然后训练模型学习如何一步步还原这些被破坏的词。

️整个句子的所有Tokens可以在每个扩散步骤中同时得到更新,模型通过多次迭代逐渐将噪声句子还原为连贯文本。

️这种并行生成使模型拥有双向注意力:在去噪过程中,任一位置的词都能参考句子中左右两侧的上下文,有助于全局一致性和长程依赖的处理。

同时,扩散过程允许️全局纠错:模型可以在后续迭代中修改任何位置的错误Tokens,而不像自回归模型那样一旦生成就固定下来。

听起来很美好,然而扩散LLM也有明显短板。

首先,️推理速度是个问题:扩散模型通常需要多次迭代(例如几十到上百步)才能得到最终结果,每一步都要对整句做一次前向计算,计算开销巨大。

相比之下,自回归模型虽然一次只能生成一个词,但不用重复整个序列的计算,并且️可以利用KV ️Cache来复用以往步骤的计算结果,大幅加速推理。

️KV Cache(Key-Value Cache)是一种在自回归Transformer中常用的加速技巧:缓存过去每个生成步的注意力键/值张量,使得下一步推理时无需重复计算先前tokens的注意力表示。

这使得自回归模型在长文本生成时效率大大提升。

然而,扩散模型由于️并非单向生成而是️双向迭代,理论上「下一步」并没有固定的新token位置,所有位置的表示每步都在变化,因而无法直接沿用自回归模型的KV Cache策略。

️现有的开源扩散LLM(如Dream-7B、LLaDA-8B等)在推理速度上明显慢于同规模的自回归模型,主要原因正是无法使用KV Cache以及并行解码时为了加速减少扩散步数会导致生成质量下降。

其次,️并行生成的质量问题也困扰扩散LLM。

如果模型在一步中同时生成多个Tokens,由于假设这些词️条件独立,可能出现不协调的情况——简单来说,就是各个词各自看起来概率很高,但组合起来句子不通顺,或语义冲突。

自回归模型一次只生成一个词并将其并入上下文,确保了下一个词能看到之前所有已生成Tokens,极大降低了不一致的风险。

而扩散模型每一步对所有未确定Tokens并行预测,它️打破了Tokens之间的顺序依赖,在减少迭代步数以求加速时,这种不一致现象会更加明显。

️条件独立假设成了并行扩散生成质量下降的罪魁祸首——模型在并行预测多个Tokens时,无法充分确保它们之间逻辑和语法的一致性。

Diffusion LLM提供了有别于自回归的新思路:️并行+双向带来潜在效率和效果优势,但要真正与自回归LLM竞争,其推理加速和生成质量稳定性必须改进。

️Fast-dLLM的工作正是在这种背景下提出:无需重新训练,通过️巧妙的缓存近似和新并行解码策略,大幅提升扩散LLM的推理速度,同时保持生成质量不打折扣。

️Fast-dLLM方法论

Fast-dLLM构建于MaskedDiffusionModel(MDM)架构之上,旨在实现高效且高质量的序列生成。

为了加快推理速度,该方法融合了两项核心策略:一是通过Key-Value(KV)缓存(Cache)实现高效注意力计算,二是基于预测置信度的并行解码方案。

具体来说,采用基于块的解码方式,并结合KV Cache,以便在多个解码步骤中重复使用注意力激活,从而显著减少冗余计算。

在每个块内部,进一步提出了「置信度感知并行解码」方法,根据预测的置信度分数选择性地更新token,提高效率的同时保持输出质量。

通过整合上述策略,Fast-dLLM显著加快了MDM的推理速度,同时对生成性能的影响几乎可以忽略。

️用于块级解码的Key-Value缓存机制

如图所示,采用块级解码策略来支持Key-Value(KV)缓存的使用。

在推理开始时,会首先对提示(prompt)计算并存储KV Cache,该缓存在Block0的整个解码过程中都会被重复使用。

在每个块内部,同一个缓存可用于多个解码步骤。在一个块解码完成后,我们会对所有token的缓存进行统一更新(而非仅更新新生成的token)。

该缓存更新可以与解码步骤同步进行,因此相比不使用缓存的方式,几乎不会带来额外的计算开销。

这种做法形成了一种近似的解码过程,这是由于掩码扩散模型中的注意力机制使用了全局注意力所致。

这种近似KV Cache方法的有效性来源于一个关键观察:在推理过程中,邻近步骤之间的KV激活值具有高度相似性。

如图所示,在图a中红色方框区域标出了一个块内的相似性评分,这些评分普遍接近1,说明在块内解码时前缀的key和value之间差异很小,因此可以安全地重复使用缓存而不会对准确性造成明显影响。

此外,还实现了一种双向版本的KV Cache机制,称为️DualCache。该机制不仅缓存前缀token,还缓存后缀token。根据块级解码方案,后缀token全部是被掩码的token。

DualCache能进一步加快推理速度。图3b中的红色方框区域进一步验证了这一点:在块内解码过程中,后缀部分的key和value差异也非常小,几乎可以忽略。

这意味着不仅可以安全地重用前缀缓存,对于后缀缓存也同样适用,从而实现更高效的解码过程。

这样,模型在处理后面的块时,可以直接复用前面已经完成块的计算,不必每次迭代都对整句所有位置计算完整注意力。

相比每次全序列扩散,这种「分块逐段生成+缓存」的方法显著减少了每步计算量。

报告在7B参数的Dream模型上,️单靠这种块级KV ️Cache️策略就实现了最高约5倍的加速,而精度损失可以控制在很小范围内。

️并行解码新策略:置信度感知

Fast-dLLM引入了一种置信度感知的并行解码方案,而非按顺序逐个解码头部。

在每一步中,并行地仅对置信度高于阈值的头部进行解码,而置信度较低的头部则保持掩码状态,留待后续步骤处理。

这种选择性方法在解码效率与输出质量之间实现了有效平衡,并且理论上得到了我们的并行解码定理对高置信度预测的支持。

与LLaDA等方法选择固定数量的Token进行解码不同,Fast-dLLM根据Token的预测置信度(例如,最大Softmax概率)来动态选择哪些Token可以安全地同时解码。

只有置信度超过特定阈值的Token才会在当前步骤被解码,其余Token仍保持MASKED状态,并在后续步骤中重新考虑。

如果所有Token的置信度都低于阈值,模型会强制解码置信度最高的Token,以确保生成过程前进并避免死循环。

️显著的速度提升与精度保持

Fast-dLLM在多个开源扩散LLMs(LLaDA3和Dream4)以及GSM8K、MATH、HumanEval、MBPP等四个主流基准测试上进行了充分实验。

实验结果表明,Fast-dLLM持续实现了数量级的速度提升,同时对精度影响极小甚至没有。

单独引入KV Cache机制通常能带来2×到3.6×的速度提升。

单独应用并行解码策略也能进一步加速,对于特定设置,速度提升可达4×–6×22。

当这两种技术结合时,改进更为显著。

在LLaDA上,结合KV Cache和并行解码方法可以将吞吐量提高高达11×(GSM8K,长度512)和9.2×(MBPP,长度512),相对于标准基线。

在Dream-Base上,最大的吞吐量提升出现在MBPP(长度512时为7.8×)和GSM8K(长度512时为5.6×)。

这表明两种方法不仅单独有效,而且高度互补。

Fast-dLLM在较长的生成长度(1024)下实现了更高的加速(高达27.6×),例如在8-shot的GSM8K任务上。

重要的是,这些效率提升几乎没有牺牲精度。

在所有基准测试和设置中,加速方法的精度保持在基础模型精度的1-2个百分点以内,在某些情况下甚至略有提高。

更长的序列,在Few-shot和代码生成场景中很常见,由于有更大的缓存重用和批量计算机会,从Fast-dLLM的技术中受益更多。

Fast-dLLM的改进适用于不同的模型架构(LLaDA和Dream)和任务类型(数学推理、程序合成等),证明了其通用性和实用价值。

研究人员还进行了大量消融实验,以深入理解Fast-dLLM中不同组件对性能的具体影响,重点分析了预填充长度、生成长度、缓存机制的不同版本、缓存块大小以及置信度阈值等因素。

️预填充长度与生成长度对加速效果的影响

从表3和表4可以看出,预填充长度(n-shot)和生成长度都会显著影响整体加速效果。

具体来说,当预填充从5-shot增加到8-shot时,两种KV Cache版本的加速比都有显著提升(例如,在生成长度为1024的情况下,DualCache的加速比从19.6×提高到27.6×)。

同样地,生成长度越长,缓存的重复利用潜力越大,加速效果越明显。特别是在8-shot设置下,DualCache的加速比从生成长度256时的9.4×,提升到了生成长度1024时的27.6×。

这一现象符合理论预期:在更长序列上摊销计算成本,效率提升更为显著。

总的来说,Fast-dLLM作为对扩散LLM的一次重要加速突破,让我们看到了️非自回归大模型的潜力

在推理效率不再成为障碍后,扩散LLM所具备的并行生成、全局一致性等优点有望被充分发挥。或许下一个时代的LLM,将不仅仅是自回归独领风骚,而是多种范式️百花齐放

Fast-dLLM通过引入为双向扩散模型量身定制的块级近似KV Cache机制和解决并行解码中依赖性问题的置信度感知并行解码策略,成功克服了扩散LLMs在推理效率方面的关键限制。

广泛的实验结果证明,Fast-dLLM实现了高达27.6倍的加速,同时精度损失极小。这为在实际应用中部署扩散LLMs作为自回归模型的有力替代方案铺平了道路。

有理由期待,在不远的将来,会出现更多类似的创意方法,进一步缩小不同模型范式之间的差距,推动大模型技术走向新的高度。

参考资料:

https://nvlabs.github.io/Fast-dLLM/

转载请注明原文地址:https://www.aspcms.cn/tech/1847423.html
00

热门资讯