扩散语言模型最新进展
扩散语言模型(Diffusion Language Models, DLMs)作为自回归(Autoregressive, AR)范式的有力竞争者,近年来取得了显著进展。本文系统梳理该领域的最新研究动态,重点分析效率悖论、缩放行为与混合架构等核心问题。
概述
扩散语言模型的核心优势在于并行生成能力——理论上可以在单次前向传播中生成整个序列,而非像AR模型那样逐token生成。然而,实践中的效率表现却呈现出复杂的图景。
| 特性 | 自回归模型 | 扩散语言模型 |
|---|---|---|
| 生成方式 | 顺序逐token | 并行多token |
| 上下文利用 | 单向因果 | 双向全局 |
| 推断延迟 | O(n) 次前向 | O(T) 次迭代 |
| 质量稳定性 | 高 | 波动较大 |
效率悖论:理论上快但实际慢
核心问题
扩散语言模型面临一个显著的效率悖论:尽管并行生成在理论上具有显著优势,但当前开源的扩散语言模型(如LLaDA-Instruct-8B)在实际推理速度上往往落后于同规模的AR模型。例如,LLaMA3-Instruct-8B的推理吞吐量比LLaDA-Instruct-8B高出约13.7倍。1
成因分析
这一悖论源于多个因素的叠加:
- 迭代采样开销:扩散模型需要多步迭代去噪(如LLaDA需要约100步),每步都是完整的前向传播
- 实现优化不足:大多数扩散模型的开源实现缺乏针对AR模型的极致工程优化
- KV缓存效率:AR模型在解码时可以复用预计算的KV缓存,而标准扩散模型的迭代特性阻碍了缓存复用
- 批量推理劣势:在较大批量时,扩散模型的迭代开销使得其相对于AR的优势消失
关键发现
系统性的效率评测研究揭示了以下关键发现1:
- AR模型通常吞吐量更高:在相同的硬件条件下,AR模型的端到端吞吐量普遍优于扩散模型
- 加速策略的效果边界:双缓存(dual cache)、并行解码等技术在小批量时效果显著,但在大批量时收益递减
- 评估方法的重要性:先前研究中的效率比较存在方法论问题,需要更严格的控制变量实验
与自回归模型的效率对比
训练效率
在受控的预训练条件下(相同数据、相同计算预算、相同硬件),AR模型与掩码扩散语言模型(MDLM)呈现不同的收敛特性2:
| 指标 | AR模型 | 掩码扩散模型 |
|---|---|---|
| 训练吞吐量 | ~50K tokens/s | ~50K tokens/s(仅慢4.7%) |
| 收敛速度 | 快速,约14000步后开始过拟合 | 较慢,20000步仍在改善 |
| 样本多样性 | 较低(99.8%以相同词开头) | 较高(93.4%独特5词开头) |
| 流畅性 | 高 | 偶有语法不一致 |
推断效率
扩散模型的并行生成潜力与实际效率之间存在显著差距:
- 小批量场景:扩散模型的”自由token槽位”(free token slots)策略可以利用GPU空闲算力
- 大批量场景:迭代去噪的开销成为主导因素,扩散模型的效率优势消失
- 延迟vs吞吐量:扩散模型可能在吞吐量上有所改善,但单序列延迟仍然较高
数据效率的”交叉点”
研究揭示了一个重要现象——数据受限场景下的交叉点(Crossover)3:
当可用唯一数据有限但允许重复训练时,扩散语言模型一致性地超越同等规模的AR模型。这一交叉点受以下因素调节:
| 因素 | 影响方向 |
|---|---|
| 唯一数据量 | 更多唯一数据 → 交叉点后移 |
| 数据质量 | 更高质量 → 交叉点后移 |
| 模型规模 | 更大模型 → 交叉点前移 |
理论解释:扩散模型的优势来源于三个叠加因素——
- 任意顺序建模(any-order modeling)
- 迭代双向去噪带来的超密集计算
- 内置蒙特卡洛增强
加速策略
双缓存机制
双缓存(Dual Cache)策略旨在解决扩散模型中KV缓存无法复用的问题:
┌─────────────────────────────────────────────────────┐
│ 扩散解码过程 │
├─────────────────────────────────────────────────────┤
│ Step 1: [prefix] + [masked_tokens] → 预测 │
│ ↑ ↑ │
│ Prefix Cache Draft Cache │
│ │
│ Step 2: [prefix] + [draft_1] + [masked] → 重预测 │
│ ↑ ↑ ↑ │
│ Prefix Draft-1 Draft-2 │
│ Cache Cache Cache│
└─────────────────────────────────────────────────────┘
设计要点:
- 维护独立的Prefix Cache存储已接受token的KV
- Draft Cache存储草稿token的中间表示
- 减少重复计算相同前缀的注意力开销
并行解码
并行解码策略通过在单步内生成多个token来提升效率:
方法一:固定步长解码
每步生成固定数量的token,平衡速度与质量。
方法二:置信度自适应解码
根据模型置信度动态调整每步生成的token数量:
def confidence_adaptive_decoding(model, x_t, threshold=0.9):
"""基于置信度的自适应解码"""
# 获取每个位置的logits
logits = model(x_t)
probs = F.softmax(logits, dim=-1)
max_probs = probs.max(dim=-1).values
# 置信度高于阈值的位置接受
accepted = max_probs > threshold
# 低置信度位置保持masked用于下一步
return accepted方法三:块级并行解码
Fast-DLLM v24提出的块级缓存机制:
- 块级缓存:跨块存储历史上下文表示
- 子块缓存:支持部分解码块内的高效并行生成
- 结合并行解码管道,在A100上实现2.54倍加速
评估与限制
| 策略 | 小批量增益 | 大批量增益 | 备注 |
|---|---|---|---|
| 双缓存 | 中等 | 有限 | 主要减少重复计算 |
| 并行解码 | 高 | 低 | 依赖GPU空闲算力 |
| 块级缓存 | 显著 | 中等 | Fast-DLLM v2的核心 |
掩码扩散 vs 均匀扩散的缩放行为
两种范式的对比
离散扩散模型主要有两种噪声类型,其缩放行为存在显著差异56:
| 特性 | 掩码扩散(Masked Diffusion) | 均匀扩散(Uniform Diffusion) |
|---|---|---|
| 主导指标 | Perplexity(困惑度) | 任务性能(GSM8K等) |
| 数据效率 | 需要更多数据 | 更少数据,更多参数 |
| 参数效率 | 较高 | 需要更多参数 |
| 少步生成 | 急剧下降 | 相对稳健 |
| 理解能力 | 强 | 较弱 |
| 生成能力 | 需要足够步数 | 少量步数即可 |
缩放定律发现
系统性的IsoFLOP缩放研究表明5:
计算受限场景:
- 所有噪声类型收敛到相似的损失值
- 缩放行为与AR模型相当
数据受限场景:
- 均匀扩散展现出明显优势——需要更多参数但更少数据
- 这使其成为数据瓶颈时代的理想选择
关键洞察:
均匀扩散需要更多参数但更少数据来实现计算高效的训练,这使其在数据受限场景中成为有前景的候选方案。
Perplexity vs 序列错误率的权衡
一个重要的理论发现是:Perplexity在扩散族内具有信息量,但跨族比较时可能产生误导5。
速度-质量 Pareto 前沿
质量
↑
│ ● AR (高质量但慢)
│ ╱ ╲
│ ╱ ╲● Duo (均匀扩散)
│ ╱ ╲
│ ╱ ● Eso-LM
│╱ ● MDLM
│ ●
└──────────────────────→ 吞吐量
核心洞察:
- Perplexity更优的模型不一定在下游任务中表现更好
- 序列级指标(如GSM8K准确率)可能更好地反映生成质量
- 采样效率(speed-quality Pareto前沿)是更全面的评估维度
XDLM:统一框架
XDLM7提出通过平稳噪声核桥接两种范式:
- 理论上统一:将掩码扩散和均匀扩散作为特例恢复
- 代数简化:减轻后验概率计算的内存瓶颈
- Pareto前沿推进:在理解能力与生成能力之间取得更优平衡
代码生成任务中的扩散语言模型
扩散模型的独特优势
扩散语言模型在代码生成任务中展现出独特优势8:
| 能力 | AR模型 | 扩散模型 |
|---|---|---|
| 上下文利用 | 仅左到右 | 双向全局 |
| 填充生成 | 困难 | 自然支持 |
| 长距离依赖 | 弱 | 强 |
| 编辑生成 | 需要特殊设计 | 原生支持 |
代表性模型
| 模型 | 规模 | 特点 |
|---|---|---|
| CoDA | 1.7B | 首个大规模开源扩散coder,TPU训练 |
| Dream-Coder 7B | 7B | 自适应解码策略,涌现任意顺序能力 |
| DiffuCoder | 7B | 揭示去噪过程行为,coupled-GRPO训练 |
| Mercury Coder | Mini/Small | SOTA速度-质量Pareto前沿 |
| Seed Diffusion | - | H20上2146 tokens/s |
关键发现
大规模代码生成实证研究8揭示了以下发现:
-
扩散LLM与AR模型竞争力相当
- 在HumanEval和MBPP上,最优扩散LLM达到89.6%和79.4%的pass@1
- 优于同规模AR模型的84.8%和70.8%
-
更强的长度外推能力
- 扩散LLM在长代码理解任务上表现更优
-
去噪过程的独特行为
- 扩散LLM可以在不依赖半AR解码的情况下控制因果性
- 提高采样温度会同时增加token选择和生成顺序的多样性
DiffuCoder的分析
Apple的研究9对DiffuCoder的去噪过程进行了深入分析:
发现一:因果性控制
- 扩散LLM可以自主决定生成过程中的因果程度
- 无需依赖半AR解码等外部干预
发现二:温度的双重作用
- 提高温度不仅增加token选择的多样性
- 还增加了生成顺序的多样性
发现三:耦合GRPO训练
- 为减少token似然估计的方差,提出构建互补mask噪声
- 显著提升EvalPlus性能(+4.4%)
TiDAR混合架构
设计理念
TiDAR(Think in Diffusion, Talk in Autoregression)10提出了一种创新的序列级混合架构,在单次前向传播中结合扩散与自回归的优势:
┌─────────────────────────────────────────────────────────────┐
│ TiDAR 架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 输入: [prefix] + [draft_tokens] + [mask_tokens] │
│ ↓ ↓ ↓ │
│ 因果注意力 块内双向 块内双向 │
│ (AR采样) (扩散起草) (扩散起草) │
│ │
│ 核心思想: │
│ - "Think" (起草): 扩散模式并行生成多个token │
│ - "Talk" (采样): AR模式从草稿中选择最终输出 │
│ │
└─────────────────────────────────────────────────────────────┘
关键技术
结构化注意力掩码:
TiDAR使用精心设计的注意力掩码,在单次前向传播中同时支持:
- 因果注意力:前缀token之间的自回归采样
- 双向注意力:草稿区域和mask区域的块内双向建模
自由Token槽位:
在内存受限区域(常见于小批量推理),向输入序列添加更多token几乎不增加延迟:
# 伪代码示例
def tidar_forward(model, prefix, num_draft, num_mask):
"""
TiDAR前向传播
"""
# 构建混合序列
sequence = concat(prefix, draft_tokens, mask_tokens)
# 结构化注意力掩码
# - prefix之间: 因果掩码 (AR模式)
# - draft/mask区域: 双向掩码 (扩散模式)
attention_mask = build_structured_mask(
prefix_len=len(prefix),
draft_len=num_draft,
mask_len=num_mask
)
# 单次前向传播
output = model(sequence, attention_mask)
# 分离AR采样结果和扩散草稿
ar_output = output[:len(prefix)]
draft_output = output[len(prefix):]
return ar_output, draft_output性能表现
| 模型 | 质量 | 吞吐量 | 相对AR增益 |
|---|---|---|---|
| TiDAR 1.5B | 匹配AR基线 | - | 4.71× tokens/s |
| TiDAR 8B | 匹配AR基线 | - | 5.91× tokens/s |
| Dream/LLaDA | 低于AR | 低于AR | - |
关键突破:
- 首个在质量上追平AR模型的混合架构
- 同时实现4.7-5.9倍吞吐量提升
- 支持精确KV缓存,服务友好
与其他方法的对比
| 方法 | 质量 | 吞吐量 | 备注 |
|---|---|---|---|
| 纯AR | 最高 | 基线 | 顺序生成,内存bound |
| 纯扩散 | 较低 | 较低 | 迭代开销大 |
| 投机解码 | 依赖drafter | 中等 | 需要额外drafter模型 |
| TiDAR | 匹配AR | 显著提升 | 单模型,无需drafter |
理论洞见
Perplexity与序列错误率的权衡
传统观点认为perplexity是评估语言模型的金标准,但扩散模型的研究揭示了更复杂的图景:
Perplexity的局限性:
- 跨算法比较的误导性:不同扩散族之间,perplexity不能准确预测下游任务性能
- 序列级 vs token级:Perplexity是token级的平均指标,可能掩盖序列级的一致性问题
- 采样敏感性:扩散模型的perplexity依赖于采样步数
更全面的评估框架:
| 评估维度 | 适用指标 | 扩散模型特点 |
|---|---|---|
| 语言建模能力 | Perplexity | 族内可比,族外不可比 |
| 任务完成能力 | Accuracy/F1 | 更可靠的代理指标 |
| 生成效率 | Tokens/s, Latency | 取决于采样策略 |
| 样本多样性 | Entropy, Distinct-n | 扩散模型通常更优 |
推理时计算缩放
扩散模型的一个独特优势是推理时计算缩放(Inference-Time Scaling):
ReMDM11提出了重新掩码(Remasking)采样器:
- 在去噪过程中允许token被重新掩码
- 通过增加采样步数,输出质量趋近AR模型水平
- 在计算受限情况下,比传统掩码更好维持质量
这为扩散模型提供了一种可调控的质量-效率权衡机制。
数据效率的理论分析
在高质量数据日益成为瓶颈的时代背景下,扩散模型的数据效率优势具有重要意义:
关键理论结果3:
- 在严格匹配的预训练设置下,当唯一数据受限时,扩散模型一致性地超越AR模型
- 这一”交叉点”现象具有系统性:
- 随唯一数据增加而后移
- 随模型规模增大而前移
- 在密集和稀疏架构中均存在
实践意义:
在数据受限场景下,扩散模型的任意顺序建模和迭代双向去噪带来了实质性的效率提升,可能使其成为未来扩展的有力候选。
总结与展望
核心发现总结
| 主题 | 关键发现 |
|---|---|
| 效率悖论 | 扩散模型理论上快但实践中慢,需要系统性改进 |
| AR对比 | AR模型通常吞吐量更高,但扩散模型在数据受限场景有优势 |
| 缩放行为 | 均匀扩散需要更多参数但更少数据,适合数据受限时代 |
| 评估指标 | Perplexity在族内可比,跨族比较需谨慎 |
| 代码生成 | 扩散LLM竞争力强,具有双向上下文优势 |
| 混合架构 | TiDAR首次实现质量追平AR同时4.7-5.9倍加速 |
未来方向
- 效率优化:更高效的推理策略,减少迭代开销
- 统一框架:如XDLM般融合不同扩散范式的优势
- 混合架构:探索更多AR与扩散的协同方式
- 评估标准化:建立更适合扩散模型的评估体系
- 数据效率:充分发挥扩散模型在小数据场景的优势
相关内容
- 扩散语言模型理论基础 — 离散扩散的数学框架、变分推断、ELBO推导
- 扩散模型基础 — 连续扩散的DDPM框架、采样算法
参考
Footnotes
-
How Efficient Are Diffusion Language Models? A Critical Examination of Efficiency Evaluation Practices ↩ ↩2
-
Autoregressive vs. Masked Diffusion Language Models: A Controlled Comparison ↩
-
XDLM: Balancing Understanding and Generation in Discrete Diffusion Models ↩
-
DiffuCoder: Understanding and Improving Masked Diffusion Models for Code Generation ↩