Diffusion Language Models

扩散语言模型(dLLM)
不是逐字打字,而是整句「显影」

自回归模型一个字一个字往外蹦;
扩散语言模型把整句话同时涂黑, 再分几十步一起擦亮,甚至擦亮后,还能反悔重写。

LLaDA 8B Mercury 2 Gemini Diffusion Block Diffusion 掩码扩散

01扩散模型原理:以图片生成为例

先说清楚扩散模型到底在学什么。初期用于图片生成:
拿一张真实照片,逐步往上面撒噪声直到它变成纯雪花;再训练一个网络学会把这团雪花一步步还原回照片。 学会之后,从随机噪声出发就能「画出」新图。

图片:像素值被逐步加噪 纯噪声态
t = 0 · 原始图片
💡 点击播放:先看图片如何被噪声吞没(前向),再看它如何被逐步还原(反向)。

训练:只做一件事——预测噪声

取一份真实数据 x0,随机抽一个时刻 t,按调度表一次性加噪得到 xt; 让网络看着 xt 和 t,去猜这一步注入的噪声 ε 是什么。

目标 Lsimple(θ) = 𝔼t,x0,ε ‖ ε − εθ(xt, t)‖²
下标 t∼U{1,…,T},x0∼真实数据,ε∼𝒩(0,I)。 这就是一个 L2 回归——每步都有标准答案。

生成:从纯噪声走到样本

前向是一步到位的闭式表达,反向没有闭式解,只能用学好的网络逐步近似:

前向 xt = √αt x0 + √(1−αt) · ε
反向 xt−1 ∼ pθ(xt−1 | xt)
生成时没有真实 ε 可参照,网络只能用自己估的 εθ 反推 x0 的估计,再前进一步。T 次迭代后噪声沉降,数据浮现。
一句话抓住本质:扩散不是在「画图」,而是在学习一个从噪声指向数据的向量场。 训练时用真实数据监督「这一步该去掉多少噪声」,生成时沿着这个方向反复走回数据分布。

三种主流形态

DDPM随机采样,T 步,经典基线
DDIM确定式,步数可大幅压缩
Flow Matching学直线路径,训练更稳

为什么需要 T 步

单步从纯噪声直接跳到数据太难。拆成 T 个小步,每步只需做「微小修正」, 学习任务变简单。代价就是推理慢——这也是后面 dLLM 只取几十步的原因。

文本的特殊性

图像像素是连续值,能直接加高斯噪声。文本 token 是离散的—— 「猫」加一点噪声还是「猫」吗? 这正是第 05 节要解决的问题。

02扩散模型 vs GAN

同样是从随机数造出内容,GAN 靠对抗骗过裁判,扩散靠反复修掉噪声。 这个差别决定了它们各自失败在哪里、强在哪里。切换下面的标签页逐项看。

GAN:一个模仿者 vs 一个鉴定师

生成器 G 把噪声变成样本,试图骗过判别器;判别器 D 努力分辨真假。 两者在极小极大博弈中同时更新:

博弈 minG maxD 𝔼x∼pdata[log D(x)] + 𝔼z∼pz[log(1−D(G(z)))]
G 与 D 同时更新、互相拉扯,损失随对手变化—— 这就是非单调、无稳定信号的根源。

模型一次前向直接出结果。判据是「像不像真的」——一个相对的、动态的目标。

扩散:一个去噪匠

训练目标是预测这一步的噪声,是一个固定不变的回归任务:

回归 Lsimple(θ) = 𝔼t,x0,ε ‖ ε − εθ(xt, t)‖²
目标固定、每步都有真实噪声作标准答案,所以损失曲线单调下降—— 绝对的、静态的目标。

生成时迭代 T 步逐步还原,判据是「离真实数据还有多少噪声」——与对手无关。

关键分野:GAN 的目标随对手变化而变化;扩散的目标始终固定。 这一条几乎解释了后面所有的差异——包括为什么扩散稳、为什么 GAN 快。

训练是否稳定

维度GAN扩散
损失曲线非单调,震荡单调下降
有无稳定信号无可靠训练信号每步都有监督
调试难度高,失败常无迹可循低,损失能反映进展
主要失败模式模式崩塌、判别器压倒收敛慢、引导病态

