DiffusionGemma深度解析:谷歌用扩散模型颠覆传统文本生成范式

2026年初,谷歌DeepMind放出了一项不太寻常的实验成果——DiffusionGemma。它没有走主流大模型"堆算力、从头训"的老路,而是把一个现成的Gemma 4 26B A4B MoE模型改造成了文本扩散模型。在H100上,它能跑到每秒约1500 token的生成速度,比同级别的自回归模型快4倍,而训练花费不到原始预算的10%。更值得关注的是它生成文本的方式:不再是逐字猜测下一个token,而是从一个铺满噪声的画布出发,把一整块256个token像去噪图像那样一次性"洗"出来。
文本生成可能正在经历一次范式级的转向。
自回归与扩散:两条生成路径的分野
自回归(Autoregressive,AR)模型是目前几乎所有主流大语言模型采用的生成方式。它的逻辑很直接:给定上文,预测下一个token,再把预测结果拼回上文,继续预测下一个,如此反复。GPT系列、Gemini、Llama、Qwen都遵循这条路径。优点是结构清晰、生成质量高,缺点也很明显——生成过程是严格串行的,每个token都依赖前一个,无法充分利用GPU的并行计算能力,长文本生成时延迟累积严重。
扩散模型(Diffusion Model)则来自另一条传统——图像生成。它的思路完全不同:不预测"下一个",而是从一个纯噪声状态出发,通过多步迭代去噪,逐步把信号还原出来。Stable Diffusion、DALL-E用的就是这套机制。扩散模型天然支持并行,因为它在每一步可以同时处理整张画布上的所有像素。
问题在于,图像是连续的、可以在实数空间做加噪去噪,而文本是离散的——token就是token,没有"半个token"或者"稍微有点噪声的token"这种东西。怎么把扩散机制搬到离散的文本空间,是过去几年学术界反复啃的硬骨头。
DiffusionGemma给出的答案是:离散扩散(Discrete Diffusion)。
DiffusionGemma的架构改造:从AR到扩散
DiffusionGemma最聪明的工程决策,是没有从零训练一个扩散模型。它直接拿Gemma 4 26B A4B MoE(一个26B参数、每次激活约4B参数的混合专家模型)做初始化,把一个已经具备强大语言理解能力的AR模型,改造成扩散模型。
这里的关键改造点在于前向传播方式的调整。传统AR模型在推理时使用因果掩码(causal mask),每个位置只能看到它左边的token,保证生成方向是单向的。DiffusionGemma去掉了这个因果掩码,让模型在每一步都能同时"看到"画布上的所有token——不管它们位于哪个位置。这一改动看似简单,却是从"逐token串行"到"全画布并行"的根本性转变。
模型保留了Gemma原有的MoE路由结构和参数权重,复用了已经学到的语言知识,只是改变了信息流动的方向。这解释了为什么训练成本能压到原预算的10%以下:不需要重新学习语言的统计规律,只需要让模型适应"从噪声中恢复"这个新任务。改造的具体做法可以拆成几步:
第2步是整个改造中技术含量最高的一环。因果掩码是AR模型的根基,移除它意味着模型从"只能往后看"变成"前后都能看"。但这也带来一个训练上的挑战:双向注意力下,模型不能再用"预测下一个token"这个简单目标来训练,需要一个与之匹配的扩散训练目标。DiffusionGemma的做法是训练模型在给定部分掩码画布的条件下,预测被掩码位置的真实token——本质上是一个掩码语言建模(Masked Language Modeling)目标的扩散化推广。
离散扩散机制:把噪声搬进token空间
离散扩散的核心难题,是定义"文本的噪声"到底是什么。
在连续扩散中,噪声是高斯分布的随机数,可以平滑地加到图像像素上。token是离散的,没法加一个"0.3的噪声"。DiffusionGemma采用的方案是掩码(mask)机制:把噪声定义为一个特殊的[MASK]占位符替换原始token。画布上越多的位置是[MASK],就越接近"纯噪声";越多的位置是真实token,就越接近"清晰文本"。
整个生成过程可以理解为一个逐步揭示的过程:
[MASK],相当于纯噪声[MASK]位置预测它最可能是什么真实token,同时根据噪声调度决定这一步要"揭示"多少个位置[MASK]替换为预测token,其余位置保持掩码状态,进入下一步这种机制有几个值得注意的特性。每一步都是全画布并行计算,256个token同时处理,而非逐个串行。模型在每一步都拥有全局视野,能同时看到已揭示的token和待揭示的掩码,做出全局协调的决策。揭示顺序不是从左到右,而是由模型根据上下文置信度决定,语义上更关键的token可能先被确定,再由它们引导周围的token填充。
"生成整个段落而非逐token猜测"这件事正是在这里落地的。模型不是在猜第301个token是什么,而是在256个token的块里同时确定所有内容,再考虑它们之间的逻辑关系。一个段落的主题句和支撑句可以在同一去噪步里被协同确定,而不是主题句先固定、支撑句再被动跟随。
性能分析:速度、质量与成本的三角
每秒约1500 token的吞吐量,是DiffusionGemma最吸睛的数字。这个加速主要来自两个层面:并行性(每步同时处理256个token)和步数效率(扩散过程不需要逐token迭代256次,而是用几十步去噪覆盖整个块)。在H100上,这意味着一个256 token的段落理论上能在170毫秒内生成完毕,对于交互式应用而言,这是一个用户几乎感知不到的延迟。
质量维度的图景更复杂。在结构化输出任务上,DiffusionGemma表现突出——数独求解等需要全局逻辑一致性的任务,正是扩散模型全画布视野的用武之地。AR模型生成数独时常常逐行出现矛盾,因为它在填某一行时看不到后面几行的约束;扩散模型能同时统筹整个9x9网格,在去噪过程中就兼顾行列宫的所有约束。
但在推理类基准测试上,DiffusionGemma仍落后于同架构的AR版本。这部分暴露了离散扩散目前的软肋:虽然全局视野有助于一致性,但逐步去噪的"猜"的过程,在需要精确逻辑链的推理任务上,不如AR模型"一步一步推下去"来得可靠。数学推导、多步逻辑推理这类对顺序极度敏感的任务,扩散模型容易在早期去噪步做出局部看似合理但全局有误的判断,而后续步骤难以彻底纠正。
训练花费不到原始训练预算的10%,是工程上最具说服力的数字。这个数字背后的逻辑是:复用预训练权重,只训练扩散适应部分,把一个需要几千卡时的从零训练任务,压缩成了几百卡时的微调任务。如果这条路径能复用到其他预训练AR模型上,意味着大量已经训练好的模型都有机会以低成本获得扩散生成的并行加速能力。
以下是关键指标的横向对比:
| 维度 | DiffusionGemma(扩散) | 传统AR模型(同级) |
|---|---|---|
| 生成方式 | 256 token块并行去噪 | 逐token自回归 |
| 生成速度(H100) | ~1500 token/s | ~375 token/s |
| 全局一致性 | 高(全画布视野) | 低(仅上文可见) |
| 结构化输出(数独等) | 表现突出 | 易出现局部矛盾 |
| 推理基准 | 落后于AR版本 | 较强 |
| 训练成本 | <10%原始预算 | 100%(从零训练) |
| 初始化方式 | 复用Gemma 4预训练权重 | 通常从零或部分预训练 |
| 开源许可 | Apache 2.0 | 因模型而异 |
| 生成粒度 | 整段/整块 | 单token |
代码示例:使用DiffusionGemma
DiffusionGemma遵循Apache 2.0许可证开源,使用方式与Hugging Face生态兼容。以下是一个基础的推理调用示例(基于diffusion transformers的通用接口风格,接口处于实验阶段,实际参数名以官方文档为准):
import torch
from diffusers import DiffusionGemmaPipeline
# 加载模型,扩散文本模型使用专用pipeline
pipe = DiffusionGemmaPipeline.from_pretrained(
"google/diffusiongemma-26b",
torch_dtype=torch.bfloat16,
device_map="auto",
)
# 文本生成:扩散模型接收prompt后从噪声画布去噪
prompt = "请解释离散扩散模型与传统自回归模型的核心区别,要求条理清晰。"
output = pipe(
prompt=prompt,
block_size=256, # 每次去噪一个256 token的块
num_denoising_steps=32, # 去噪步数,越少越快但质量越低
guidance_scale=3.5, # 引导强度,控制对prompt的遵循程度
)
print(output.text)对于结构化输出场景,DiffusionGemma的全局视野优势可以更直接地体现。下面以数独求解为例,这类任务需要同时满足行、列、宫的多重约束,正是扩散模型全画布推理的强项:
# 数独求解:利用全局一致性
sudoku_prompt = """
求解以下数独,空格用0表示:
5 3 0 | 0 7 0 | 0 0 0
6 0 0 | 1 9 5 | 0 0 0
0 9 8 | 0 0 0 | 0 6 0
------+-------+------
8 0 0 | 0 6 0 | 0 0 3
4 0 0 | 8 0 3 | 0 0 1
7 0 0 | 0 2 0 | 0 0 6
------+-------+------
0 6 0 | 0 0 0 | 2 8 0
0 0 0 | 4 1 9 | 0 0 5
0 0 0 | 0 8 0 | 0 7 9
只输出完成的数独网格。
"""
output = pipe(
prompt=sudoku_prompt,
block_size=256,
num_denoising_steps=64, # 结构化任务用更多步数提升准确性
guidance_scale=5.0,
)
print(output.text)调参时有几条经验值得留意。num_denoising_steps步数越多质量越好但越慢,文本生成32步通常够用,结构化任务建议64步以上。block_size默认256,块越大单次生成内容越多,但显存占用随之上升。guidance_scale引导强度过高会导致文本重复或僵硬,过低会偏离prompt,3到5之间通常较稳。
应用场景:扩散模型擅长什么
DiffusionGemma的特性决定了它并非在所有场景都优于AR模型,但在几个方向上展现出独特价值。
实时交互AI是扩散模型最具潜力的应用场景。每秒1500 token的吞吐意味着,对于一个256 token的回复,理论生成时间在170毫秒以内。对于聊天机器人、AI助手这类对首字延迟和整体响应速度敏感的场景,并行生成能显著缩短用户等待时间。AR模型的逐token生成天然受限于序列长度,扩散模型的块式生成则把这个限制大幅放宽。
结构化输出是另一个明确的优势领域。需要全局一致性的任务——数独、约束满足问题、格式严格的JSON生成、SQL查询补全——都能从全画布视野中受益。AR模型生成结构化内容时常见的"前后矛盾"问题,在扩散模型中得到缓解,因为模型在每一步都能看到整块内容并协调它们之间的关系。
可控生成与编辑是扩散机制的延伸能力。由于生成过程是"从噪声到清晰"的逐步揭示,可以在揭示过程中施加约束:固定某些位置的内容,让模型围绕已知部分补全其余位置。这种"填充式生成"对文本编辑、条件续写、代码infilling很自然,而AR模型做这类任务需要额外的技巧来处理"中间挖洞"的情况。
长文本规划也可能受益。AR模型写长文时常出现"前文铺垫后文忘"的现象,根源在于它只看得到上文。扩散模型的块式全局视野,让模型在写一个段落时能同时考虑段落内各句的关系,理论上更利于段落级的连贯性。当然,跨块的连贯性仍是需要进一步解决的问题——每个256 token块内部是一致的,但块与块之间的衔接目前仍依赖串行的拼接策略。
局限与未来:离全面替代还有多远
推理能力落后是最实质性的差距。在需要严格逻辑链的推理基准上,扩散版本目前跑不过同架构的AR版本。深层原因可能在于:扩散模型的去噪是"在多个位置同时猜测",缺乏AR模型"一步一步推"的顺序性约束。对于数学推导、多步逻辑这类对顺序敏感的任务,这种差异会被放大。一个可能的改进方向是混合策略——用扩散做快速草稿,用AR做精细校验,或者让扩散模型在关键推理步骤上采用更谨慎的去噪策略。
训练数据与规模的扩展性也有待验证。目前DiffusionGemma基于26B MoE,这个规模虽然不小,但与当前最大的稠密模型和千亿级MoE相比仍有差距。扩散机制在更大规模上是否能保持成本优势和速度优势,会不会遇到新的训练不稳定问题,需要更多实验支撑。
生态成熟度是另一个现实因素。AR模型经过多年发展,推理框架(vLLM、TensorRT-LLM)、量化方案、部署工具链已经非常成熟。扩散文本模型作为新生事物,配套基础设施仍在早期,生产环境部署需要更多工程投入。上面的代码示例中使用的pipeline接口也还处于实验阶段,API稳定性尚无保证。
从更长远的视角看,DiffusionGemma验证了一个重要的工程假设:AR模型可以低成本地"转换"为扩散模型。如果这条路径成立,那么未来大量已经训练好的AR模型,都有可能以较低成本获得扩散生成的并行加速能力。这比单纯做出一个扩散文本模型的意义要大得多。
几个值得关注的演进方向:
DiffusionGemma是一次有分量的实验。它没有宣称要立刻取代自回归模型,但用每秒1500 token的速度、不到10%的训练成本、以及结构化任务上的亮眼表现,证明了一件事:文本生成不只"逐字猜测"一条路。这条路能走多远,取决于后续在推理质量和工程生态上的进展。但至少,方向已经打开。
💬 评论区 (0)
暂无评论,快来抢沙发吧!