
扩散语言模型是怎么构建的:从 masked diffusion 到 Mercury、Gemma Diffusion 的完整路线图
一次讲透扩散语言模型:为什么自回归不是唯一出路,masked diffusion 怎么把 BERT 变成生成模型,block diffusion、remasking、蒸馏、可控生成这些模块如何拼出 Mercury、Gemma Diffusion、Nemotron 等生产级模型。
原文来源:Kuleshov Group — 康奈尔 Kuleshov 组基于 ICLR 2026 工作坊与 MLSS 2026 讲座整理的扩散语言模型构建教程,从 masked diffusion 讲到 Mercury、Gemma Diffusion、Nemotron 等生产级模型。
2024 年之前,"扩散模型"几乎等同于图像生成:Stable Diffusion、Midjourney 都是这条技术路线。文本生成则被自回归模型垄断——GPT 系列一个一个往外蹦 token。但这两年格局变了:扩散开始进入语言模型,Mercury 2、Gemma Diffusion、Nemotron Diffusion 接连发布,速度上直接碾压同档自回归模型。这篇教程来自康奈尔大学的 Kuleshov 研究组(ICLR 2026 工作坊和 MLSS 2026 讲座材料整理),把"如何构建一个扩散语言模型"从头到尾讲了一遍。本文为你梳理这条完整路线图。
为什么自回归不是终点
主流 LLM 都是自回归的:从左到右一个 token 一个 token 地生成,每个 token 依赖前面所有 token。这套方法统治了十年,但有三个结构性缺陷:
- 无法纠错。一个 token 吐出来就不能改了,早期的错误会一路放大。
- 生成慢。序列多长就要跑多少步,天然没法并行。
- 只能看过去。因果注意力让模型永远看不到未来的上下文。
扩散模型换了个思路:不逐个生成,而是先生成一整段"草稿",然后多轮迭代精修。每个位置都能看到双向上下文,早期错误可以在后续步骤被修正,而且可以通过调节步数在速度和质量之间权衡。
—— 广告 ——
第一步:理解扩散的基本框架
扩散模型的核心是"去噪"(denoising)。图像扩散里,模型不是一笔一笔画图,而是从纯随机噪声出发,每步去掉一点噪声,多步之后浮现出清晰的图像。
这个流程靠两个过程配合:
- 前向过程(forward):把一张干净图片逐步加入高斯噪声,直到变成纯噪声。这一步不需要学习,纯粹是加噪声——但它制造了无穷无尽的训练数据:图片逐渐变成噪声的轨迹。
- 反向过程(reverse):训练一个模型,沿着前向轨迹倒着走,把噪声一步步还原成图片。
训练完成后的生成就是:从纯噪声出发,让模型估计并剥离一点噪声,重复多次。这个"加噪声再学去噪"的配方,是所有扩散模型的通用蓝图——问题只在于:文本是离散的 token,噪声该怎么定义?
第二步:masked diffusion——把 BERT 变成生成模型
文本没法加高斯噪声(对类别变量加连续噪声在数学上不成立),最简单的替代是掩码(masking):把序列里随机一部分 token 替换成 [MASK],让模型填空。
训练方式几乎就是 BERT:拿干净序列,随机掩掉一部分 token,训练一个双向 Transformer 重建它们。区别在于——BERT 用的是固定掩码率,而 masked diffusion 随机采样掩码率,并且训练出来的模型是生成式的。你可以把它理解成"生成版 BERT"(generative BERT)。
生成过程也直观:从一个全部是 [MASK] 的序列开始,循环两步——
- 填空(infilling):让模型预测每个空位该是什么 token,得到一版粗糙的完整序列。
- 重新掩码(remasking):随机把一部分刚填好的 token 重新掩掉,但这次保留的比上一轮多。
每轮掩码越来越少,直到序列全部展开。生成顺序是完全任意的——模型可能先确定句子的中间,再补开头和结尾。
从概率角度看,masked diffusion 有一个优雅的性质:它的训练目标(ELBO)化简之后,内部那一项就是 BERT 的交叉熵损失——只不过是对所有掩码率求平均。这让它可以直接用困惑度(perplexity)和自回归模型做公平比较。早期扩散 LM 和自回归的困惑度差距巨大,简化后的 masked diffusion(MDLM)是第一批大幅拉近这个差距的方法之一。
第三步:解决现实问题——变长、纠错、加速
基础 MDLM 只能生成固定长度序列,且一旦 token 被揭开就永远不能改。生产级模型需要解决三个问题:
变长生成 → Block Diffusion。把序列切成块(block),一次扩散一个块,块与块之间按顺序生成并缓存。块大小可以任意定——生物应用里按领域先验设,语言建模里按 GPU 利用率选。生成的块可以缓存 KV,像自回归那样加速后续块。Gemma Diffusion 就是这么干的:一次扩散 256 个 token 的"画布",直到拼出完整序列。更进阶的变体还有 Set Diffusion(任意位置集合)、Edit Flows(用插入/删除/替换操作建模)。
纠错能力 → Remasking 与 Uniform Diffusion。标准 MDLM 不能自我纠错:前向过程从不重新掩码已揭开的 token,模型就没学过"改错"。最简单的修复就是重新掩码:每步除了保留新揭开的 token,再随机掩掉一小部分已揭开的,让它们有机会被重新生成——一句有语法错误的话,重新掩码后会在更多上下文的帮助下被修正。更彻底的方案是 uniform state diffusion(UDLM):不用掩码,而是把 token 替换成词表里的随机 token,生成时序列里没有掩码,任何位置每步都可以被修改。Gemma Diffusion 就是 UDLM。
提速 → 蒸馏。扩散每步能生成或精修多个 token,本身就有 5-10 倍的速度优势,但多 token 同时生成会引入不一致(比如单复数对不上)。生产模型用渐进式蒸馏(progressive distillation)加速:训练一个学生模型,把老师模型的两步合成一步,递归执行,采样步数每轮减半。本质是 on-policy 训练——用模型自己的生成样本做后处理,把采样路径缩短。
第四步:可控生成是扩散的隐藏王牌
扩散模型擅长可控生成:生成满足特定性质的样本。原因在于它全局精修而非不可逆地局部提交,可以在样本空间里更有效地导航。
实际效果是一个帕累托权衡:自然度(像不像真实数据)和性质满足度(有没有目标属性)。对同一水平的自然度,离散扩散能达到更高的性质满足度——这是自回归做不到的。
实现方法两种:
- 分类器引导(CBG):训练一个性质预测器,每步去噪时用它把生成过程推向目标性质。
- 无分类器引导(CFG):不训练单独的分类器,用同一个模型的条件/无条件两种模式做组合。训练时随机丢弃条件信号,让网络同时学会两种模式。
这两种方法在 UDLM 或 MDLM+remasking 上效果最好——因为它们支持反复修改 token,引导信号可以持续生效。NT-v3 的湿实验室实验就是例证:用引导生成的增强子序列,在目标表达水平上比天然增强子活性更高。
第五步:post-training 也能上 RL
扩散 LM 同样可以用强化学习做后训练提升推理能力,但有个麻烦:策略梯度方法需要采样轨迹的似然,自回归模型是简单的 next-token 概率连乘,masked diffusion 的训练目标对所有掩码顺序取平均,似然计算很贵。论文 d1 提出了 diffu-GRPO——用平均场近似估计轨迹对数概率,配合掩码监督微调蒸馏推理行为;d2 进一步给出精确的单遍估计器,在逻辑和数学推理基准上达到新 SOTA,且完全不依赖监督微调。生物领域还有 DRAKES 这类方法,把实验测得的奖励(结合亲和力、基因表达)通过采样轨迹反向传播,直接微调 DNA 和蛋白质设计模型。
现实世界:已经在跑的生产级模型
教程最后盘点了当前的开源扩散 LLM 生态:
- LLaDA:8B 参数开源模型,MDLM 主干 + block diffusion 采样,兼容 remasking 和后训练,在通用、数学、代码基准上和同规模自回归模型打平,还报告了类似自回归的 scaling 行为。
- Mercury:第一个商业扩散 LLM,靠并行生成在标准 GPU 上超过 1000 token/秒/用户,Mercury 2 在同等质量下比 Claude Haiku、Gemini Flash-Lite 快 5-10 倍。这个速度以前只有 Groq 这类专用芯片能摸到——扩散模型靠"改变算法去适配硬件"做到了。
- Gemma Diffusion:谷歌开源,UDLM 主干 + block diffusion + encoder-decoder 架构 + 蒸馏加速,Unsloth 和 Hugging Face 都支持。
- Nemotron Diffusion:英伟达开源,联合自回归-扩散训练目标,最新模型 35B 参数,报告比同类自回归模型快 2-8 倍且保留 99% 质量,单个 checkpoint 还能回退到纯自回归解码。
- 科学领域先行者:ESM3(100B 参数蛋白质模型,MDLM 实现)、NT-v3(DNA 模型,与 BioNTech 合作训练,超万亿 token,支持离散 CFG 引导生成目标表达水平的调控序列)。
最后的问题:扩散是通向更强智能的路吗
教程作者把这个问题留到了最后,用 scaling law 的视角回答:
2019-2024 年模型智能的最大来源是预训练规模化,而让规模化成为可能的是 Transformer——它把 RNN 这种本质串行的算法换成了完全并行的训练算法,吃满了 GPU。2024 年之后预训练收益开始平台化,智能增益主要来自后训练和推理时计算——但这两者都被"生成速度"卡住,因为今天的推理仍然是串行算法。
如果推理也能像训练一样并行化,智能增益可能复现预训练时代的大爆发。 扩散模型正是那个让推理完全并行的候选方案。作者的原话很克制但也很重:"扩散之于推理时和后训练 scaling law,可能就像 Transformer 之于 RNN 的预训练 scaling law。"能每秒烧更多 FLOPs,就能解锁更好的硬件利用率,从而打开新的规模化空间。
扩散语言模型能走多远还不好说,但至少,留给自回归的时间不多了。
© 2026 四月
原文链接:https://www.aprilzz.com/tutorials/build-diffusion-language-model-guide
相关文章
让 AI Agent 直接读你的网站:Accept: text/markdown 内容协商实战教程
手把手教你把网站变成 AI Agent 友好:用 Accept: text/markdown 内容协商,让 Claude Code、Cursor 等工具直接读到干净的 Markdown。含 Caddy、Nginx、Next.js、Cloudflare 配置和验证方法。
在 Mac 上搭建本地编程 Agent:llama.cpp + Gemma 4 + MTP 投机解码完整指南
断网也能用的编程 Agent:用 llama.cpp 在 Mac 上跑 Gemma 4 26B,配合 MTP 投机解码把生成速度从 58 提到 72 token/s,再接上支持图片输入的 Pi 终端 Agent。
从提示词到模型部署:这套免费 Colab 笔记本把 AI 工程师技能栈讲透了
calmrocks 开源的 AI Engineer Notebooks:一套框架无关的 Colab 笔记本,从提示词、结构化输出、RAG、Agent 循环,到微调、安全、LLMOps、模型部署,完整覆盖 AI 工程师技能栈,全程跑在免费 Groq API 上,还带练习和求职用的 capstone 项目。