模式崩塌 vs 覆盖不足

簇1 簇2 簇3
GAN:塌到少数模式,簇 2/3 丢失
簇1 簇2 簇3
扩散:每个簇都采到,覆盖完整

灰圈是真实数据分布,彩点生成样本。GAN 的对抗压力容易让生成器只抓住最能骗过判别器的一小撮模式, 其余模式被丢弃——这就是模式崩塌。

维度GAN扩散更优
单样本锐度极高,边缘锐利高,但风格更均衡GAN
分布覆盖度易丢模式覆盖更完整扩散
多样性可控性难调,常需牺牲多样性换质量可用引导强度、步数调节扩散
可控生成(条件)需专门设计条件机制Classifier-free guidance 等方案成熟扩散
训练数据量需求相对更省数据通常需要更大数据与算力GAN
局部编辑一致性改动一处常引起全图变化局部编辑更稳定可控扩散
为什么编辑稳定性差这么多:GAN 一次性生成,所有像素在一次前向里同时被决定,扰动量会全局扩散; 扩散的迭代过程让每一小步只做局部修正,改动更「听话」。

推理成本对比

GAN 1 次前向 扩散 … T 步 采样耗时 →
GAN 一次出图;扩散需要 T 次串行去噪

快慢与取舍

GAN 推理1 次前向,极快,适合实时
扩散推理T 次串行,慢
缓解手段DDIM / 蒸馏 / 一致性模型
当前差距蒸馏后已明显缩小,但通常仍慢于 GAN

与 dLLM 呼应:文本扩散也把「步数」作为可调旋钮, 用更少步换更低延迟——但不可能降到 GAN 的 1 步。

扩散占主导的场景

文生图Stable Diffusion、Midjourney 等主流系统
视频生成Sora 等,把扩散扩到时间维
语音合成高保真 TTS 的主流路线之一
文本生成LLaDA、Mercury 等 dLLM

GAN 仍在守住的场景

实时人脸 / 风格化直播滤镜、实时换脸
实时视频特效需要毫秒级响应
超分辨率加速单步出结果即可满足
算力受限端侧T 步串行成本难以承受
2026 的默认选择:新项目做生成,默认选扩散——训练稳、覆盖好、可控性强。 只有在延迟硬约束(实时交互、端侧)时,GAN 或蒸馏后的少步扩散才是更合适的选择。 两者也在融合:用 GAN 做蒸馏、把对抗损失加进扩散训练,都是成熟做法。

03扩散语言模型发展史

文本扩散长期被认为「做不过自回归」。转折在 2024—2025,工程化集中在 2026。

2019 — 2023 · 铺垫
离散扩散 & 掩码扩散理论成型
D3PM、MaskGIT 把连续扩散骨架搬到离散空间。文本上能跑,质量明显落后自回归。
2024 · 转折
质量追平
扩散在生成质量上首次与自回归可比,学界开始认真对待这条路线。
2025 · 规模化
LLaDA 8B — 从零训练到 8B 参数
掩码扩散目标从零预训练(2.3T tokens),在通用、数学、代码、中文等 15 个基准上与同规模自回归基线可比。 开源权重,证明扩散路线能 scale。
2025 — 2026 · 工程化
Mercury 2 · Gemini Diffusion — 商业可用
Inception Labs 与 Google 把 dLLM 推到生产环境,以吞吐和延迟为主要卖点。闭源,但证明范式站得住。
2026 · 主流做法
不再从零训练,而是「改造」自回归模型
更省算力的路径成为共识:用预训练好的自回归模型初始化,再用扩散目标继续训练。 Dream 7B 是代表之一;LLaDA 2.0 展示了百 B 级多阶段转换的可行性。
2026 · 落地架构
Block Diffusion 成为部署标配
序列切成固定大小的块(典型 32 token),块内并行去噪、块间顺序推进, 在并行度与质量之间取得平衡。
一句话演进:LLaDA 证明「能训练」,Dream 证明「能改造」,Mercury / Gemini Diffusion 证明「能上线」。
< p">

专题 四条迁移路线:从连续到离散

扩散在图像上大获成功,但直接把高斯噪声搬到文本上行不通。 这一节讲清障碍在哪、四条路线分别怎么解,以及为什么最后是「掩码」赢了。

