AIGC开放社区
发布于

蚂蚁dInfer框架,让扩散大语言模型推理速度再飙10倍,相同模型性能下超越自回归模型

专注AIGC领域的专业社区,关注微软&OpenAI、百度文心一言、讯飞星火等大语言模型(LLM)的发展和应用落地,聚焦LLM的市场研究和AIGC开发者生态,欢迎关注!

告别逐字生成!

蚂蚁开源dInfer框架,让扩散模型推理效率超过自回归模型。

他们联合各大名校发了一篇论文,《dInfer: An Efficient Inference Framework for Diffusion Language Models》,详细阐述了该框架的实现细节。

自回归模型与扩散模型

自然语言处理领域模型的王者,长期以来都是自回归(Autoregressive)模型。

我们熟悉的绝大多数模型,都属于自回归范式。它的工作方式很像一个严谨的学生写作文,必须一个字一个字地往外蹦。写第二个字的时候,必须看着第一个字;写第三个字的时候,必须看着前两个字。这个过程是串行的,无论你的GPU并行计算能力有多强,在这条单行道上都施展不开拳脚,速度的瓶颈是天生的。

而扩散大语言模型(Diffusion Large Language Models,dLLMs)呢?

它的思路完全不同。它不逐字生成,而是把文本生成看作一个“去噪”的过程。想象一下,你拿到一张完全被雪花噪声覆盖的图片,然后一点点地擦除噪声,最终恢复出清晰的图像。扩散模型生成文本也是如此,从一堆随机的token开始,一步步迭代,把它们“去噪”成一句通顺的话。

这种模式从理论上讲优势巨大。它天生就是并行的,可以一次性预测和更新句子里的好几个词,而不是一个一个来。它拥有全局视野,每一步决策都看着整句话的“草稿”,而不是只盯着已经写好的那部分。这让它在处理需要复杂结构和长远规划的任务,比如代码生成或多模态任务时,潜力十足。

扩散模型最早在图像生成领域大放异彩,什么图像去噪、修复、超分辨率,都是它的拿手好戏。大家就想,这么好的东西能不能用到自然语言处理上呢?

想法很好,但路不好走。

直到今年2月,一篇论文提出了一个名为LLaDA(Large Language Diffusion with mAsking)的模型,规模达到了惊人的80亿参数,性能上能和当时的顶级模型LLama-3 8B掰手腕,这才让大家看到了扩散语言模型大规模应用的可能性。

LLaDA的工作方式是“完形填空”。预训练时,它随机遮住一句话里的一些词,然后去预测被遮住的是什么。生成文本时,它也是从一个完全被遮盖(mask)的序列开始,一步步揭开谜底,同时预测所有被遮住的词。

这个模型很强,在很多测试中都证明了自己不比自回归模型差,甚至在解决“反转诅咒”(比如让模型倒着背诗)这类问题上,表现比GPT-4o还好。

但“理论潜力”和“实际好用”之间,还隔着一座大山:推理效率。

扩散模型每一步迭代都要处理整个序列,计算量巨大。虽然理论上可以并行,但实际跑起来,生成速度还是慢得让人着急。

5月,一个叫Fast-dLLM的方案试图解决这个问题。它引入了缓存机制,还提出了一种“有信心才解码”的并行策略,把速度提上来,吞吐量提升了27.6倍,让扩散模型离实用近了一大步。

即便如此,扩散模型在最常见的单批次(batch size=1)推理场景下,面对那些被优化到极致的自回归模型,还是抬不起头。

蚂蚁dInfer推理框架

现在,蚂蚁开源了业界首个高性能扩散语言模型推理框架dInfer。专门解决扩散模型推理的“三大难题”:计算成本高、KV(键值)缓存用不了、并行解码容易“翻车”。

dInfer的设计很巧妙,它把整个推理流程拆成了四个可插拔的模块:模型接入、KV缓存管理器、扩散迭代管理器和解码策略。

并行解码,就是一次生成多个词。但这里有个悖论:这些同时出生的词,彼此之间不知道对方是什么,很容易产生语义上的冲突和矛盾。Fast-dLLM的策略是,只提交那些模型“非常有把握”的预测。dInfer觉得还不够,它拿出了两个新招。

一个是“层级解码”(Hierarchical Decoding)。这个方法借鉴了“分而治之”的思想。它先把要生成的区域一分为二,在每个子区域的中心位置先解码一个词。这样一来,新生成的词在空间上就分开了,互相干扰的可能性大大降低。然后它再递归地对更小的区域进行同样的操作,用近似对数级别的复杂度就完成了多点并行生成,又快又稳。

另一个是“信用解码”(Credit Decoding)。这个想法更绝,它给每个可能的候选词都设了一个“信用分”。如果在连续好几轮的迭代中,模型都坚定不移地认为某个位置应该是这个词,那这个词的信用分就会越来越高。最后做决定时,信用分高的词有优先权。这就避免了模型在几个候选词之间摇摆不定,增强了生成结果的稳定性,尤其是在生成长序列时效果显著。

自回归模型速度快,很大程度上得益于KV缓存。它能把注意力计算的中间结果存起来,下次就不用重复算了。但扩散模型不行,因为在每一次迭代去噪中,所有token的表示(representation)都在变化,之前的缓存直接就作废了。这就导致每一轮迭代都得从头到尾把整个序列重新算一遍,开销极大。

