跳转至

2.3 蒸馏与少步生成

所属章节:第 2 章 采样、加速与引导
课时:90 分钟
前置:2.1、2.2
对应面试题:D3
一句话目标:学完能区分“采样器加速”和“模型蒸馏”,比较 LCM/Turbo/DMD,并为一个产品场景选加速路线。


1. 学习目标

学完本节,你应该能够:

  1. 解释 为什么仅靠采样器加速有下限;
  2. 说明 渐进蒸馏、一致性模型/LCM、对抗蒸馏/Turbo、DMD 的基本思想;
  3. 比较 四类方法的步数、质量、多样性、训练成本;
  4. 解释 少步模型为什么会损失多样性/细节;
  5. 为一个场景选择 加速路线;
  6. 用 90 秒回答 D3,并接住“LCM 和 Turbo 有什么区别”。

2. 为什么还需要蒸馏

采样器加速(DDIM、DPM-Solver)是 training-free 的:

  • 不改模型;
  • 20–30 步可以不错;
  • 但很难稳定做到 1–4 步。

实时应用需要:

  • 手机端 1 秒出图;
  • 视频逐帧生成;
  • 交互式编辑;
  • 低成本 API。

这时需要把“多步能力”压进模型本身,即蒸馏。

一句话:

采样器是“解方程解得更好”,蒸馏是“把方程变简单”。


3. 渐进蒸馏(Progressive Distillation)

3.1 思想

教师模型需要 \(N\) 步,学生模型学“用一半步数达到教师两步的结果”。

流程:

  1. 教师 \(N\) 步;
  2. 学生 \(N/2\) 步;
  3. 再蒸馏成 \(N/4\);
  4. 反复折半。

3.2 训练信号

学生不是直接学数据,而是学教师的去噪结果:

  • 教师走两步;
  • 学生走一步;
  • 让学生匹配教师的输出。

3.3 特点

  • 简单、有效;
  • 需要多轮训练;
  • 通常保持确定性采样;
  • 质量较好,但训练成本不低。

4. 一致性模型 / LCM

4.1 一致性思想

学习一个函数:

\[ f_\theta(x_t,t)\approx x_0, \]

要求同一条概率流轨迹上的不同 \(x_t\) 都映射到同一个 \(x_0\)。

4.2 一致性蒸馏

  • 用教师模型生成相邻时间步的样本对;
  • 让学生对这两个点给出一致的 \(x_0\);
  • 训练后可以 1–4 步采样。

4.3 LCM

Latent Consistency Model:

  • 在 latent 空间做一致性蒸馏;
  • 可挂在 SD 上;
  • LCM-LoRA 用 LoRA 形式提供少步能力;
  • 常用 1–4 步,CFG 要调低。

4.4 特点

  • 少步能力好;
  • 需要蒸馏训练;
  • 多样性和细节可能下降;
  • 不是 sampler,是模型/权重。

5. 对抗蒸馏 / Turbo

5.1 思想

学生模型少步生成,除教师蒸馏外,再加对抗损失/判别器,让输出更真实。

5.2 SDXL-Turbo

  • 1–4 步;
  • 对抗蒸馏 + 教师约束;
  • 速度极快;
  • 通常需要低 CFG(甚至 1);
  • 多样性/复杂构图可能下降。

5.3 特点

  • 质量高、速度快;
  • 训练成本高;
  • 对 CFG/分辨率敏感;
  • 适合实时 demo/交互。

6. DMD / DMD2

6.1 思想

分布匹配蒸馏:

  • 不只匹配单个样本;
  • 让学生分布逼近教师分布;
  • 减少“少步模型只会少数模式”的问题。

6.2 特点

  • 1–4 步;
  • 质量/多样性平衡较好;
  • 训练复杂;
  • 常用于研究/高性能少步模型。

7. Rectified Flow / Reflow

7.1 思想

把概率流轨迹“拉直”:

\[ x_t=(1-t)x_0+t\epsilon, \qquad v=\epsilon-x_0. \]

训练速度场,采样用 Euler/Heun。

7.2 与蒸馏的区别

  • 它不是“教师教学生”;
  • 它改变训练目标/路径;
  • 让 ODE 更容易积分,从而少步;
  • SD3/Flux 使用。

