内容提要
Google DeepMind发布实验性开源文本模型DiffusionGemma,基于Gemma 4 26B混合专家架构,采用扩散式并行生成:每次对256个占位token的画布同时去噪,而非逐token自回归,将瓶颈从内存带宽转向计算,并支持自我纠错。模型支持文本、图像、视频输入,量化后可在18GB显存消费级GPU运行,内置思考模式。文章演示了用Transformers加载、生成、观察去噪过程及vLLM部署,并介绍推荐采样参数。
延伸解读
扩散生成如何改变推理瓶颈
传统自回归模型逐token生成,瓶颈在内存带宽:GPU计算核心常因等待权重加载而闲置。DiffusionGemma每次并行去噪256个占位token,将瓶颈转向计算,让GPU有真正并行的工作负载。这解释了其速度潜力,但也意味着性能更依赖计算资源而非内存带宽。对于本地单用户场景,这种转变可能更充分利用硬件;但在高并发云端,自回归模型成熟的批处理优势仍更明显。
自我纠错的结构性优势与代价
由于每个画布内使用双向注意力,模型可在去噪过程中重新加噪低置信度token并重试,这是自回归模型无法做到的。推荐采样配置中,熵边界选择只提交最确定的token,其余留待后续修正,温度从0.8线性降至0.4也体现了从探索到锁定的过程。不过,这种迭代去噪需要多步计算,最大48步、通常12-16步,可能抵消部分并行带来的速度收益,实际效率需结合具体任务评估。
本地部署的现实门槛与定位
文章明确区分了两种硬件路径:完整未量化模型需要60GB以上显存(如A100/H100),而量化版本目标18GB显存,可在RTX 4090/5090等消费级GPU运行。但需注意,这是实验性预览模型,Apache 2.0许可虽宽松,仍受Gemma禁止使用政策约束。vLLM部署时max-num-seqs刻意设低,说明其设计面向低并发单用户场景。若你追求本地低并发推理且希望利用GPU计算资源,它值得尝试;若面向高并发生产服务,传统自回归模型仍是更稳妥选择。
Q&A
DiffusionGemma 和普通自回归模型在生成方式上有什么根本区别?
普通自回归模型逐 token 从左到右生成,每个新词都依赖之前写好的内容,且一旦生成就无法修改。DiffusionGemma 则采用扩散式并行生成:它从一个包含 256 个占位 token 的画布开始,通过多轮去噪同时细化整个块,而不是按顺序逐个生成。对于超过一个画布的长序列,它使用块自回归去噪:一个画布完全解析后,会以因果注意力提交到 KV 缓存,然后基于已提交内容开始新的 256 token 画布去噪。
DiffusionGemma 为什么能把生成瓶颈从内存带宽转向计算?
标准自回归模型在生成每个 token 时,需要反复从内存加载全部权重,导致 GPU 计算核心大部分时间处于空闲等待数据的状态,瓶颈在内存带宽。DiffusionGemma 一次性对 256 个 token 的画布进行并行去噪,给 GPU 提供了大规模、真正并行的工作负载,使其计算核心得到充分利用,从而将瓶颈转移到计算上,这也是速度提升的来源。
DiffusionGemma 的自我纠错能力是如何实现的?
在去噪过程中,模型使用熵界 token 选择策略:每一步只提交熵最低(最自信)的 token,其余 token 重新加噪,留待下一步修正。如果某个 token 的置信度在去噪中途下降,采样器可以对其重新加噪并让模型重试。这种双向注意力机制允许画布内任意 token 相互关注,从而支持自我纠错,而自回归模型一旦写出 token 就无法回溯修改。
在消费级 GPU 上本地运行 DiffusionGemma 需要什么条件?
量化后的 DiffusionGemma 可在 18GB 显存内运行,适合 RTX 4090 或 5090 等高端消费级 GPU。软件方面需要安装 PyTorch、accelerate 以及 transformers 5.11.0 或更高版本,因为块扩散架构依赖该版本才有的模型类。加载时使用 DiffusionGemmaForBlockDiffusion 类和 AutoProcessor,并设置 dtype="auto" 和 device_map="auto" 以自动选择精度和分配显存。
如何用 Transformers 观察 DiffusionGemma 的去噪过程?
可以使用 TextDiffusionStreamer。在调用 model.generate 时传入 streamer=TextDiffusionStreamer(tokenizer=processor.tokenizer),它会在每个去噪步骤后拦截并打印画布状态,而不是等待最终结果。这样你能直接看到文本从噪声逐渐细化的过程,直观理解并行去噪的机制。
DiffusionGemma 推荐的采样参数有哪些,分别起什么作用?
推荐参数包括:最大去噪步数 48(自适应停止通常提前在 12-16 步结束);温度线性调度从 0.8 降到 0.4,先鼓励探索再锁定最终 token;自适应早停的熵阈值为 0.005,当平均置信度高且连续两次通过结果一致时提前停止;token 选择使用熵界 0.1,每步只提交最自信的 token,其余重新加噪。这些参数共同实现了从不确定到确定的渐进细化。
DiffusionGemma 支持哪些输入模态,输出是什么?
DiffusionGemma 在输入侧是多模态的,支持文本、图像(可变宽高比和分辨率)和视频,但不支持音频。输出始终是文本。它不是一个图像生成模型,扩散过程仅应用于文本输出侧。
在生产环境中如何用 vLLM 部署 DiffusionGemma?
Google 与 vLLM 团队合作,将迭代去噪循环集成到 vLLM 服务引擎中。使用 vllm serve 命令并指定模型 google/diffusiongemma-26B-A4B-it,关键参数包括:--hf-overrides 设置 diffusion_sampler 为 entropy_bound、diffusion_entropy_bound 为 0.1,--diffusion-config 设置 canvas_length 为 256。部署后会暴露标准的 OpenAI 兼容本地服务器,现有工具无需修改代码即可对接。