dLLM 的最后一公里问题
扩散语言模型(dLLM)是过去一年自回归路线之外最受关注的技术分支:不做逐 token 自回归,而是对整段文本并行去噪,天然带并行生成的想象空间。它的吸引力很直接——一次前向可以精炼多个 token,理论上绕开了自回归模型逐 token 生成的串行天花板;双向注意力还带来一个自回归模型做不到的能力:先生成结尾再补开头、改中间不动两头,在编辑改写和结构化填充场景里几乎是量身定做。
但部署侧一直有个尴尬——推理太慢、显存太贵。根因有两条:dLLM 的双向注意力加块级去噪结构让传统 KV 缓存难以直接复用(去噪轮次之间序列内容持续变化,缓存的有效性天然打折);已有的加速工作要么只优化缓存、要么只优化并行解码,两块各自为政,叠加使用时反而暴露出新的瓶颈。
9 月 22 日提交的 Flash-dLLM(arXiv 2609.26796)把这两块拧成了一股绳,而且免训练。
第一步:把瓶颈定位对
Flash-dLLM 做的第一件事是重新定位瓶颈,这一步比优化本身更有信息量。作者的结论是:一旦启用 KV 缓存,dLLM 推理的主导瓶颈就从算力转移到了 GPU 显存 IO。直觉不难理解——缓存复用意味着大量显存读写,并行 token 验证意味着每步要搬更多的数据,两者叠加时,冗余的显存搬运量被急剧放大,计算单元反而在等数据。
这个定位延续了 FlashAttention 时代确立的经典判断:省的不是计算,是数据搬家。对做过推理优化的团队来说,这条经验不陌生,但把它明确验证到 dLLM 场景,等于给整个 dLLM 推理优化社区指了路——后续的优化工作应该优先盯着显存 IO,而不是继续堆算子算力。
两个核心设计
设计一:IO 感知的融合 KV 缓存内核。 对策是一个 IO 感知的融合内核,把缓存读写与计算在算子层面融合,直接削减显存搬运次数。融合的关键在于识别哪些缓存读写是冗余的:去噪过程中大量中间状态被写回显存、下一轮又原样读回,这些往返在融合算子里被就地消化。结果是同样的计算量、更少的显存流量,在显存带宽受限的卡上收益最明显。
设计二:缓存驱动的草稿验证解码。 传统投机解码需要辅助草稿模型,而 Flash-dLLM 提出 KV 缓存驱动的草稿验证策略:dLLM 自己既当草稿器又当验证器,缓存既是加速手段又是两种角色之间的信息媒介,一次前向里草拟多个 token 并行验证。不需要辅助模型,意味着显存占用更低、部署拓扑更简单,还顺便解决了草稿模型与目标模型分布不匹配的经典难题——因为草稿和验证本来就是同一个模型。
实验结果
在数学推理与代码生成两类基准上的结果:
| 对比项 | GSM8K | HumanEval |
|---|---|---|
| 相对 Elastic-Cache 加速比 | 5.1 倍 | 11.0 倍 |
| 显存效率 | 同步提升 | 同步提升 |
| 生成质量 | 保持 | 保持 |
| 训练需求 | 免训练 | 免训练 |
论文还特别强调了扩展性:序列更长、批量更大时,Flash-dLLM 的优势会进一步放大——因为显存 IO 压力随长度与批量的增长快于算力压力,IO 优化在天平重的那一端收益更大。这个特性对生产环境尤其重要:线上服务通常要扛批量并发,基准测试里单请求测不出来的差距,会在真实负载下被拉开。
与既有方法的代差
在 Flash-dLLM 之前,dLLM 加速的代表性路线各有取舍:有的做块级并行但缓存利用率低,有的像 Elastic-Cache 这样做弹性缓存分配但在 IO 层面留了大量冗余。Flash-dLLM 的定位是把这些割裂的优化统一起来——缓存机制是地基,解码策略盖在地基上,两者针对的是同一个瓶颈的不同侧面。这也是为什么它能同时拿到速度与显存效率的双重领先,而以往的方法往往是一侧改善、另一侧恶化。对工程团队的实际含义是:如果你在做 dLLM 部署选型,比较对象应该直接换成 Flash-dLLM 与它的后续版本,而不是历史方法。
工程视角:这篇论文改变了什么
对三类团队有直接价值。做 dLLM 本地部署的团队:此前 dLLM 的单 token 成本与自回归模型差距太大,Flash-dLLM 一下收窄 5 到 11 倍,长文本与高并发场景的可行性重估。做推理内核的团队:论文把「缓存复用与并行验证的联合 IO 分析」这个此前没人系统做的空白填上了,融合内核的思路可以平移到自回归栈。做模型选型的团队:dLLM 在编辑改写、结构化填充、可控生成等场景的优势本来就成立,效率短板补上后,选型矩阵里应该给它留一个正式位置。
冷静的一面也要说:实验集中在数学推理与代码生成两类基准,开放域对话与超长上下文场景的表现还需更多第三方复现;此外方法与 dLLM 的块级去噪结构深度耦合,自回归模型无法直接受益。但方向已经清楚——dLLM 的工程化拐点,很可能就是从这篇论文开始算的。