2.3 蒸馏与少步生成¶
所属章节:第 2 章 采样、加速与引导
课时:90 分钟
前置:2.1、2.2
对应面试题:D3
一句话目标:学完能区分“采样器加速”和“模型蒸馏”,比较 LCM/Turbo/DMD,并为一个产品场景选加速路线。
1. 学习目标¶
学完本节,你应该能够:
- 解释 为什么仅靠采样器加速有下限;
- 说明 渐进蒸馏、一致性模型/LCM、对抗蒸馏/Turbo、DMD 的基本思想;
- 比较 四类方法的步数、质量、多样性、训练成本;
- 解释 少步模型为什么会损失多样性/细节;
- 为一个场景选择 加速路线;
- 用 90 秒回答 D3,并接住“LCM 和 Turbo 有什么区别”。
2. 为什么还需要蒸馏¶
采样器加速(DDIM、DPM-Solver)是 training-free 的:
- 不改模型;
- 20–30 步可以不错;
- 但很难稳定做到 1–4 步。
实时应用需要:
- 手机端 1 秒出图;
- 视频逐帧生成;
- 交互式编辑;
- 低成本 API。
这时需要把“多步能力”压进模型本身,即蒸馏。
一句话:
采样器是“解方程解得更好”,蒸馏是“把方程变简单”。
3. 渐进蒸馏(Progressive Distillation)¶
3.1 思想¶
教师模型需要 \(N\) 步,学生模型学“用一半步数达到教师两步的结果”。
流程:
- 教师 \(N\) 步;
- 学生 \(N/2\) 步;
- 再蒸馏成 \(N/4\);
- 反复折半。
3.2 训练信号¶
学生不是直接学数据,而是学教师的去噪结果:
- 教师走两步;
- 学生走一步;
- 让学生匹配教师的输出。
3.3 特点¶
- 简单、有效;
- 需要多轮训练;
- 通常保持确定性采样;
- 质量较好,但训练成本不低。
4. 一致性模型 / LCM¶
4.1 一致性思想¶
学习一个函数:
要求同一条概率流轨迹上的不同 \(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 思想¶
把概率流轨迹“拉直”:
训练速度场,采样用 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. 常见误区¶
- “LCM 是采样器”:它是模型/权重,不是 scheduler。
- “步数越少越先进”:要看质量、多样性、CFG、分辨率。
- “蒸馏一定损失质量”:好的蒸馏可以接近教师,但通常有取舍。
- “Turbo 可以用高 CFG”:容易过饱和。
- “Rectified Flow 就是蒸馏”:它是路径/训练目标的变化。
- “DPM-Solver 是蒸馏”:它是数值求解器。
13. 课堂练习¶
答案见 06 章节练习与答案。
- 画一张“加速方法分类表”。
- 比较渐进蒸馏、LCM、Turbo、DMD 的训练信号。
- 为“手机端 1 秒出图”和“高质量海报”各选一条路线。
- 解释为什么少步模型要调低 CFG。
- 用 90 秒回答 D3。
14. 自测清单¶
- [ ] 能区分采样器加速和蒸馏;
- [ ] 能解释渐进蒸馏;
- [ ] 能解释 LCM;
- [ ] 能解释 Turbo;
- [ ] 能解释 DMD;
- [ ] 能说出少步的代价;
- [ ] 能 90 秒回答 D3。
15. 本节材料为什么这样设计¶
- 先讲“为什么还需要蒸馏”:采样器有下限,蒸馏换模型。
- 四类方法对比:D3 常追问“LCM 和 Turbo 区别”。
- 选型表:把知识变成工程判断。
- 不写代码:本节是方法和取舍,不是训练实现。
- 单列 Rectified Flow:为 SD3 铺垫。
详细设计理由见 08 材料设计理由。