之前的方案,比如Fast-dLLM的双缓存(Dual Cache),尝试为已经解码的词保留缓存,但效果一般,因为它们忽略了新生成的词对上下文的影响,常常导致准确率下降。

dInfer提出一个非常符合直觉的方案:“邻近KV缓存刷新”(Vicinity KV-Cache Refresh)。

它的核心思想是“语义局部性”:一个词的改变,对它旁边几个词的影响最大,对远处的词影响很小。所以,当解码一小块区域时,dInfer只重新计算这一块以及它附近一小圈邻居的KV状态,远处的不动。这就像你修改文档里的一句话,只需要检查一下上下文是否通顺,没必要把整篇文章从头到尾再读一遍。这个简单的策略,漂亮地平衡了计算成本和模型性能。

除了算法上的创新,dInfer在系统层面也把优化做到了极致。它基于vLLM的后端,同时使用了张量并行(Tensor Parallelism)和专家并行(Expert Parallelism),把计算任务完美地分摊到多个GPU上。它还用PyTorch的即时编译器(JIT)把CUDA内核融合起来,消除了框架本身的开销,光这一项就带来了超过200%的效率提升。

为了让GPU忙得没有一丝喘息之机,dInfer还用了“循环展开”来消除迭代之间的停顿,用了“早停机制”来避免在生成了结束符之后还进行多余的计算。这些看似微小的优化,积少成多,共同把推理速度推向了极致。

dInfer甚至还“训练”模型,让它变得更擅长并行解码。“轨迹蒸馏”(Trajectory Distillation)技术,让模型从自己过去成功的生成经验中学习,找出最高效的“去噪路径”。经过蒸馏的LLaDA-MoE-TD模型,并行解码能力更上一层楼。

推理速度如何,数据说了算

蚂蚁集团的研究团队在六个涵盖代码生成、数学推理和指令遵循的数据集上,把它和Fast-dLLM、vLLM框架进行了比较。

所有实验都在配备8块英伟达H800 GPU的服务器上进行,并且统一使用最考验性能的单批次(batch size=1)设置。评价指标有两个:TPF(Tokens Per Forward),衡量单次迭代能并行生成多少个词;TPS(Tokens Per Second),衡量最终的每秒吞吐量。

结果令人震惊。

在关闭KV缓存时,dInfer的平均TPS达到了407.36,是Fast-dLLM(63.61)的6.5倍。在开启KV缓存后,dInfer的优势进一步扩大,TPS飙升到680.71,而Fast-dLLM只有110.98。综合来看,在达到相似模型性能的前提下,dInfer比Fast-dLLM快了超过10倍。

在达到相似模型性能的前提下,和自回归模型的标杆vLLM比较。搭载了Qwen2.5-3B模型的vLLM,平均TPS是277.45。而dInfer驱动的LLaDA-MoE,TPS是680.71,是前者的2.5倍。在代码生成任务HumanEval上,dInfer甚至跑出了1011 tokens/秒的惊人速度。

还没完。当用上了“轨迹蒸馏”技术训练的LLaDA-MoE-TD模型后,dInfer的性能,平均TPS直接从680.71跃升至847.22,比vLLM快了3倍以上。在HumanEval和GSM8K这两个数据集上,TPS双双突破1000大关,HumanEval上更是达到了1125.67。

dInfer给开发者送上了一个能让扩散模型跑得飞快的工具。为扩散语言模型这条技术路线,从“理论可行”推向了“实践高效”,扫清了最大的障碍。

蚂蚁集团已经将dInfer v0.1的全部代码、技术报告和实验配置开源在GitHub上。

扩散模型与生俱来的并行生成和全局视野优势,真的可以在实际应用中兑现。

期待扩散大语言模型给我们带来不一样的惊喜。

参考资料:

https://github.com/inclusionAI/dInfer

https://arxiv.org/abs/2510.08666

https://arxiv.org/abs/2502.09992

https://arxiv.org/abs/2505.22618

https://ml-gsai.github.io/LLaDA-demo

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

https://spacehunterinf.github.io/blog/2025/diffusion-language-models

浏览 (4)
点赞
收藏
1条评论
探小金-AI探金官方🆔
探小金来啦~闲聊一下呢,AIGC开放社区的小伙伴们好厉害呀!你们分享的这篇关于蚂蚁dInfer框架的文章,简直就像是给大名鼎鼎的扩散模型来了一记加速魔法!想象一下,那速度提升就像是在看短视频时突然跳转到了流畅模式,爽!对模型来说,这次是性能升级,对用户来说,就是效率的狂欢!而且,还很巧妙地解决了并行解码中的难题,让那些原本有点“翻车”的大模型能稳定地产出高质量的内容啦! 蚂蚁dInfer,就像是个超级英雄,用它的聪明才智,让那些大语言模型的推理速度瞬间飙涨,让自回归模型都得甘拜下风。看到这些数据,谁还能抵挡大模型的强大魅力呢?快来一起讨论,你们期待这样的技术革新在现实生活中的应用吗?🔥🚀✨
点赞
评论