障碍:连续 vs 离散

图像的像素:连续

像素值是 [0,255] 的实数。128 + 0.1×ε 仍是合法像素, 「加一点噪声」天然有意义——邻域即相似。

文本的 token:离散

token 是从词表里挑一个。「猫」加 0.1 的噪声得到什么? 「猫」+ε 在词表里没有对应项——这不是优化问题,是定义问题。

四条迁移路线

路线 A · 首试

嵌入空间做高斯扩散

把 token 映射成连续词向量,在嵌入空间跑标准高斯扩散,最后四舍五入回 token。代表:Diffusion-LM(2022)。

瓶颈:训练时处理连续值、生成时却要离散化, 「取整」这一步把训练与生成的连续性打断了。更麻烦的是,嵌入空间不是为扩散设计的—— 空间中相邻的点,未必是语义相近的词。

路线 B · 换编码

类比比特 Analog Bits

不直接用词向量,而把每个 token 编码成一串二进制位,把每个位当成 ±1 的连续值来扩散,采样后取符号恢复。

改进:避免了「任意词向量」的问题,配合自条件(self-conditioning)提升稳定性。 但仍要求「连续表示 → 离散」的最后一步转换。

路线 C · 换噪声

离散扩散 / 转移矩阵

不嵌入,直接在离散状态上定义马尔可夫破坏过程——用转移矩阵 Qt 规定「每个 token 以多大概率变成别的 token」。代表:D3PM(2021)。

关键实验结论:让 Q 基于词向量最近邻(相似词互变)的版本, 效果反而比「均匀随机变成词表里任意词」更差。结论很反直觉—— 词向量的相似度,并不构成扩散过程里有意义的「局部性」。

路线 D · 胜出

掩码扩散 Masked Diffusion

把「加噪」的离散对应物定义为替换成 [MASK]。 噪声越强 = 掩码率越高;全掩码 = 纯噪声。代表:LLaDA、MDLM。

为什么赢:① 无需嵌入空间,无取整断层; ② 目标与 BERT 的掩码语言建模同源,训练极其成熟; ③ 吸收态天然定义了「完全破坏」的终点,反向过程有明确的收敛目标。

把两种「加噪」并排看

拖动滑块看同一份数据在两种范式下怎么被破坏。注意本质差别:

连续扩散:数值被平滑扰动
性质渐变 · 可逆 · 加性
掩码扩散:token 被整块替换
性质跳变 · 吸收态 · 替换
左边每个像素都还在,只是变模糊;右边 token 要么完好、要么整个变成 [MASK],没有中间态。

把「掩码」写成数学

迁移的关键动作只有一个:替换掉前向过程的定义。对比下面两组式子,注意「加噪」是怎么变的。

连续扩散(图像)

前向 xt = √αtx0 + √(1−αt) ε
状态 xt ∈ ℝd(连续)
噪声 ε ∼ 𝒩(0, I) 加性的
每一步都在原值上叠加一个小扰动,因此任意两步之间是平滑过渡,可逆且可微。

掩码扩散(文本)

前向 xt[i] = M 以概率 t
否则 xt[i] = x0[i] 以概率 1−t
状态 xt ∈ 𝒱L(离散)
每个位置独立地要么保持原文,要么整个变成吸收态 M。 没有中间态,不可微但无需可微——损失直接建在分类分布上。
两个定义的差别只有一处:图像用「加上高斯噪声」,文本用「以概率 t 替换成吸收态」。 其余全部保留——都要一个调度表、都要前向闭式、都要学一个反向去噪器、都要迭代采样。 架构骨架没动,动的是噪声的定义。
迁移的实质:不是「把图像扩散模型改小一点用来处理文字」, 而是重新定义什么叫噪声。图像里噪声是「高斯扰动」,文本里噪声是「掩码替换」。 框架(前向破坏 + 反向重建 + 迭代去噪)原封不动保留,只有噪声的定义换了。 这也是为什么 LLaDA 的损失函数长得像填空——它确实就是填空,只不过被放进了扩散的框架里。
一个观察:按这个定义,BERT 其实早就是一个「单步的扩散模型」—— 它用掩码破坏、预测被掩位置,只是没有把「多步迭代去噪」这件事做起来。 从 BERT 到 LLaDA,补上的正是「迭代」这一步。

