Block Diffusion: Interpolating Between Autoregressive and Diffusion Language Models
块级离散去噪扩散语言模型,在自回归和扩散之间插值,实现任意长度生成和 SOTA 似然
Block Diffusion: Interpolating Between Autoregressive and Diffusion Language Models
一、论文概述
| 项目 | 内容 |
|---|---|
| 标题 | Block Diffusion: Interpolating Between Autoregressive and Diffusion Language Models |
| 作者 | Marianne Arriola, Aaron Gokaslan, Justin T. Chiu, Zhihan Yang, Zhixuan Qi, Jiaqi Han, Subham Sekhar Sahoo, Volodymyr Kuleshov |
| 机构 | Cornell University |
| 论文 | https://arxiv.org/abs/2503.09573 |
| 代码 | https://github.com/kuleshov-group/bd3lms |
| 项目 | https://m-arriola.com/bd3lms |
| 发布 | 2025-03-12 (v1), 最新 v3 |
| 会议 | ICLR 2025 Oral |
| 许可 | MIT |
二、核心思想
问题定义
语言模型存在两种主要范式,各有优劣:
| 范式 | 优势 | 劣势 |
|---|---|---|
| 自回归 (AR) | 灵活长度生成、KV 缓存、高质量 | 串行生成、无法并行 |
| 扩散 (Diffusion) | 并行生成、可控性 | 固定长度、似然建模较弱 |
核心洞察
自回归和扩散并非互斥——可以通过块级分解将两者结合:
- 将 token 序列分成固定大小的块 (blocks)
- 块间使用自回归生成(支持灵活长度 + KV 缓存)
- 块内使用离散去噪扩散(支持并行生成)
通过调整块大小 (block size),可以在自回归和扩散之间连续插值:
- 块大小 = 1 → 纯自回归
- 块大小 = 序列长度 → 纯扩散
解决方案概述
BD3-LMs (Block Discrete Denoising Diffusion Language Models):
- 块级自回归似然参数化:将序列分解为块,块间自回归,块内扩散
- 数据驱动噪声调度:最小化训练梯度方差
- 任意长度离散扩散采样器:突破固定长度限制
- 高效训练算法:梯度方差估计器
三、技术架构
块级分解
给定 token 序列 ,将其分为 个块:
每个块 包含 个 token(最后一个块可能更短)。
块级自回归似然
- 块间:自回归条件化,支持 KV 缓存
- 块内:离散去噪扩散,支持并行生成
离散去噪扩散
每个块内部使用离散扩散过程:
前向过程:逐步 mask token
反向过程:逐步恢复 token
数据驱动噪声调度
传统扩散使用固定噪声调度。BD3-LM 提出数据驱动的噪声调度:
- 估计不同时间步的梯度方差
- 选择最小化训练方差的调度
- 提高训练稳定性和收敛速度
任意长度生成
标准扩散语言模型(如 SEDD、MDLM)只能生成固定长度序列。BD3-LM 通过块级自回归结构自然支持任意长度:
- 生成第一个块(扩散)
- 条件化已生成块,生成下一个块
- 重复直到生成 EOS token 或达到最大长度
四、核心创新
| 创新点 | 说明 | 理论/实验依据 |
|---|---|---|
| 块级分解 | 将序列分为块,块间 AR + 块内扩散 | 连续插值 AR 和扩散 |
| 灵活长度生成 | 突破扩散模型固定长度限制 | 块级自回归结构 |
| KV 缓存支持 | 块间自回归天然支持 KV 缓存 | 推理效率提升 |
| 数据驱动噪声调度 | 最小化训练梯度方差 | 收敛更快更稳定 |
| 梯度方差估计器 | 高效估计训练方差 | 理论分析 |
| 并行 token 采样 | 块内 token 并行生成 | 比纯 AR 更快 |
五、实验结果
语言建模基准
BD3-LM 在多个标准基准上达到扩散模型 SOTA:
| 数据集 | BD3-LM | SEDD | MDLM | AR |
|---|---|---|---|---|
| OpenWebText | SOTA | ↓ | ↓ | 参考 |
| PubMed | SOTA | ↓ | ↓ | 参考 |
| arXiv | SOTA | ↓ | ↓ | 参考 |
块大小权衡
| 块大小 | 质量 | 速度 | 特性 |
|---|---|---|---|
| K=1 | AR 级别 | 串行 | 纯自回归 |
| K=8 | 接近 AR | 更快 | 平衡点 |
| K=32 | 略降 | 更快 | 更多并行 |
| K=∞ | 扩散级别 | 最快(并行) | 纯扩散 |
生成质量
- 困惑度 (Perplexity):接近甚至匹配自回归模型
- 生成速度:比纯自回归快(块内并行)
- 可控性:支持 inpainting、条件生成等扩散特性
与现有方法对比
| 方法 | 类型 | 似然 | 长度灵活 | KV 缓存 | 并行生成 |
|---|---|---|---|---|---|
| AR | 自回归 | 高 | ✅ | ✅ | ❌ |
| SEDD | 扩散 | 中 | ❌ | ❌ | ✅ |
| MDLM | 扩散 | 中 | ❌ | ❌ | ✅ |
| BD3-LM | 混合 | 高 | ✅ | ✅ | ✅ |
六、相关工作整合
扩散语言模型
| 方法 | 关键特点 | 与 BD3-LM 关系 |
|---|---|---|
| SEDD | Score Entropy 离散扩散 | 基线,固定长度 |
| MDLM | Masked 扩散语言模型 | 基线,固定长度 |
| SSD-LM | 半自回归 Simplex 扩散 | 相关思路 |
| LLaDA | 大规模离散扩散 | 相关方向 |
自回归 + 扩散混合
| 方法 | 关键特点 | 与 BD3-LM 关系 |
|---|---|---|
| Diffusion Forcing | AR 结构 + 序列去噪 | 相关思路 |
| MDLM+AR | 混合方法 | 类似动机 |
位置论文
| 方法 | 关键特点 | 与 BD3-LM 关系 |
|---|---|---|
| Inference-time Scaling | 序列扩展 + 状态精炼两轴 | BD3-LM 是两轴结合的实例 |
七、代码与资源
代码仓库
- GitHub: https://github.com/kuleshov-group/bd3lms
- Stars: 1000+
- 语言: Python
- 许可: MIT
代码结构
bd3lms/
├── main.py # 训练和评估例程
├── noise_schedule.py # 噪声调度
├── diffusion.py # 前向/反向扩散
├── dataloader.py # 数据加载
├── utils.py # LR 调度器、日志
└── models/ # 网络架构
预训练模型
- HuggingFace: kuleshov-group/bd3-lms
- 提供多个规模的预训练模型
基线实现
代码包含以下基线的完整实现:
- AR: 自回归模型
- SEDD: Score Entropy 离散扩散
- MDLM: Masked 扩散语言模型
- SSD-LM: 半自回归 Simplex 扩散(仅采样)
八、总结
核心贡献
- 概念创新:块级分解统一自回归和扩散语言模型
- 灵活插值:通过块大小在 AR 和扩散之间连续调节
- 实用价值:支持 KV 缓存 + 任意长度 + 并行生成
- 训练优化:数据驱动噪声调度最小化梯度方差
- SOTA 性能:扩散模型在语言建模基准上的新 SOTA
- 影响力:ICLR 2025 Oral,1000+ GitHub Stars
技术影响
- 统一视角:打破了 AR 和扩散的二分法
- 实用框架:为扩散语言模型提供了实用的工程方案
- 研究方向:启发了更多混合生成范式的研究
- 代码开源:完整的训练/评估代码和预训练模型
局限性
- 块大小需要手动调节
- 块内扩散仍有一定质量损失
- 相比纯自回归,在极长序列上的优势有限
九、参考资源
- 论文: https://arxiv.org/abs/2503.09573
- OpenReview: https://openreview.net/forum?id=tyEyYT267x
- 代码: https://github.com/kuleshov-group/bd3lms
- 项目页: https://m-arriola.com/bd3lms
- HuggingFace: https://huggingface.co/collections/kuleshov-group/bd3-lms-67be95f81b96b15fec50d53f
- 关键引用:
- SEDD: Score Entropy Discrete Diffusion
- MDLM: Masked Diffusion Language Model
- SSD-LM: Semi-autoregressive Simplex-based Diffusion LM
- LLaDA: Large Language Diffusion Model