扩散与视频模型训练实践#
本页内容7 个部分
1. DDPM → Flow Matching 迁移#
从 DDPM 切换到 Flow Matching,网络结构完全不变(同一个 DiT / U-Net),变化的只有两件事:
| DDPM | Flow Matching (Rectified Flow) | |
|---|---|---|
| 训练目标 | 预测噪声 | 预测速度场 |
| 损失函数 | ||
| 前向过程 | (线性插值) | |
| 采样方式 | 离散步骤去噪(DDPM/DDIM) | ODE 求解器(Euler / Heun) |
能否从 DDPM 权重热启动?
可以,但不是直接用。虽然训练目标不同(预测 vs 预测 ),但 backbone 学到的图像/视频先验知识(纹理、语义、结构)是通用的,存在于卷积层和 attention 层的权重中。
- 做法:保留 backbone 权重 → 替换训练目标 → 用 Flow Matching loss 继续训练
- 优势:收敛速度比从头训练快很多
- 局限:最终效果不一定能追平从头训练,取决于数据量和训练充分程度
- 实际选择:头部模型(SD3、Wan2.1)通常选择从头训练以获最优效果;小团队/快速验证场景可用热启动
**面试简答:**网络结构不变,只是训练目标从预测噪声变成预测速度场。可以用 DDPM 权重热启动再 finetune(backbone 的图像先验可迁移),但头部模型通常选择从头训练。
1.1 各模型训练范式一览#
| 模型 | 训练范式 | 备注 |
|---|---|---|
| Wan2.1 / Wan2.2 | ✅ Flow Matching | DiT + Rectified Flow |
| HunyuanVideo | ✅ Flow Matching | Dual-stream DiT + Flow Matching |
| Open-Sora | ✅ Flow Matching | STDiT + Rectified Flow |
| SD3 / Flux | ✅ Flow Matching | MM-DiT + Rectified Flow(图像模型) |
| CogVideoX | ❌ DDPM | 主流开源视频模型中的例外 |
2. 多阶段渐进式训练#
视频生成模型几乎都采用先图后视频、由低到高的多阶段训练策略:
典型训练流水线(以 HunyuanVideo / Wan 为例)
- Stage 1: 图像预训练——在大规模图文数据(LAION 等)上训练 DiT,学习空间语义和图文对齐能力。此阶段成本最低、数据最充足
- Stage 2: 低分辨率视频训练——在视频数据上继续训练,分辨率较低(如 256×256),帧数较少。模型学习时间一致性和运动建模
- Stage 3: 高分辨率微调——提升到目标分辨率(720p / 1080p),增大帧数。数据量少但质量高(精选数据集)
- Stage 4(可选): 特定能力训练——如图生视频(I2V)、视频续写、相机控制等下游任务 finetune
为什么不直接在高分辨率视频上训练?
- 数据:高质量高分辨率视频数据稀缺(几百万量级),图像数据充足(数十亿量级)
- 成本:1080p 视频的 token 数是 256px 图像的上百倍,直接训练显存和算力不可承受
- 收敛:图像阶段先学好空间语义,视频阶段只需额外学时间建模,收敛更快
- 类比:先学走路再学跑步,而不是直接学跑
3. 时间步采样策略#
训练时每个样本需要随机采样一个时间步 ,怎么采对生成质量影响很大:
| 策略 | 做法 | 效果 | 代表模型 |
|---|---|---|---|
| Uniform | 所有噪声水平同等训练 | 原始 DDPM、DiT | |
| Logit-Normal | 中间噪声水平被采样更多 | SD3 | |
| Mode with heavy tail | 集中在某个 mode 附近,但保留长尾 | 重点训练关键去噪阶段 | 部分视频模型 |
为什么 SD3 选择 Logit-Normal?
直觉: 接近 0(几乎无噪声)和接近 1(纯噪声)的区域,模型的任务要么太简单要么太难,学习信号弱。中间区域()是模型真正需要学"从半噪声恢复结构"的关键区间,应该被更多采样。SD3 论文消融实验表明,logit-normal 在 时 FID 最优。
4. 3D VAE 训练难点#
视频生成的 VAE 需要同时压缩空间和时间,比图像 VAE 难得多:
| 难点 | 问题 | 解决方案 |
|---|---|---|
| 时间一致性 | 逐帧压缩→解码后闪烁 | 3D 卷积核跨帧建模 + 时间注意力 |
| 因果 vs 非因果 | 非因果 VAE 需要看到未来帧才能编码,不支持流式 | Causal 3D VAE(CogVideoX、HunyuanVideo、Wan 均采用):只依赖当前帧和过去帧 |
| 训练数据 | 需要大量视频数据 | 先在图像上预训练 2D 部分,再在视频上训练时间压缩部分 |
| 压缩率平衡 | 压缩太高→细节丢失;太低→DiT token 数爆炸 | 主流选择:空间 8×、时间 4×(总 256× 压缩) |
**面试关键点:**现代视频模型普遍使用 Causal 3D VAE——"因果"意味着编码第 帧时只看 的帧,不看未来帧。好处:①图像是视频的特例(单帧),天然兼容图像和视频统一训练;②支持流式编码/解码。
5. 长视频训练的显存与计算瓶颈#
视频 token 数远超图像,显存是最大瓶颈。以 Wan2.1 为例,81 帧 720p 视频经 3D VAE 后仍有约 4 万个 token。
显存优化手段
- Gradient Checkpointing:不保存中间激活值,反向传播时重新计算。用 30~40% 额外计算换 60~70% 显存节省。视频模型几乎必开
- FlashAttention:将 attention 的显存复杂度从 降到 ,对长序列至关重要
- 序列并行(Sequence Parallelism):将长序列切分到多张 GPU 上,每张 GPU 只处理一段 token。常与 Tensor Parallelism 配合使用
- 混合精度 BF16:比 FP32 省一半显存,BF16 比 FP16 数值更稳定(不需要 loss scaling),是视频模型的标配
- CPU Offload:将优化器状态(AdamW 的 m、v)卸载到 CPU 内存,用通信换显存
6. CFG(Classifier-Free Guidance)调参#
CFG 是控制生成质量与文本遵循度的关键超参数:
为 guidance scale, 为文本条件, 为无条件(空文本)
| 值 | 效果 | 问题 |
|---|---|---|
| 太小() | 生成多样但不跟 prompt | 文本遵循度差 |
| 适中() | 质量与遵循度平衡 | 通常最优区间 |
| 太大() | 严格遵循 prompt | 过饱和、伪影、多样性崩塌 |
视频中的 CFG 额外考量
- 时间维度 CFG:有些模型对图像条件和文本条件使用不同的 guidance scale
- 动态 CFG:在采样过程中逐步降低 (前期大→后期小),前期确定结构,后期保留多样性细节
- 训练时:需要随机以 10~20% 概率 drop 掉文本条件(替换为空文本 ),否则推理时 CFG 不可用
7. 视频模型训练的理解检查#
思考题:视频扩散模型为什么几乎都用多阶段训练?能不能直接端到端训练?
三个原因:① 数据瓶颈——高质量视频数据远少于图像数据,先用图像预训练能充分利用数十亿级图文数据;② 算力瓶颈——高分辨率视频的 token 数是图像的上百倍,直接训练成本不可接受;③ 收敛效率——空间语义和时间建模解耦训练,各阶段有明确的学习目标,比端到端训练收敛更快更稳定。理论上可以端到端训练,但在当前数据和算力条件下不经济。
思考题:Flow Matching 相比 DDPM 的实际训练优势?
① 采样轨迹更直——Rectified Flow 的 ODE 路径接近直线,5~10 步即可出图(DDPM 通常需要 20~50 步 DDIM);② 训练更简单——线性插值前向过程 ,无需 noise schedule( 等),超参数更少;③ 理论更统一——基于连续归一化流(CNF),训练和采样都是同一个 ODE,无 DDPM 的离散化近似误差。实际观察:相同步数下 Flow Matching 的 FID 普遍优于 DDPM。
思考题:Causal 3D VAE 中的"因果"具体是什么意思?为什么重要?
"因果"指时间维度上只看过去、不看未来:编码第 帧时,卷积核只覆盖 的帧(通过因果 padding 实现)。重要性:① 图视频统一——单帧图像是"只有第 0 帧的视频",Causal VAE 天然兼容,不需要分别训练图像 VAE 和视频 VAE;② 支持流式处理——可以逐帧编码/解码,不需要等全部帧到齐;③ 首帧质量——首帧等价于图像 VAE 编码,质量有保障,这对图生视频(I2V)任务很重要。
思考题:训练时 CFG 的 dropout 比例怎么选?对效果有什么影响?
训练时以概率 将文本条件替换为空文本。常用值:。
太低(如 0.05):模型很少见到无条件输入,推理时 估计不准,CFG 效果差。
太高(如 0.5):条件训练样本减半,文本遵循能力下降。
SD3 论文报告 时效果最优。此外,多条件模型(如图+文)可以对不同条件独立 dropout,实现更灵活的引导(如单独引导文本 or 单独引导参考图)。