5.2 SD3:MMDiT 与 Rectified Flow¶
所属章节:第 5 章 模型演进与系统对比
课时:90 分钟
前置:SDXL、Cross-Attention
对应面试题:A11
一句话目标:学完能说清 SD3 为什么从 UNet 转向 MMDiT、为什么用 Rectified Flow、T5/16ch VAE 带来什么。
1. 学习目标¶
学完本节,你应该能够:
- 解释 SD3 与 SDXL 的架构差异;
- 画出 MMDiT 的 token 流;
- 写出 Rectified Flow 的插值和损失;
- 解释 Flow 采样为什么能少步;
- 说明 三文本编码器/16ch VAE 的作用;
- 用 90 秒回答 A11,并接住“Flow 是不是 Diffusion”的追问。
2. 为什么 SD3 是一次范式变化¶
SDXL 仍是:
UNet + Cross-Attention + DDPM/ε-prediction
SD3 改为:
MMDiT + 联合注意力 + Rectified Flow
三个关键词:
- MMDiT:多模态 Transformer;
- Rectified Flow:更直的概率路径;
- T5 + 16ch VAE:更强的文本/重建。
3. MMDiT¶
3.1 与 Cross-Attention 的区别¶
Cross-Attention(SD1/2/XL):
- 图像特征做 Q;
- 文本做 K/V;
- 单向:图像查文本。
MMDiT(SD3):
- 文本 token 和图像 token 分别投影;
- 拼接后做联合 self-attention;
- 不同模态使用不同 QKV/MLP;
- 双向交互;
- QK normalization 稳定训练。
3.2 直觉¶
文本 token ─┐
├─ 拼接 → 联合 attention → 各自 MLP
图像 token ─┘
这样文本和图像在每一层都能互相“看”,表达力更强,也更容易 scale。
3.3 为什么用 Transformer¶
- 比 UNet 更容易扩展参数量;
- 联合注意力更自然;
- 训练/推理可以利用成熟的 Transformer 优化;
- 适合大规模数据。
4. Rectified Flow¶
4.1 插值¶
定义从数据 \(x_0\) 到噪声 \(\epsilon\) 的直线路径:
- \(t=0\):数据;
- \(t=1\):噪声。
4.2 速度目标¶
对 \(t\) 求导:
训练网络回归速度:
4.3 采样¶
用 Euler:
从 \(t=1\) 走到 \(t=0\)。
4.4 为什么能少步¶
- 路径更直;
- ODE 更容易积分;
- 不需要 DDPM 的随机反向;
- 1–8 步可以出图(具体看模型)。
4.5 和 DDPM 的关系¶
- DDPM:随机前向 + 去噪;
- Rectified Flow:确定性路径 + 速度回归;
- 都属于“从噪声到数据”的连续生成模型;
- Flow 不是“另一种 sampler”,而是训练目标/路径的变化。
5. 三文本编码器¶
SD3 使用:
- CLIP ViT-L/14:通用语义;
- OpenCLIP ViT-bigG/14:更强图文对齐;
- T5-XXL:长文本、组合推理、文字渲染。
作用:
- CLIP 提供强语义;
- T5 补 77 token 之外的长期依赖;
- 三者特征拼接/融合。
面试要点:
SD3 不是“不用 CLIP”,而是 CLIP + T5。
6. 16 通道 VAE¶
- SD1/2/XL:4 通道、8 倍下采样;
- SD3:16 通道 VAE;
- 更高维 latent,重建更好;
- 减少压缩伪影;
- 对文字/细节/纹理重要。
代价:
- latent 通道更多,计算/显存增加;
- VAE 设计更难。
7. 规模化¶
- SD3 Medium 约 2B 参数;
- SD3 Large 约 8B;
- SD3.5 延续 MMDiT/Rectified Flow,提供 Large/Medium/Turbo;
- 更大数据、更高分辨率、更好的 caption。
8. 对比 SDXL¶
| 维度 | SDXL | SD3 |
|---|---|---|
| 主干 | UNet | MMDiT |
| 条件交互 | Cross-Attention | 联合 attention |
| 训练目标 | 扩散(ε/v) | Rectified Flow |
| 文本编码器 | CLIP-L + OpenCLIP bigG | CLIP-L + bigG + T5-XXL |
| VAE | 4 通道 | 16 通道 |
| 文字/复杂 prompt | 中等 | 明显增强 |
| 采样 | 多步扩散 | Flow ODE,少步更容易 |
9. 90 秒回答:SD3 的核心优化¶
面试官问:SD3 的核心优化是什么?
参考回答:
“SD3 从 SDXL 的 UNet + cross-attention 转向 MMDiT + Rectified Flow。MMDiT 把文本和图像 token 分别投影后拼在一起做联合 self-attention,不同模态用不同 QKV/MLP,双向交互,比单向 cross-attention 表达力更强,也更容易 scale。训练目标改成 Rectified Flow:\(x_t=(1-t)x_0+t\epsilon\),网络回归速度 \(\epsilon-x_0\),采样用 Euler/Heun 解 ODE,轨迹更直、少步更容易。文本侧加了 T5-XXL 补长文本/组合推理,VAE 改成 16 通道改善重建。SD3 Medium 约 2B,Large 约 8B。”
10. 追问与回答¶
追问 1:MMDiT 和 Cross-Attention 的区别?¶
Cross-attention 是图像查文本,单向;MMDiT 是文本/图像 token 拼接做联合 attention,双向,不同模态独立投影。
追问 2:Rectified Flow 是 Diffusion 吗?¶
同属连续生成模型;但它是确定性概率路径 + 速度回归,采样解 ODE,不是 DDPM 的随机加噪/去噪。
追问 3:为什么加 T5?¶
CLIP 有 77 token 和组合性限制;T5 更适合长文本、计数、文字渲染。
追问 4:16 通道 VAE 有什么好处?¶
更高维 latent,重建更好,减少压缩伪影,对文字/细节重要;代价是计算/显存增加。
11. 常见误区¶
- 说 SD3 还用 UNet:它用 MMDiT。
- 把 Flow 当 sampler:它是训练目标/路径。
- 说 MMDiT 只是更大的 cross-attn:它是联合 attention。
- 说 SD3 不用 CLIP:仍用 CLIP-L/OpenCLIP,只是加 T5。
- 认为 Flow 一定 1 步:通常 1–8 步,看模型。
12. 课堂练习¶
答案见 06 章节练习与答案。
- 写 Rectified Flow 的插值和 loss。
- 画 MMDiT 的 token 流。
- 对比 Cross-Attention/MMDiT。
- 解释 T5/16ch VAE 的作用。
- 用 90 秒回答 A11。
13. 自测清单¶
- [ ] 能写 Flow loss;
- [ ] 能画 MMDiT;
- [ ] 能解释联合 attention;
- [ ] 能说 T5/16ch VAE;
- [ ] 能对比 SDXL/SD3;
- [ ] 能 90 秒回答 A11。
14. 本节材料为什么这样设计¶
- 先讲范式变化:避免把 SD3 当成“更大的 SDXL”。
- Flow 公式单列:A11 的高频追问。
- MMDiT 对比 cross-attn:面试最常问。
- T5/16ch VAE 单列:容易被忽略。
- 不写代码:本节是架构和训练目标。
详细设计理由见 08 材料设计理由。