7.3 特点

  • 少步质量好;
  • 训练稳定;
  • 但仍是多步 ODE(1–8 步),不是严格 1 步。

8. 对比表

方法 类型 典型步数 质量 多样性 训练成本 备注
DPM-Solver++ 采样器 10–25 高 中 无 training-free
渐进蒸馏 蒸馏 2–8 高 中 中 折半训练
LCM 一致性蒸馏 1–4 中高 中 中 可 LoRA
Turbo 对抗蒸馏 1–4 高 较低 高 低 CFG
DMD 分布匹配 1–4 高 较高 高 训练复杂
Rectified Flow 路径拉直 1–8 高 高 中高 SD3/Flux

9. 怎么选

场景 推荐 理由
通用文生图 DPM++ 2M / UniPC 不改模型,质量稳
手机端实时 LCM / Turbo 1–4 步
高质量海报 多步 + 高分辨率 细节优先
视频/交互 LCM / Turbo + 低 CFG 时延优先
研究/新模型 Rectified Flow 训练/采样统一

10. 90 秒回答:D3 加速方法

面试官问:你了解哪些 Diffusion 加速方法?

参考回答:

“可以分两类。第一类是 training-free:更好的采样器,比如 DDIM、DPM-Solver、UniPC,减少步数但不改模型;还有缓存、量化、TensorRT 等系统优化。第二类要训练:渐进蒸馏把多步压成少步,LCM 用一致性蒸馏做到 1–4 步,Turbo 用对抗蒸馏,DMD 做分布匹配,Rectified Flow 把轨迹拉直。少步模型会牺牲一些多样性和细节,CFG 也要重新调。实际选型看延迟、质量和成本。”


11. 追问与回答

追问 1:LCM 和 Turbo 的区别?

LCM 是一致性蒸馏,学习“任意时刻映射到 \(x_0\)”;Turbo 是对抗蒸馏 + 教师约束,用判别器提升真实感。两者都能 1–4 步,但训练信号和目标不同。

追问 2:为什么 Turbo 建议低 CFG?

因为对抗蒸馏/少步训练时条件强度已经很强,高 CFG 容易过饱和、伪影;通常用 1–2 甚至 1。

追问 3:少步模型为什么多样性下降?

多步采样有随机性,能探索更多模式;少步模型把路径压缩,容易学到“平均解”,模式覆盖变窄。

追问 4:蒸馏和采样器能一起用吗?

可以。少步模型通常还需要一个匹配的 solver/scheduler;但主要加速来自模型本身。


12. 常见误区

  1. “LCM 是采样器”:它是模型/权重,不是 scheduler。
  2. “步数越少越先进”:要看质量、多样性、CFG、分辨率。
  3. “蒸馏一定损失质量”:好的蒸馏可以接近教师,但通常有取舍。
  4. “Turbo 可以用高 CFG”:容易过饱和。
  5. “Rectified Flow 就是蒸馏”:它是路径/训练目标的变化。
  6. “DPM-Solver 是蒸馏”:它是数值求解器。

13. 课堂练习

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

  1. 画一张“加速方法分类表”。
  2. 比较渐进蒸馏、LCM、Turbo、DMD 的训练信号。
  3. 为“手机端 1 秒出图”和“高质量海报”各选一条路线。
  4. 解释为什么少步模型要调低 CFG。
  5. 用 90 秒回答 D3。

14. 自测清单

  • [ ] 能区分采样器加速和蒸馏;
  • [ ] 能解释渐进蒸馏;
  • [ ] 能解释 LCM;
  • [ ] 能解释 Turbo;
  • [ ] 能解释 DMD;
  • [ ] 能说出少步的代价;
  • [ ] 能 90 秒回答 D3。

15. 本节材料为什么这样设计

  • 先讲“为什么还需要蒸馏”:采样器有下限,蒸馏换模型。
  • 四类方法对比:D3 常追问“LCM 和 Turbo 区别”。
  • 选型表:把知识变成工程判断。
  • 不写代码:本节是方法和取舍,不是训练实现。
  • 单列 Rectified Flow:为 SD3 铺垫。

详细设计理由见 08 材料设计理由。


16. 下一节

2.4 Classifier Guidance 与 CFG