8 步出图:Z-Image 图像生成的 Decoupled-DMD 蒸馏加速原理

发布时间:2026/11/4 11:17:36
8 步出图:Z-Image 图像生成的 Decoupled-DMD 蒸馏加速原理

8 步出图:Z-Image 图像生成的 Decoupled-DMD 蒸馏加速原理

【免费下载链接】Z-Image项目地址: https://gitcode.com/gh_mirrors/zi/Z-Image

多数扩散式图像生成模型要跑 30 到 50 步去噪才出一张图,而 Z-Image-Turbo 只用 8 步,在 H800 上延迟能压到 1 秒以内。它没靠堆参数——整个模型只有 6B——而是用一套叫 Decoupled-DMD 的少步蒸馏算法把步数砍下来。下面拆开讲:8 步为什么够用、架构怎么配合、训练如何一步步走到这。

传统扩散模型为什么卡在几十步

扩散与 flow matching 模型靠"逐步去噪"工作:从纯噪声出发,每一步朝真实图像方向挪一点,挪得步数越多,细节和结构越准。这就是为什么默认配置普遍落在 28 到 50 步——少一步,画面就容易糊或错位。

更麻烦的是,很多模型每步还要额外做 Classifier-Free Guidance(CFG),即同一份噪声跑两遍:带提示词一遍、不带一遍,把两次输出相减来增强文字贴合度。这直接让每步算力翻倍,名义 50 步实际是约 100 次前向。

于是"快"和"好"打架:想快就减步,减步就掉质量。Z-Image 想解决的就是这个权衡。

核心机制拆解:把 DMD 拆成"发动机"和"安全带" 🔬

先说 DMD(Distribution Matching Distillation,分布匹配蒸馏)要干嘛:让学生模型一次性逼近老师模型的输出分布。可以理解为临摹——不是逐笔画,而是整体"神似",这样学生才有机会几步出图。

这套方法有效,其实靠的是两股独立又同时起作用的力:

  • CFG 增强(CA):真正驱动蒸馏的"发动机",早期工作基本忽略了它。
  • 分布匹配(DM):兜底的"安全带",防止学生跑偏、保证稳定。

传统 DMD 把两股力拧在一条混合梯度里,调不动。解耦方案(Decoupled-DMD 的思路)则把同一梯度拆成两项:CA 项代表"增强带来的增益",DM 项代表"真实分布与学生分布的差距"。分开后就能单独放大 CA、单独控制 DM,少步下更稳。

打个比方,像炖汤:CA 是"火力与主料",决定汤够不够味;DM 是"最后尝一勺,别咸了",负责纠偏。传统做法把加料和尝味混在一锅里,难精调;解耦后分开控制火候。

维度传统 DMD 视角解耦视角
梯度来源CFG 合成参考 vs 学生拆成 CA + DM 两项独立
主力角色混在一起,难以归因CA 为主引擎,DM 做正则
调参方式只能整体缩放CA / DM 分别加权
少步稳定性容易抖解耦后更稳

图:Decoupled-DMD 把一条混合梯度拆成 CA(增强)与 DM(分布匹配)两个独立分量,再分别优化。

支撑 8 步的 S3-DiT 架构与 4 个关键设计

架构名叫 S3-DiT(Scalable Single-Stream DiT),核心是把文本和图像都塞进同一条序列处理。通俗说:不像把"读懂文字"和"画图像"分成两条流水线,而是拼成一份长序列一起过 Transformer,交互更直接、参数也更省。

几个关键设计点:

  • 单流统一序列:图像 VAE token、文本(Qwen3-4B)特征、语义 token 拼成一条,30 层共享注意力。为什么:跨模态一步到位,避免双流拼接时的信息损耗。
  • 双 Refiner 前置:进主 Transformer 前,噪声图先过 2 层带时间调制的"噪声 Refiner",文本再过 2 层"上下文 Refiner"。为什么:各按自身特点先打磨一遍,再统一交互,减轻主层负担。
  • U-RoPE 三轴位置编码:按 32 / 48 / 48 维分轴给序列编码位置。为什么:图像是二维、文本是一维,统一编码后长序列更稳,细节更准。
  • QK-Norm 与零初始化门控:对注意力里的 Q、K 做 RMSNorm;AdaLN 的 scale/gate 门控初始化让残差贡献接近 0。为什么:前者压低 logit 幅值,后者让训练初期不扰动已有表征,少步蒸馏对这两点都敏感。

图:S3-DiT 将文本、语义、图像 token 拼成单流序列,注意力块内含 U-RoPE、Q/K-Norm 与零初始化门控。

从低分辨率预训练到强化学习:完整训练路径

图:主线从低分辨率预训练、Omni 全量预训练出发,分叉到生成侧的监督微调、少步蒸馏与强化学习。

整条路径分五步,每步都为下一步铺路:

  1. 低分辨率预训练:用小图低成本打底,先学到基础视觉规律。
  2. Omni 全量预训练:得到 Z-Image-Omni-Base,既能生成也能编辑,是后续所有分支的地基。
  3. 监督微调(SFT):用高质量图文对精调,产出 50 步的 Z-Image 基模。
  4. 少步蒸馏:应用 Decoupled-DMD,把 50 步老师压成 8 步学生,核心提速就发生在这一步。
  5. 强化学习(DMDR):在蒸馏后模型上结合人类反馈微调,得到 Z-Image-Turbo,兼顾对齐与细节。

编辑侧另有分支:对 Omni-Base 做"编辑续预训练 + 编辑 SFT",产出面向图像编辑的 Z-Image-Edit。

效果与适用场景:6B 参数、8 步、开源榜第一 📊

量化上,它把 50 步压缩到 8 步,同时把模型压到 6B——远低于竞品动辄几十上百 B 的体量。在 H800 上延迟低于 1 秒,16G 显存的消费级设备也能跑;开源模型榜上 ELO 1161,位列第一。能力上覆盖写实成像、中英双语文字渲染、较强的指令遵循。

图:Z-Image-Turbo(6B 参数)在开源图像生成模型榜以 1161 ELO 排名第一。

几个典型适用场景:

  • 写实人像、产品摄影快速出图
  • 中英双语文字海报、封面、标题卡
  • 设计原型、提案的批量快速出稿
  • 低显存、本地部署的轻量推理

快速上手:克隆仓库与最小运行配置

先克隆仓库:

git clone https://gitcode.com/gh_mirrors/zi/Z-Image

装好依赖后,直接运行仓库自带推理脚本即可。Turbo 的默认配置就是 8 步、guidance_scale 设为 0——因为蒸馏后不再需要 CFG,省掉了"跑两遍"的开销。若想换 Diffusers 路线或调整注意力后端,仓库 README 有对应说明。

关键位置可直接对照阅读:

  • 推理入口:inference.py
  • 生成管线(采样循环与 CFG 逻辑):src/zimage/pipeline.py
  • Transformer 实现(单流、双 Refiner、U-RoPE):src/zimage/transformer.py
  • 调度器(flow matching 与步数):src/zimage/scheduler.py
  • 默认参数(步数、guidance_scale):src/config/inference.py

8 步只是当前解耦蒸馏的一个落点,把 CA 和 DM 拆开后,两者还能各自继续调。对想复现或二次开发的人来说,代码把 transformer、调度器、管线分得很清楚,照着跑一遍就能看清每一步在做什么。

【免费下载链接】Z-Image项目地址: https://gitcode.com/gh_mirrors/zi/Z-Image

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考