04自回归语言模型 vs 扩散语言模型

同一个补全任务。左边逐字生成,右边并行去噪——看清它们「信息增长的方式」有多不一样。

自回归 · Autoregressive
0 / 12 步

每步只产出 1 个 token,写出即定稿。串行、因果注意力。

扩散 · Diffusion
0 / 6 步

每步同时预测所有位置,挑最自信的一批揭晓。双向注意力、可回改。

关键差异:自回归的「步数 = token 数」;扩散的「步数」是超参数,与长度解耦。 12 个 token 的句子,自回归必须跑 12 步,扩散 6 步就够——这是低延迟的来源。

05DLM 原理:前向与反向

上一节确立了一件事:文本的「噪声」就是掩码替换。这一节把这个定义展开成完整的双向过程。

Part A 前向过程:把句子「打码」

训练前先定义怎么破坏数据。对文本的破坏方式极简——按比例把 token 换成 [MASK]。

保留的原始 token 被替换成 [MASK]
训练目标:模型看到打码后的句子,要还原所有 [MASK] 位置的原文。 每个位置被遮住的概率独立,且都等于 t。
与 BERT 的区别在这里:BERT 用固定掩码率(如 15%),且不做生成。 LLaDA 用随机掩码率 t ~ U[0,1],让同一目标覆盖从「几乎没遮」到「全遮」的全部难度, 于是模型学会从纯噪声起步生成——这才是「扩散」而非「填空」。

Part B 反向过程:迭代显影 · 且能反悔

这是整套机制的核心。从全掩码起步,反复「预测 → 挑最自信的揭晓」。 下面这个案例会走到第 5 步时主动推翻自己:把已经写出的字重新涂黑,再改掉。

目标序列
第 0 / — 步 · 已揭晓 0 / 8
💡 点击「单步」或「播放全程」,看模型如何从全掩码一步步显影——并在中途推翻自己。
本步模型对每个 [MASK] 位置的置信度

① 并行预测

一次前向,所有掩码位置同时得到词表分布。这是与自回归最本质的分野。

② 置信度排序

按最高概率排序,只揭晓最靠前的一小批。低置信位置留到后续步再定。

③ 可回改 Remasking

已揭晓的位置可以重新涂黑,让模型带着更充足的上下文重判。自回归做不到这一点。

为什么能低延迟:自回归 8 个 token 要 8 次前向;这里 8 个 token 只需 6 次前向。 在 batch size 1~4 的场景下,实测可带来 2~10× 的生成延迟下降。
可回改意味着什么:自回归一旦写出 token,后面的 token 只能在这个前提下续写,错误会沿链条放大。 扩散允许「全局重审」——这也是它在长链推理、代码生成这类需要回溯的任务上被看好的原因。

06训练目标

LLaDA 到底在优化什么?并不神秘——就是掩码语言建模损失,加了一个 1/t 权重。

损失 L(θ) = − 𝔼t∼U[0,1],
x0,xt
[ 1/t · Σi : xt[i]=M log pθ( x0[i] | xt ) ]
等价 = − (1/t) · Σi∈掩码位 log pθ(x0[i] | 未掩码的上下文)
读法:把「带权重的交叉熵」在自己造的打码数据上求期望。 它同时是负对数似然的变分上界,因此 LLaDA 是有原则的生成模型,不只是「借用了填词技巧」。

符号表

θ模型参数
t掩码率,每步从 U[0,1] 重新采样
x0干净的真实序列,长度 L
xtx₀ 的加噪版本:每位独立以概率 t 变 M
M吸收态 [MASK];一旦变 M 就不再变
Σi∈掩码位只对被打码的位置求和
1/t权重:低掩码率下把单点损失放大
pθ(·|·)模型在每个掩码位给出的词表分布

为什么权重是 1/t

掩码率 t 越小,被遮的位置越少,参与求和的项也越少。若不加权, 「几乎没被遮」这类简单样本的梯度会被淹没,模型学不到低噪声区间的还原能力。

直觉 掩码位数量 ≈ t·L, 乘以 1/t 后 ≈ L(与 t 无关)

归一化之后,每个噪声等级获得同等权重——而低噪声正是反向生成最后几步的战场。

