生成模型 / 生成训练实践 实践指南实践 6 分钟阅读 查看源文件 ↗

扩散与视频模型训练实践#

本页内容7 个部分

1. DDPM → Flow Matching 迁移#

从 DDPM 切换到 Flow Matching,网络结构完全不变(同一个 DiT / U-Net),变化的只有两件事:

DDPM Flow Matching (Rectified Flow)
训练目标 预测噪声 ϵ\epsilon 预测速度场 vt=x1−x0v_t = x_1 - x_0
损失函数 L=∣ϵ−ϵθ(xt,t)∣2L = |\epsilon - \epsilon_\theta(x_t, t)|^2 L=∣vt−vθ(xt,t)∣2L = |v_t - v_\theta(x_t, t)|^2
前向过程 xt=αˉt x0+1−αˉt ϵx_t = \sqrt{\bar\alpha_t}\,x_0 + \sqrt{1-\bar\alpha_t}\,\epsilon xt=(1−t) x0+t ϵx_t = (1-t)\,x_0 + t\,\epsilon(线性插值)
采样方式 离散步骤去噪(DDPM/DDIM) ODE 求解器(Euler / Heun)

能否从 DDPM 权重热启动?

可以,但不是直接用。虽然训练目标不同(预测 ϵ\epsilon vs 预测 vtv_t),但 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 为例)

  1. Stage 1: 图像预训练——在大规模图文数据(LAION 等)上训练 DiT,学习空间语义和图文对齐能力。此阶段成本最低、数据最充足
  2. Stage 2: 低分辨率视频训练——在视频数据上继续训练,分辨率较低(如 256×256),帧数较少。模型学习时间一致性和运动建模
  3. Stage 3: 高分辨率微调——提升到目标分辨率(720p / 1080p),增大帧数。数据量少但质量高(精选数据集)
  4. Stage 4(可选): 特定能力训练——如图生视频(I2V)、视频续写、相机控制等下游任务 finetune

为什么不直接在高分辨率视频上训练?

  • 数据:高质量高分辨率视频数据稀缺(几百万量级),图像数据充足(数十亿量级)
  • 成本:1080p 视频的 token 数是 256px 图像的上百倍,直接训练显存和算力不可承受
  • 收敛:图像阶段先学好空间语义,视频阶段只需额外学时间建模,收敛更快
  • 类比:先学走路再学跑步,而不是直接学跑

3. 时间步采样策略#

训练时每个样本需要随机采样一个时间步 tt,怎么采对生成质量影响很大:

策略 做法 效果 代表模型
Uniform t∼U(0,1)t \sim U(0, 1) 所有噪声水平同等训练 原始 DDPM、DiT
Logit-Normal t=σ(N(μ,s2))t = \sigma(\mathcal{N}(\mu, s^2)) 中间噪声水平被采样更多 SD3
Mode with heavy tail 集中在某个 mode 附近,但保留长尾 重点训练关键去噪阶段 部分视频模型

为什么 SD3 选择 Logit-Normal?

直觉:tt 接近 0(几乎无噪声)和接近 1(纯噪声)的区域,模型的任务要么太简单要么太难,学习信号弱。中间区域(t≈0.3∼0.7t \approx 0.3 \sim 0.7)是模型真正需要学"从半噪声恢复结构"的关键区间,应该被更多采样。SD3 论文消融实验表明,logit-normal 在 μ=0,s=1\mu=0, s=1 时 FID 最优。

4. 3D VAE 训练难点#

视频生成的 VAE 需要同时压缩空间和时间,比图像 VAE 难得多:

难点 问题 解决方案
时间一致性 逐帧压缩→解码后闪烁 3D 卷积核跨帧建模 + 时间注意力
因果 vs 非因果 非因果 VAE 需要看到未来帧才能编码,不支持流式 Causal 3D VAE(CogVideoX、HunyuanVideo、Wan 均采用):只依赖当前帧和过去帧
训练数据 需要大量视频数据 先在图像上预训练 2D 部分,再在视频上训练时间压缩部分
压缩率平衡 压缩太高→细节丢失;太低→DiT token 数爆炸 主流选择:空间 8×、时间 4×(总 256× 压缩)

**面试关键点:**现代视频模型普遍使用 Causal 3D VAE——"因果"意味着编码第 tt 帧时只看 ≤t\leq t 的帧,不看未来帧。好处:①图像是视频的特例(单帧),天然兼容图像和视频统一训练;②支持流式编码/解码。

