566 lines
19 KiB
Markdown
566 lines
19 KiB
Markdown
---
|
||
title: Scaling Rectified Flow Transformers:SD3 与工业级生成模型的实现
|
||
draft: false
|
||
tags:
|
||
- Stable-Diffusion-3
|
||
- Rectified-Flow
|
||
- DiT
|
||
- 生成模型
|
||
- 工业实践
|
||
- 大规模训练
|
||
---
|
||
|
||
# Scaling Rectified Flow Transformers:SD3 与工业级生成模型的实现
|
||
|
||
---
|
||
|
||
## 一、从理论到工业实践
|
||
|
||
### 1.1 回顾:为什么需要 Scaling?
|
||
|
||
在理论层面,Rectified Flow 提供了:
|
||
- **路径直线化**:理论上可以用 1-4 步采样
|
||
- **简洁的训练目标**:简单的速度场回归 $\mathbb{E}\|v_\theta - (x_1-x_0)\|^2$
|
||
- **最优传输的理论支撑**:Re-flow 迭代可以逐步改善路径
|
||
|
||
但将这些理论优势**在大规模数据上实现**,面临新的挑战:
|
||
|
||
| 理论假设 | 工业实践中的挑战 |
|
||
|---------|-----------------|
|
||
| 路径完全直线化 | 高分辨率图像生成的路径更复杂 |
|
||
| 简单高斯噪声 | 文本条件、构图、风格的联合建模 |
|
||
| 小规模验证 | 12B 参数模型的训练稳定性 |
|
||
| 理论步数 | 实际生成质量与步数的权衡 |
|
||
|
||
### 1.2 Stable Diffusion 3 的核心贡献
|
||
|
||
**SD3(Stable Diffusion 3)** 是第一个在大规模(12B 参数)图像生成任务上系统验证 Rectified Flow + Transformer 架构的工作。
|
||
|
||
**核心观察**:
|
||
|
||
> Rectified Flow 的少步采样优势在大模型上更加显著——因为少步采样意味着**少梯度步数**,而大模型的梯度计算代价极高。
|
||
|
||
**SD3 的关键数字**:
|
||
|
||
| 指标 | DDPM-based SD | SD3(RF-based) |
|
||
|------|--------------|-----------------|
|
||
| 参数量 | 2-4B | 12B |
|
||
| 采样步数 | 20-50 | 4-8 |
|
||
| 文本渲染 | 模糊/失败 | 清晰/准确 |
|
||
| 构图质量 | 中等 | 显著提升 |
|
||
|
||
---
|
||
|
||
## 二、Rectified Flow Transformer(RFformer)架构
|
||
|
||
### 2.1 整体架构
|
||
|
||
SD3 采用了 **Rectified Flow Transformer(RFformer)** 架构:
|
||
|
||
```
|
||
输入
|
||
├── 噪声图 $x_t$(潜空间)
|
||
├── 时间步 $t$
|
||
├── 文本条件 $c$
|
||
└── ROI(可选)
|
||
|
||
↓
|
||
┌───────────────────────┐
|
||
│ DiT Block (×N layers) │
|
||
│ ├── Adaptive Layer Norm │
|
||
│ ├── Cross-Attention │
|
||
│ ├── Feed-Forward │
|
||
│ └── RMS Norm │
|
||
└───────────────────────┘
|
||
↓
|
||
┌───────────────────────┐
|
||
│ 输出头 │
|
||
│ └── 预测速度场 $v_\theta$ │
|
||
└───────────────────────┘
|
||
```
|
||
|
||
### 2.2 RFformer 相对原生 DiT 的三大核心改造
|
||
|
||
**原生 DiT**:适配离散扩散去噪,输出预测噪声
|
||
**RFformer(SD3 核心)**:并非单纯堆叠 DiT 模块,而是做了**三大核心改造**:
|
||
|
||
1. **输出头修改**:从预测噪声 $\epsilon$ 改为预测速度场 $v_\theta$
|
||
2. **损失函数变更**:从噪声预测 MSE 改为速度场回归 $\mathbb{E}\|v_\theta - (x_1-x_0)\|^2$
|
||
3. **时序编码适配**:采用傅里叶时序嵌入 + 流匹配专用时序编码,替代扩散模型 SNR 形式
|
||
|
||
### 2.3 DiT(Diffusion Transformer)核心模块
|
||
|
||
**标准 DiT Block**:
|
||
|
||
每个 DiT Block 包含:
|
||
1. **Adaptive Layer Norm(AdaLN)**:
|
||
$$h = \text{AdaLN}(x, c) = \gamma(c) \cdot \text{LayerNorm}(x) + \beta(c) \tag{2.1}$$
|
||
|
||
其中 $\gamma, \beta$ 是从条件 $c$ 预测的 scale 和 bias。
|
||
|
||
2. **Cross-Attention**(处理文本条件):
|
||
$$\text{Attn}(Q, K, V) = \text{softmax}\left(\frac{Q K^T}{\sqrt{d}}\right) V \tag{2.2}$$
|
||
$$Q = W_Q h, \quad K = W_K c, \quad V = W_V c$$
|
||
|
||
其中 $c$ 是文本 embedding。
|
||
|
||
3. **MLP/FFN**:
|
||
$$\text{FFN}(h) = W_2 \cdot \sigma(W_1 h + b_1) + b_2 \tag{2.3}$$
|
||
|
||
### 2.3 时间步与条件的融合
|
||
|
||
**时间步 embedding**:
|
||
|
||
SD3 使用了**傅里叶时序嵌入 + 流匹配专用时序编码**(并非所谓 LogitSNR embedding):
|
||
|
||
1. **Fourier embedding**:
|
||
$$e_{\text{fourier}}(t) = \text{MLP}(\text{sincos}(t)) \tag{2.4}$$
|
||
|
||
2. **流匹配专用时序编码**(区分于 DDPM 的 SNR 形式):
|
||
$$e_{\text{fm}}(t) = \text{MLP}(\text{concat}(\sin(2^k \pi t), \cos(2^k \pi t))_{k=0}^{K-1}) \tag{2.5}$$
|
||
|
||
**注意**:线性插值整流匹配**无标准 SNR 定义**,该式是 DDPM 时序调度形式,RF 不存在此信噪比概念。
|
||
|
||
**两个 embedding 拼接后作为条件输入**。
|
||
|
||
### 2.4 噪声处理与 Rectified Flow 的对应
|
||
|
||
**在 Rectified Flow 中**,$t=0$ 是纯噪声,$t=1$ 是纯数据。
|
||
|
||
**SD3 的噪声注入**:
|
||
|
||
$$x_t = (1-t) \cdot x_0 + t \cdot x_1 \tag{2.6}$$
|
||
|
||
其中 $x_0 \sim \mathcal{N}(0, I)$ 是噪声,$x_1$ 是数据潜变量。
|
||
|
||
**训练目标**(带文本条件 $c$ 的条件流匹配):
|
||
$$\mathcal{L}_c = \mathbb{E}_{t, x_0, x_1, c} \left[ \| v_\theta(x_t, t, c) - \mathbb{E}[x_1 - x_0 | x_0, c] \|^2 \right] \tag{2.7}$$
|
||
|
||
**说明**:无条件损失 $\mathbb{E}\|v_\theta-(x_1-x_0)\|^2$ 仅适用于独立配对整流匹配。加入文本条件后,必须引入**条件期望约束** $\mathbb{E}[x_1-x_0|x_0,c]$,不能直接套用最简无约束损失。
|
||
|
||
---
|
||
|
||
## 三、大规模训练的数学分析
|
||
|
||
### 3.1 Scaling 定律
|
||
|
||
**发现(Scaling Laws for RF)**:
|
||
|
||
对于 Rectified Flow 大模型,生成质量与模型参数量的关系近似**幂律缩放**(而非对数律):
|
||
|
||
$$\text{Quality}(N) \propto N^\alpha, \quad \alpha \in (0.2, 0.5) \tag{3.1}$$
|
||
|
||
其中 $N$ 是参数量,$\alpha$ 是缩放指数。参数量越大,质量提升增速平缓但**持续上涨**,对数律与大规模实测缩放实验结果相悖。
|
||
|
||
**采样步数与质量的关系**:
|
||
|
||
对于 $K$ 步采样,定义**采样效率系数**:
|
||
$$\eta(K) = \frac{\text{Quality}(K)}{\text{Quality}(\infty)} \tag{3.2}$$
|
||
|
||
实验发现:
|
||
- $K \geq 4$ 时,$\eta(K) \approx 0.95$(基本达到最优)
|
||
- $K = 1$ 时,$\eta(1) \approx 0.7-0.85$(取决于模型规模)
|
||
|
||
**大模型的优势**:
|
||
|
||
模型规模越大,单步采样质量越高。这解释了为什么 SD3 可以用 4 步而 DDPM 需要 50+ 步。
|
||
|
||
### 3.2 训练稳定性分析
|
||
|
||
**梯度尺度问题**:
|
||
|
||
设 batch size 为 $B$,模型参数为 $\theta$,损失函数为 $\mathcal{L}(\theta)$。
|
||
|
||
**梯度幅度**:
|
||
|
||
设 batch size 为 $B$,模型参数为 $\theta$,损失函数为 $\mathcal{L}(\theta)$。
|
||
|
||
大模型训练中梯度尺度由多因素综合决定,简易正比关系无法准确描述:
|
||
$$\|\nabla_\theta \mathcal{L}\| \sim \mathcal{F}(D, B, \sigma(\theta), \text{网络深度}) \tag{3.3}$$
|
||
|
||
其中 $D$ 是数据维度,$\sigma(\theta)$ 是网络权重的标准差,大模型梯度尺度需结合网络深度与初始化策略综合分析。
|
||
|
||
**大模型中的问题**:
|
||
|
||
当模型参数量增大时:
|
||
- 权重初始化需要更细致的调节
|
||
- 梯度裁剪阈值需要相应调整
|
||
- 学习率需要按比例 scaling
|
||
|
||
**SD3 的解决方案**:
|
||
|
||
1. **使用 RMSNorm**(代替 LayerNorm):
|
||
$$\text{RMSNorm}(x) = \frac{x}{\text{RMS}(x)} \cdot \gamma, \quad \text{RMS}(x) = \sqrt{\frac{1}{D} \sum_i x_i^2} \tag{3.4}$$
|
||
|
||
优势:去掉了均值计算,更稳定。
|
||
|
||
2. **QK-Norm**(对 attention 的 query/key 进行归一化):
|
||
$$\tilde{Q} = Q / \| Q \|, \quad \tilde{K} = K / \| K \| \tag{3.5}$$
|
||
|
||
这防止了 attention scores 的数值爆炸。
|
||
|
||
3. **自适应学习率调度**:
|
||
$$\eta(t) = \eta_0 \cdot (1 - t)^\beta \tag{3.6}$$
|
||
|
||
其中 $t$ 是训练进度,$\beta \approx 0.5-1.0$。
|
||
|
||
### 3.3 训练过程中的优化
|
||
|
||
**Mixed-Precision 训练**:
|
||
|
||
**BF16 是图文大模型唯一稳定选择**,FP16 极易出现梯度溢出、训练震荡。使用 BF16 进行前向传播,FP32 进行优化器状态存储:
|
||
|
||
| 操作 | 数据类型 |
|
||
|------|---------|
|
||
| 模型权重 | BF16 |
|
||
| 前向传播 | BF16 |
|
||
| 梯度存储 | FP32 |
|
||
| 优化器状态 | FP32 |
|
||
|
||
**优势**:减少显存占用,加速计算。
|
||
|
||
---
|
||
|
||
## 四、Classifier-Free Guidance 在 Rectified Flow 中的应用
|
||
|
||
### 4.1 标准 CFG 回顾
|
||
|
||
**CFG 的核心思想**:
|
||
|
||
通过无条件和条件预测的线性组合来增强条件生成:
|
||
$$\tilde{\epsilon}_\theta(x_t, t | c) = (1+w) \cdot \epsilon_\theta(x_t, t | c) - w \cdot \epsilon_\theta(x_t, t | \emptyset) \tag{4.1}$$
|
||
|
||
其中 $w$ 是 guidance 权重。
|
||
|
||
### 4.2 RF 版本的 CFG
|
||
|
||
**定理(RF 的 CFG 公式)**:
|
||
|
||
对于 Rectified Flow 速度场,CFG 可以写成:
|
||
$$\tilde{v}_\theta(x_t, t | c) = (1+w) \cdot v_\theta(x_t, t | c) - w \cdot v_\theta(x_t, t | \emptyset) \tag{4.2}$$
|
||
|
||
**条件流匹配 CFG 理论来源**:
|
||
|
||
RF 条件生成的训练目标应包含**条件期望约束**,而非直接套用无条件损失:
|
||
$$\mathcal{L}_c = \mathbb{E}_{t, x_0, x_1, c} \left[ \| v_\theta(x_t, t, c) - \mathbb{E}[x_1 - x_0 | x_0, c] \|^2 \right] \tag{4.2b}$$
|
||
|
||
CFG 通过线性组合无条件预测和条件预测来增强条件生成效果,其理论依据来源于流匹配的条件速度场回归框架,而非自主推导。
|
||
|
||
### 4.3 采样时的 CFG 使用
|
||
|
||
**在推理时**,使用 CFG 的采样流程:
|
||
|
||
1. 初始化 $x_0 \sim \mathcal{N}(0, I)$
|
||
2. 对于 $k = 1$ to $K$($K \approx 4-8$):
|
||
- 计算 $\tilde{v} = (1+w) v_\theta(x_{t_k}, t_k | c) - w v_\theta(x_{t_k}, t_k | \emptyset)$
|
||
- 更新 $x_{t_{k-1}} = x_{t_k} - \Delta t \cdot \tilde{v}$
|
||
3. 返回 $x_0$
|
||
|
||
### 4.4 CFG 的最优权重
|
||
|
||
**实验发现**:
|
||
|
||
- **低 guidance 权重**($w < 1$):生成更自然但与条件关联较弱
|
||
- **中等权重**($w \approx 3-7$):质量和条件对齐的平衡点
|
||
- **高权重**($w > 10$):过饱和、伪影
|
||
|
||
**SD3 的配置**:
|
||
- 文本到图像:$w \approx 4-7$
|
||
- 图像补全:$w \approx 2-4$
|
||
|
||
---
|
||
|
||
## 五、高分辨率图像生成的关键技术
|
||
|
||
### 5.1 潜空间扩散
|
||
|
||
**为什么需要潜空间**:
|
||
|
||
直接在高分辨率图像空间(如 $1024 \times 1024$)进行扩散计算代价过高:
|
||
- 像素数:$1024^2 \times 3 \approx 3M$
|
||
- 每步计算量巨大
|
||
|
||
**SD3 使用 VAE 压缩**:
|
||
|
||
$$x_{\mathrm{KL}} \xrightarrow{\mathrm{KL}} z_{\mathrm{KL}} \xrightarrow{\mathrm{KL}} \hat{z}_{\mathrm{KL}} \xrightarrow{\mathrm{KL}} \hat{x}_{\mathrm{KL}} \tag{5.1}$$
|
||
|
||
典型配置:
|
||
- 压缩比:$8 \times$(像素)/ $64 \times$(压缩后)
|
||
- 潜空间维度:$(1024/8)^2 \times 4 = 128 \times 128 \times 4 = 65536$
|
||
|
||
### 5.2 文本条件的处理
|
||
|
||
**多模态 embedding 空间**:
|
||
|
||
SD3 使用了改进的文本 embedding 方案:
|
||
|
||
1. **Tokenization**:将文本转为 token 序列
|
||
2. **Text Encoder**:使用 T5 或 CLIP 编码
|
||
3. **Cross-attention**:在 DiT 中通过 cross-attention 融合
|
||
|
||
**文本渲染能力的提升**:
|
||
|
||
Rectified Flow 的直线轨迹对于文本渲染特别有利:
|
||
- 路径弯曲越小,中间状态的"模糊"越少
|
||
- 单步预测时,网络可以更准确地学习字符形状
|
||
|
||
### 5.3 结构与布局控制
|
||
|
||
**额外的控制信号**:
|
||
|
||
SD3 支持通过额外输入控制生成:
|
||
- **ROI**(Region of Interest):指定生成区域
|
||
- **Skeleton/Keypoints**:结构控制
|
||
- **Depth/Normal**:深度图控制
|
||
|
||
这些通过额外的 AdaLN 注入或 concat 输入实现。
|
||
|
||
---
|
||
|
||
## 六、Flux.1:开源实现与性能分析
|
||
|
||
### 6.1 Flux.1 技术概述
|
||
|
||
**Flux.1** 是 SD3 之后出现的开源高参数图像生成模型,核心技术栈与 SD3 类似。
|
||
|
||
**架构配置**:
|
||
|
||
| 模型 | 参数量 | 采样步数 | 开源程度 |
|
||
|------|--------|---------|---------|
|
||
| Flux.1-dev | 12B | 4-8 | 部分(模型权重) |
|
||
| Flux.1-schnell | 12B | 1-2(极速版) | 部分(加速版本) |
|
||
| SD3-medium | 2B | 4-8 | 完全开源 |
|
||
|
||
**推理步数落地取舍**:
|
||
- **Flux.1-schnell**(1-2步):极致速度,牺牲部分质量
|
||
- **标准版**(4步):质量与速度平衡,工业主流选择
|
||
- **高质量版**(6-8步):极限质量场景
|
||
|
||
### 6.2 性能对比
|
||
|
||
**在标准 benchmark 上的表现**:
|
||
|
||
| 模型 | FID $\downarrow$ | CLIP $\uparrow$ | 步数 |
|
||
|------|-----------------|----------------|------|
|
||
| SDXL | 3.5 | 0.68 | 25 |
|
||
| SD3 (4步) | 2.5 | 0.76 | 4 |
|
||
| Flux.1-dev | 1.8 | 0.79 | 4 |
|
||
|
||
### 6.3 训练过程中的关键技术
|
||
|
||
**EMA(指数移动平均)**:
|
||
|
||
$$\theta_{\mathrm{old}} \leftarrow m \cdot \theta_{\mathrm{old}} + (1-m) \cdot \theta \tag{6.1}$$
|
||
|
||
SD3 使用 $m = 0.9995$(12B 图文大模型实战最优值,而非过于极端的 $0.9999$),在推理时使用 EMA 模型。
|
||
|
||
**退火学习率**:
|
||
|
||
$$\eta_k = \eta_0 \cdot \left(1 - \frac{k}{K}\right)^\alpha, \quad \alpha \approx 1.0 \tag{6.2}$$
|
||
|
||
---
|
||
|
||
## 七、训练过程与调参
|
||
|
||
### 7.1 完整训练流程
|
||
|
||
**Algorithm: SD3/Rectified Flow Transformer Training**
|
||
|
||
**阶段 1:预训练**
|
||
1. 收集大规模图文对数据集(如 LAION、SAI)
|
||
2. 使用 VAE 编码为潜空间表示
|
||
3. 使用 Rectified Flow 目标训练 DiT
|
||
4. 配置:batch size $\approx 2048$(**分布式全局 batch**,需多卡并行,单卡无法承载 12B 模型 2048 图文批次),学习率 $\approx 10^{-4}$
|
||
|
||
**阶段 2:微调**
|
||
1. 使用更高质量的数据子集
|
||
2. 减小 batch size($\approx 512$)
|
||
3. 使用更小的学习率
|
||
4. 可能添加特定领域的控制信号
|
||
|
||
**阶段 3:推理优化**
|
||
1. 计算 EMA 模型
|
||
2. 使用 CFG 采样
|
||
3. 步数调度(不一定均匀)
|
||
|
||
### 7.2 关键超参数配置
|
||
|
||
| 超参数 | SD3 参考值 | 作用 |
|
||
|--------|-----------|------|
|
||
| **模型参数量** | 12B | 决定生成质量上限 |
|
||
| **采样步数** | 4-8 | 质量与速度权衡 |
|
||
| **CFG 权重** | 4-7 | 条件对齐程度 |
|
||
| **Batch Size** | 2048(分布式) | 梯度估计方差 |
|
||
| **学习率** | $1e-4$ | 收敛速度 |
|
||
| **Adam $\beta$** | $(0.9, 0.999)$ | 默认稳定配置 |
|
||
| **EMA 衰减** | $0.9995$ | 推理模型质量(实战最优) |
|
||
| **潜空间压缩比** | $8\times$ | 计算效率 |
|
||
|
||
### 7.3 常见问题与解决方案
|
||
|
||
**问题 1:训练发散**
|
||
|
||
表现:损失 NaN 或爆炸。
|
||
|
||
解决方案:
|
||
- 检查混合精度配置
|
||
- 降低学习率
|
||
- 添加梯度裁剪 $\|\nabla\| \leq 1.0$
|
||
|
||
**问题 2:模式坍缩**
|
||
|
||
表现:模型只生成少数几种图像。
|
||
|
||
解决方案:
|
||
- 增加 batch size
|
||
- 添加多样化正则
|
||
- 检查数据分布
|
||
|
||
**问题 3:文本渲染失败**
|
||
|
||
表现:文字模糊或错误。
|
||
|
||
解决方案:
|
||
- 使用更高的 CFG 权重
|
||
- 在训练数据中增加文本图像比例
|
||
- 可能需要专门的文本编码器
|
||
|
||
---
|
||
|
||
## 八、与理论对应的关键洞察
|
||
|
||
### 8.1 为什么 Rectified Flow 在大模型上更有效?
|
||
|
||
**理论解释 1:少步采样 = 少梯度步数**
|
||
|
||
设总训练计算量为 $C$:
|
||
$$C \approx N_{\mathrm{KL}} \cdot N_{\mathrm{KL}} \cdot N_{\mathrm{KL}} \tag{8.1}$$
|
||
|
||
对于 DDPM:
|
||
- $N_{\mathrm{KL}} \approx 50$(采样步数)
|
||
- 总计算量大
|
||
|
||
对于 RF(4步采样):
|
||
- $N_{\mathrm{KL}} \approx 4$
|
||
- 计算量降低约 10 倍,可以:
|
||
- 训练更多 steps
|
||
- 使用更大的 batch size
|
||
- 用同样 budget 训练更大模型
|
||
|
||
**理论解释 2:直线轨迹减少拟合难度 + 保留结构特征**
|
||
|
||
对于弯曲路径,向量场 $v_\theta(x,t)$ 必须在整个路径上正确预测切向量。
|
||
|
||
对于直线路径:
|
||
$$v(x_0) = x_1 - x_0 \approx \text{const for given pair} \tag{8.2}$$
|
||
|
||
这减少了模型需要学习的函数复杂度。
|
||
|
||
**直线轨迹的工业优势**(并非仅"少步推理快"):
|
||
1. **规避多峰分布模糊**:线性插值天然避免弯曲路径经过低密度区域导致的模式坍缩
|
||
2. **文本结构化特征保留能力强**:文本笔画等结构化特征在路径任意位置都可被网络识别
|
||
3. **中间状态清晰**:路径弯曲越小,中间状态的"模糊"越少
|
||
|
||
### 8.2 为什么 SD3 的文本渲染更好?
|
||
|
||
**分析**:
|
||
|
||
文本渲染需要精确的像素对应关系:
|
||
|
||
1. **路径弯曲导致的模糊**:在弯曲路径上,$t \approx 0.5$ 时,图像处于"半噪声"状态,此时文本结构信息丢失
|
||
2. **直线轨迹保留结构**:在直线路径上,$x_t = (1-t)x_0 + t x_1$,在任意 $t$ 时,$x_t$ 都是 $x_0$ 和 $x_1$ 的线性组合
|
||
|
||
**数学上**:对于直线插值,任意中间时刻 $t$ 的状态都可以表示为:
|
||
$$x_t = \alpha(t) \cdot (\text{noise}) + \beta(t) \cdot (\text{data}) \tag{8.3}$$
|
||
|
||
这使得文本笔画等**结构化特征**在路径的任意位置都可被网络识别。
|
||
|
||
### 8.3 架构选择:为什么是 Transformer?
|
||
|
||
**CNN 的局限**:
|
||
|
||
- **局部感受野**:CNN 的每个位置只看到局部邻域
|
||
- **长距离依赖需要深层网络**:堆叠很多层才能建立全局联系
|
||
- **灵活性受限**:卷积核大小固定
|
||
|
||
**Transformer 的优势**:
|
||
|
||
- **全局注意力**:每个位置可以看到所有其他位置
|
||
- **路径直线化后的全局一致性**:直线轨迹上的全局对应关系更容易建模
|
||
- **可扩展性**:参数量增大时,性能提升更平滑
|
||
|
||
---
|
||
|
||
## 九、性能分析与Benchmark
|
||
|
||
### 9.1 标准Benchmark对比
|
||
|
||
**图像质量指标**:
|
||
|
||
| 模型 | FID $\downarrow$ | CLIP $\uparrow$ | IS $\uparrow$ |
|
||
|------|-----------------|----------------|--------------|
|
||
| SDXL | 3.5 | 0.68 | 8.5 |
|
||
| SD3 (4步) | 2.5 | 0.76 | 10.2 |
|
||
| Flux.1 (4步) | 1.8 | 0.79 | 12.1 |
|
||
|Imagen | 2.0 | 0.74 | 9.5 |
|
||
|
||
**推理速度对比**(A100):
|
||
|
||
| 模型 | 采样步数 | 生成时间(s) |
|
||
|------|---------|-------------|
|
||
| SDXL | 25 | 3.2 |
|
||
| SD3 | 4 | 1.8 |
|
||
| Flux.1 | 4 | 1.5 |
|
||
|
||
### 9.2 消融实验
|
||
|
||
**关键组件的贡献**(对齐 SD3/Flux 官方公开消融实验):
|
||
|
||
| 实验 | 配置 | FID 变化 |
|
||
|------|------|---------|
|
||
| 基准 | SDXL baseline | 3.5 |
|
||
| + RF(50步) | 使用 RF 但保持 50 步 | 3.3 |
|
||
| + RF(4步) | 减少到 4 步反而更优 | 2.8 |
|
||
| + Transformer | 替换 CNN 为 DiT | 2.6 |
|
||
| + 全部 | RF + DiT + CFG + 12B | 2.5 |
|
||
|
||
**澄清**:同等架构下,4步 RF 相比 50步 DDPM,**FID 更低、图文对齐更强**,并非导致 FID 上升。原文"4步 RF 导致 FID 上升"结论与官方实验结果相反。
|
||
|
||
---
|
||
|
||
## 十、总结
|
||
|
||
**SD3/Flux.1 的核心启示**:
|
||
|
||
1. **Rectified Flow 是工业级选择**:在 12B 参数规模下,4-8 步采样可以保持高质量
|
||
2. **Transformer > CNN**:全局注意力与 RF 的路径直线化天然契合
|
||
3. **Scaling 仍然有效**:更大的模型 + 更少的步数 = 更好的质量与效率平衡
|
||
|
||
**核心公式汇总**:
|
||
|
||
**训练目标**:
|
||
$$\mathcal{L} = \mathbb{E}_{t, x_0, x_1, c} \left[ \| v_\theta(x_t, t, c) - (x_1 - x_0) \|^2 \right] \tag{10.1}$$
|
||
|
||
**CFG 公式**:
|
||
$$\tilde{v} = (1+w) \cdot v_\theta^c - w \cdot v_\theta^\emptyset \tag{10.2}$$
|
||
|
||
**采样更新**:
|
||
$$x_{t-\Delta t} = x_t + \Delta t \cdot \tilde{v} \tag{10.3}$$
|
||
|
||
**关键设计选择**:
|
||
|
||
- 潜空间扩散(压缩比 $8\times$)
|
||
- RMSNorm + QK-Norm(稳定性)
|
||
- 傅里叶时序嵌入(时间步)
|
||
- 流匹配专用时序编码
|
||
- 大 batch + 小学习率(收敛性)
|
||
|
||
---
|
||
|
||
**延伸阅读**:
|
||
|
||
1. Esser et al., "Scaling Rectified Flow Transformers for High-Resolution Image Synthesis" (2024)
|
||
2. stableai/sd3-community, "Stable Diffusion 3 Technical Report" (2024)
|
||
3. Flux.1 Model Card and Technical Report
|
||
4. Peebles & Xie, "Scalable Diffusion Models with Transformers" (DiT, ICCV 2023)
|
||
5. He et al., "A ConvNet for the 2020s" (现代化 CNN 设计) |