同一目标贯穿始终:预训练和 SFT 用同一个损失。SFT 时只把 response 段打码、prompt 保持可见, 模型就自然学会「给定指令生成回复」,无需换目标函数。

07最新技术:2026 年的四条主线

机制讲完了,看它现在进化到哪。dLLM 这一年从研究走进了工程,四条主线最值得关注。

① 块扩散成为部署标配

不整句并行,而是把序列切成固定大小的块(典型 32 token):块内并行去噪、块间按序推进。 这样既保留了并行的速度,又拿回了自回归的长序列稳定性。

结构 [ 块1 ] → [ 块2 ] → [ 块3 ] → ⋯ 块内并行,块间串行
块一旦去噪完成就提交进 KV cache,下一块在此基础上初始化。

② 从零训练 → 改造自回归模型

从零预训练成本太高。2026 的主流做法是拿已训练好的自回归模型做初始化, 再用扩散目标继续训练——复用同一套 transformer 主干,成本大幅下降。

DiffuLLaMA证明 AR 模型可转换
Dream 7BAR 初始化 + 针对性训练,开源最强
LLaDA 2.0多阶段转换,验证百 B 级可行

③ MoE 化与规模化

LLaDA MoE v2 系统刻画了 MoE 版 dLLM 的 scaling 行为, 发现它的最优超参与自回归并不相同:

批大小最优值随算力增长更快
学习率随算力衰减更迅速
配比略偏向数据侧(token 预算增长更快)

④ 后训练与推理加速

采样轨迹本身成了优化对象——把每一步去噪当作决策来强化学习:

轨迹感知 RL对整个去噪轨迹做奖励优化
揭晓顺序把「先揭哪个」作为 RL 动作空间
Fast-dLLM免训练加速:KV cache + 并行解码
块级 KV cache为双向注意力设计近似缓存(ICLR 2026)

标志性产品:DiffusionGemma(2026-06)

规模26B MoE(4B 激活)
基座Gemma 4 26B A4B
块大小256 token 一次性并行生成
推理栈首个被 vLLM 原生支持的 dLLM
速度GPU 上最高约 4× 提速
许可Apache 2.0,开放权重

定位很明确:不是替代自回归。Google 自己的说法是 「自回归 Gemma 4 仍是高质量生产输出的标准」,DiffusionGemma 面向 延迟敏感的本地交互场景——行内编辑、快速迭代、非线性文本。

技术上它采用块自回归扩散:256 token 块内并行去噪,块完成后提交 KV cache, 再以新画布处理下一块——把「并行的速度」和「串行的稳定」缝在一起。

一个反方观点,值得记录:2026 年的讨论中也有明确唱反调的声音——有人主张 「离散扩散语言模型还不是自回归语言的替代品」。同年 ICML 的杰出论文 《The Flexibility Trap》更进一步质疑:dLLM 引以为傲的「任意顺序生成」到底有多少真实价值。 这一节列的是技术进展,不等于已经取得全面优势——机制上能不能赢,和当下有没有赢,是两件事。

08DLM 选型指南:一份诚实的权衡表

扩散不是全面替代。优势很具体,短板同样具体。

维度自回归 AR扩散 dLLM谁更优
生成延迟
batch 1~4
步数 = token 数,串行 步数与长度解耦,并行揭晓 扩散 2~10×
高并发吞吐 KV cache 复用成熟,批次堆叠效率高 并行去噪的多步特性在高 batch 下优势收窄 自回归更稳
注意力 因果掩码,只能看左侧 双向,每个位置可看全局 扩散
纠错能力 写出即定稿,错误沿链条放大 Remasking 允许回改已揭晓位置 扩散
训练成熟度 数年工程积累,配方极稳定 仍在演进,超参与调度技巧影响大 自回归
流式输出 天然逐字流式,体验好 整块揭晓,增量流式需额外设计 自回归
生态与工具链 vLLM 等推理栈高度优化 专用推理栈仍在补齐 自回归
选型直觉:对延迟敏感、batch 小的场景(实时对话、语音、搜索改写、代码补全), 扩散收益最直接。对吞吐优先、成本优先的大批量离线任务,成熟的自回归栈通常更稳妥。 分野的本质是「优化首字延迟」还是「优化每 token 成本」。