5. 长视频训练的显存与计算瓶颈#

视频 token 数远超图像,显存是最大瓶颈。以 Wan2.1 为例,81 帧 720p 视频经 3D VAE 后仍有约 4 万个 token。

显存优化手段

  • Gradient Checkpointing:不保存中间激活值,反向传播时重新计算。用 30~40% 额外计算换 60~70% 显存节省。视频模型几乎必开
  • FlashAttention:将 attention 的显存复杂度从 O(N2)O(N^2) 降到 O(N)O(N),对长序列至关重要
  • 序列并行(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 是控制生成质量与文本遵循度的关键超参数:

ϵ^θ=ϵθ(xt,∅)+w⋅[ϵθ(xt,c)−ϵθ(xt,∅)]\hat{\epsilon}_\theta = \epsilon_\theta(x_t, \varnothing) + w \cdot [\epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \varnothing)]

ww 为 guidance scale,cc 为文本条件,∅\varnothing 为无条件(空文本)

ww 值 效果 问题
太小(w<3w < 3) 生成多样但不跟 prompt 文本遵循度差
适中(w=5∼9w = 5 \sim 9) 质量与遵循度平衡 通常最优区间
太大(w>15w > 15) 严格遵循 prompt 过饱和、伪影、多样性崩塌

视频中的 CFG 额外考量

  • 时间维度 CFG:有些模型对图像条件和文本条件使用不同的 guidance scale
  • 动态 CFG:在采样过程中逐步降低 ww(前期大→后期小),前期确定结构,后期保留多样性细节
  • 训练时:需要随机以 10~20% 概率 drop 掉文本条件(替换为空文本 ∅\varnothing),否则推理时 CFG 不可用

7. 视频模型训练的理解检查#

思考题:视频扩散模型为什么几乎都用多阶段训练?能不能直接端到端训练?

三个原因:① 数据瓶颈——高质量视频数据远少于图像数据,先用图像预训练能充分利用数十亿级图文数据;② 算力瓶颈——高分辨率视频的 token 数是图像的上百倍,直接训练成本不可接受;③ 收敛效率——空间语义和时间建模解耦训练,各阶段有明确的学习目标,比端到端训练收敛更快更稳定。理论上可以端到端训练,但在当前数据和算力条件下不经济。

思考题:Flow Matching 相比 DDPM 的实际训练优势?

① 采样轨迹更直——Rectified Flow 的 ODE 路径接近直线,5~10 步即可出图(DDPM 通常需要 20~50 步 DDIM);② 训练更简单——线性插值前向过程 xt=(1−t)x0+tϵx_t = (1-t)x_0 + t\epsilon,无需 noise schedule(βt,αˉt\beta_t, \bar\alpha_t 等),超参数更少;③ 理论更统一——基于连续归一化流(CNF),训练和采样都是同一个 ODE,无 DDPM 的离散化近似误差。实际观察:相同步数下 Flow Matching 的 FID 普遍优于 DDPM。

思考题:Causal 3D VAE 中的"因果"具体是什么意思?为什么重要?

"因果"指时间维度上只看过去、不看未来:编码第 tt 帧时,卷积核只覆盖 ≤t\leq t 的帧(通过因果 padding 实现)。重要性:① 图视频统一——单帧图像是"只有第 0 帧的视频",Causal VAE 天然兼容,不需要分别训练图像 VAE 和视频 VAE;② 支持流式处理——可以逐帧编码/解码,不需要等全部帧到齐;③ 首帧质量——首帧等价于图像 VAE 编码,质量有保障,这对图生视频(I2V)任务很重要。

思考题:训练时 CFG 的 dropout 比例怎么选?对效果有什么影响?

训练时以概率 puncondp_{uncond} 将文本条件替换为空文本。常用值:puncond=0.1∼0.2p_{uncond} = 0.1 \sim 0.2。
太低(如 0.05):模型很少见到无条件输入,推理时 ϵθ(xt,∅)\epsilon_\theta(x_t, \varnothing) 估计不准,CFG 效果差。
太高(如 0.5):条件训练样本减半,文本遵循能力下降。
SD3 论文报告 puncond=0.1p_{uncond} = 0.1 时效果最优。此外,多条件模型(如图+文)可以对不同条件独立 dropout,实现更灵活的引导(如单独引导文本 or 单独引导参考图)。