自回归模型长期主导自然语言处理领域,但其生成方式也带来一个持续存在的工程难题:每生成一个 token,都需要完成一次完整的前向传播,模型权重也要反复从显存读取到计算单元。对于追求低延迟、高吞吐的大模型服务来说,这种逐词生成机制正在成为推理成本的重要来源。
扩散语言模型(Diffusion LLM,简称 dLLM)试图改变这一路径。它不再强制模型从左到右逐个输出,而是通过离散扩散和多步去噪,在一次前向传播中预测多个位置的内容。近期一篇发表于 ICLR 2026 的研究进一步表明,借助缓存复用与高置信度并行解码,开源 dLLM 有望把理论上的并行优势真正转化为实际吞吐提升。
自回归推理的瓶颈:串行次数与显存搬运
自回归模型生成 L 个 token,需要 L 次前向传播。每一次前向过程中,模型都需要将全部参数从显存搬运到计算单元,完成计算后再等待下一次生成。这意味着,如果生成 1000 个 token,就要进行 1000 次完整前向传播,并伴随大规模权重读取。
问题并不只在计算量本身。素材指出,解码阶段更多受到显存带宽限制,而非算力限制。GPU 的算力经常在等待权重搬运的过程中处于空闲状态。扩大 batch 可以提高算力利用率,但当 batch 达到上限后,单请求低延迟生成仍会被串行步骤卡住。
扩散语言模型的出发点,正是减少这种串行次数。其核心问题是:能否一次前向就确定多个 token?
dLLM 的机制:从全掩码到逐步去噪
图像扩散通常通过连续噪声实现,而文本是离散符号,因此 dLLM 主要采用离散扩散,其中一种主流方式是吸收态掩码扩散。给定一个干净序列,模型通过单调调度逐步将 token 替换为 [MASK]。一旦某个位置被掩码,它就不会变成其他 token,只等待模型在反向过程中重新预测。
在这一设定下,训练目标接近一种经过重新加权的掩码语言建模损失。素材提到,这一形式与 BERT 的掩码语言建模属于同一类目标,但 dLLM 在架构和生成方式上有所不同。例如,LLaDA 和 Mercury 均采用 decoder-only 结构,并配合非因果注意力。
推理时,dLLM 从全掩码序列开始,经过 K 步去噪生成结果。每一步中,模型输入部分掩码的序列和时间步,预测所有掩码位置上的 token 分布;系统再根据置信度选择部分位置解除掩码,其余位置留给下一轮处理。
- 自回归生成 L 个 token 需要 L 次前向传播。
- dLLM 生成 L 个 token 的成本取决于 K 次前向传播。
- 在显存允许的情况下,K 可以显著小于 L。
这种机制也带来了两个自回归模型较难自然获得的能力。其一,是双向可见性。自回归模型受因果掩码限制,只能看到左侧内容,而 dLLM 可以在生成过程中同时参考上下文。素材提到,在 LLaDA 的诗句补全实验中,GPT-4o 正序表现远强于 LLaDA,但倒序成绩下降 48 分;LLaDA 只下降 6 分。这说明 dLLM 的优势更多来自对称生成能力,而非绝对能力。
其二,是更适合中间补全。例如在文档中间插入一段文字,或在函数签名和 return 之间补全函数体,本身就是掩码扩散训练目标覆盖的场景。自回归模型若要实现类似能力,通常需要依赖 Fill-In-the-Middle 等数据重排方式。
理论并行并不等于实际提速
不过,扩散模型的理论优势并不自动变成工程收益。素材提到,LLaDA 和 Dream 等开源实现的实际吞吐量往往不如同尺寸 LLaMA。原始 LLaDA 在 GSM8K 5-shot 上的精度为 79.3%,但吞吐量只有 6.7 tokens/s;相比之下,LLaMA-3-8B 精度略低,但速度更快。
ICLR 2026 的一篇论文将这一问题归纳为两个关键障碍。
第一是缓存缺失。自回归推理可以使用 KV Cache,每生成一个新 token,只需计算当前 token 的 K/V,历史部分可以复用。但 dLLM 使用双向注意力,每个去噪步都需要关注完整序列,传统 KV Cache 难以直接套用。结果是,虽然前向次数从 L 降到 K,但每次前向的计算量更高,节省的时间可能被重复计算抵消。
第二是并行解码会损害生成质量。τ-leaping 策略允许单步内同时采样多个掩码位置,这在数学上相当于把联合概率近似为边际概率的乘积。当 token 之间依赖较弱时问题不大,但遇到结构化共现关系时,可能产生错误组合。素材给出的例子是扑克牌型名称:如果位置 A 的候选包括 high 和 full,位置 B 的候选包括 card 和 house,独立采样可能生成 high house 这样的错误搭配。
因此,实验显示 LLaDA 在每步只生成 1 个 token 时表现最好;一旦并行解码更多 token,质量会迅速下降。理论上可以并行,工程上却不敢轻易并行,成为早期 dLLM 的现实困境。
Fast-dLLM:用缓存和置信度控制换回吞吐
针对这些问题,来自港大、NVIDIA 和 MIT 的联合团队提出了 Fast-dLLM。该方案不需要重新训练,也不改变模型架构,主要通过两个工程改进提升速度。
第一个改进是缓存复用。研究发现,虽然每个去噪步的 KV 严格来说都不同,但相邻步骤之间的 KV 激活余弦相似度很高,尤其在相邻步骤接近时接近 1.0。基于这一点,研究团队采用块级解码:将序列切分为多个 block,在解码某个 block 时,缓存 prompt、前后相邻 block 的 KV,并在该 block 的多个去噪步中复用。完成当前 block 后,再统一更新全序列 KV。
之所以不做全局缓存,是因为步骤间隔拉大后,KV 相似度会下降。例如在 step 16 和 step 64 之间,深层相似度会出现明显衰减。因此,缓存复用被限制在足够相似的范围内。
在此基础上,DualCache 进一步利用扩散模型的双向特性。自回归通常只缓存左侧前缀,而扩散模型在注意力计算中也会看到右侧仍处于掩码状态的 token。这些 mask token 的 KV 表示在块解码过程中同样较为稳定,可以提前计算并保存。因此,DualCache 同时包含前缀缓存和后缀缓存。
第二个改进是高置信度并行解码。研究提出,与其强行建模 token 之间依赖,不如只对不太需要依赖的 token 进行并行解码。如果模型对某个位置已经有很高把握,它受其他位置影响较小,并行采样风险也更低。
论文中的定理 1 给出了条件:若待解码的 n 个位置中,每个位置最优 token 的概率都大于 1−ε,且满足 (n+1)ε≤1,则贪心并行解码与贪心顺序解码的结果完全一致。即使不完全满足严格条件,研究也给出了联合分布与边际乘积之间的总变分距离和 KL 散度上界,用于控制偏差。
实际运行时,系统会在每一步计算所有掩码位置的置信度,只让超过阈值的位置并行解码,其余位置保持掩码。如果没有任何位置超过阈值,则至少解除置信度最高的一个位置,避免流程停滞。素材提到,0.9 是 GSM8K 实验中精度与速度的较佳平衡点。
在 1024 长度、8-shot GSM8K 设置下,原始 LLaDA 耗时 266.0 秒,精度为 77.3%。加入并行解码后,耗时降至 20.0 秒,加速 13.3 倍;加入 PrefixCache 后降至 12.0 秒,加速 18.6 倍;再加入 DualCache 后降至 9.6 秒,加速 27.6 倍,精度为 76.0%。素材称,各任务精度损失基本控制在 1 至 2 个百分点以内,个别任务甚至略有上升。
另一个规律是,序列越长,加速比越高。在 256 长度下加速约为 9.4 倍,到 1024 长度时达到 27.6 倍。原因在于更长序列提供了更多缓存复用机会。该方案也被认为与其他加速方法正交兼容:与 dParallel 结合时,PrefixCache 还可带来 1.84 倍吞吐提升,GSM8K 精度从 76.5% 提升到 77.1%。
生产环境更可能走块扩散路线
尽管实验展示了显著加速,素材也提醒,在 1000 token 的画布上做纯扩散,并不是生产系统常见形态。更接近落地的方案是块扩散:块间仍按从左到右的自回归方式推进,以保证 KV Cache 精确并限制误差扩散;块内则采用并行去噪,获取扩散模型的并行收益。
素材提到,Mercury 和 DiffusionGemma 都采用按块去噪,其中 DiffusionGemma 的块大小为 256 token;LLaDA 也支持类似方案,称为 semi-autoregressive remasking,且无需重新训练。这种折中同时保留了自回归缓存的精确性、限制单次并行错误传播范围,并让模型在结构上呈现半自回归特征。
因此,问题不再是扩散模型能否完全替代自回归,而是一次能安全提交多大的块。目前的答案仍然有限,通常只是几个 token。
Google 公布的 Gemini Diffusion 数据也呈现出任务差异。素材认为,差异根源在于一个 token 的含义在多大程度上依赖同时被决定的其他 token。紧约束的代码场景更容易受益,而多步科学推理则可能损失明显。
代码被视为 dLLM 较适合的方向,因为补全内容中存在大量缩进、闭合括号、重复标识符和样板代码。这些 token 往往被上下文高度约束,彼此之间依赖较弱,更适合一起提交。素材提到,Inception Labs 的 Mercury Coder Mini 在 H100 上被 Artificial Analysis 实测达到 1109 输出 token/秒,比同质量的自回归模型快约一个数量级。
不适合的场景同样清晰。扩散模型不像自回归模型那样天然适合流式输出,因此对需要逐字显示的对话界面并不友好。复杂工具调用生态尚不成熟,而顶级推理任务目前仍以自回归模型为主。
从评估角度看,dLLM 的适用边界可以概括为几个问题:任务是否属于高吞吐的长文本或代码生成;输出 token 之间依赖是否较弱;是否需要流式输出;是否存在中间编辑或完形填空需求。依赖较强的数学证明和多步推理仍更适合自回归,而结构化填充、代码补全和文档中间编辑则可能是扩散语言模型更有价值的切入点。
原创文章,作者:点点,如若转载,请注明出处:https://www.dian8dian.com/kuo-san-yu-yan-mo-xing-ti-su-shi-yan-bing-xing-sheng-cheng