跳转至

5.2 SD3:MMDiT 与 Rectified Flow

所属章节:第 5 章 模型演进与系统对比
课时:90 分钟
前置:SDXL、Cross-Attention
对应面试题:A11
一句话目标:学完能说清 SD3 为什么从 UNet 转向 MMDiT、为什么用 Rectified Flow、T5/16ch VAE 带来什么。


1. 学习目标

学完本节,你应该能够:

  1. 解释 SD3 与 SDXL 的架构差异;
  2. 画出 MMDiT 的 token 流;
  3. 写出 Rectified Flow 的插值和损失;
  4. 解释 Flow 采样为什么能少步;
  5. 说明 三文本编码器/16ch VAE 的作用;
  6. 用 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\) 的直线路径:

\[ x_t=(1-t)x_0+t\epsilon, \qquad t\in[0,1]. \]
  • \(t=0\):数据;
  • \(t=1\):噪声。

4.2 速度目标

对 \(t\) 求导:

\[ v=\frac{dx_t}{dt}=\epsilon-x_0. \]

训练网络回归速度:

\[ \mathcal L =\mathbb E_{x_0,\epsilon,t} \left[ \|v_\theta(x_t,t)-(\epsilon-x_0)\|^2 \right]. \]

4.3 采样

用 Euler:

\[ x_{t-\Delta}=x_t-\Delta\,v_\theta(x_t,t). \]

从 \(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. 常见误区

  1. 说 SD3 还用 UNet:它用 MMDiT。
  2. 把 Flow 当 sampler:它是训练目标/路径。
  3. 说 MMDiT 只是更大的 cross-attn:它是联合 attention。
  4. 说 SD3 不用 CLIP:仍用 CLIP-L/OpenCLIP,只是加 T5。
  5. 认为 Flow 一定 1 步:通常 1–8 步,看模型。

12. 课堂练习

答案见 06 章节练习与答案。

  1. 写 Rectified Flow 的插值和 loss。
  2. 画 MMDiT 的 token 流。
  3. 对比 Cross-Attention/MMDiT。
  4. 解释 T5/16ch VAE 的作用。
  5. 用 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 材料设计理由。


15. 下一节

5.3 SD vs DALL·E 2 vs GAN