第 2 章材料设计理由¶
这份文档回答:为什么第 2 章选这些内容?学完能做什么?不学/不做会缺什么?
也可以作为你提出新需求/修改课程的依据。
1. 本章定位¶
第 2 章不是“采样器实现课”,而是:
把采样、加速、引导三件事讲清楚,让面试官知道你不仅会用,还知道为什么、怎么选。
因此材料遵循四条原则:
- 公式必须能写:DDIM、CFG 是高频白板题;
- 方法必须能分类:采样器/加速/引导不能混为一谈;
- 选择必须有理由:不仅知道 DPM-Solver,还要知道何时用;
- 不做代码实现:不在 sampler/benchmark 上耗时间。
2. 材料地图¶
| 材料 | 为什么选 | 学完能做什么 | 不做什么 |
|---|---|---|---|
| 2.1 DDPM/DDIM | D4 的核心,采样基础 | 写两个公式,解释跳步/反演 | 不实现 sampler |
| 2.2 SDE/ODE 与采样器 | D1 分类、D3 training-free | 分类/选型,解释 DPM-Solver | 不推数值分析细节 |
| 2.3 蒸馏与少步 | D3 training-based | 比较 LCM/Turbo/DMD | 不训练蒸馏模型 |
| 2.4 Guidance | D8 全部 | 推 CFG,解释 \(w\)/负向 prompt | 不实现 guidance |
| 05 面试题库 | 把知识变成表达 | 90 秒回答 4 道核心题 | 不覆盖所有题 |
| 06 练习 | 纸面检查 | 手算、推导、选型 | 不做编程题 |
| 07 讲师手册 | 可授课 | 4 节课节奏/板书 | 不是学生必读 |
| 08 设计理由 | 解释取舍 | 判断增删/加深 | 不是知识点讲义 |
3. 每份材料的详细理由¶
3.1 为什么先讲 DDPM/DDIM(2.1)¶
选择理由:
- D4 是采样部分最高频的题;
- DDIM 是“确定性采样/跳步/反演”的入口;
- 不会 DDIM,后面 SDE/ODE、编辑、加速都讲不深。
学到什么:
- DDPM 祖先采样;
- DDIM 非马尔可夫前向与更新式;
- \(\sigma\) 的三种取值;
- 特例关系、跳步、反演。
能处理什么:
- D4;
- “DDIM 为什么能跳步”;
- “DDPM 和 DDIM 哪个好”;
- “DDIM inversion 怎么用于编辑”。
为什么不做:
- 不实现采样循环;
- 不跑步数对比;
- 不展开所有非马尔可夫推导。
取舍:用“公式 + 特例表 + 数值例子”替代代码实验。
3.2 为什么讲 SDE/ODE(2.2)¶
选择理由:
- D1 需要分类框架;
- D3 的 training-free 加速需要解释 solver;
- “采样器不是模型”是常见误区。
学到什么:
- 前向/反向 SDE;
- 概率流 ODE;
- Euler/Heun/PLMS/DPM-Solver/UniPC;
- sampler vs scheduler;
- 选型。
能处理什么:
- D1;
- “DPM-Solver 为什么快”;
- “SDE 和 ODE 怎么选”;
- “为什么步数少不一定快”。
为什么不做:
- 不推数值分析证明;
- 不实现 solver;
- 不跑 benchmark。
取舍:保留“分类 + 直觉 + 选型”,删掉“代码 + 调参”。
3.3 为什么讲蒸馏(2.3)¶
选择理由:
- D3 的高分回答必须区分“采样器加速”和“模型加速”;
- LCM/Turbo 是产品落地高频;
- 少步模型的代价是常见追问。
学到什么:
- 渐进蒸馏、LCM、Turbo、DMD、Rectified Flow;
- 训练信号与步数;
- 质量/多样性/成本取舍;
- 选型。
能处理什么:
- “LCM 和 Turbo 的区别”;
- “为什么 Turbo 要低 CFG”;
- “少步模型为什么多样性下降”;
- “手机端怎么选”。
为什么不做:
- 不训练蒸馏模型;
- 不实现 consistency loss;
- 不跑 1/4/8 步对比。
取舍:把“训练细节”压缩成“训练信号 + 取舍”,服务面试。
3.4 为什么讲 Guidance(2.4)¶
选择理由:
- D8 是条件生成的核心题;
- CFG 是 SD 默认组件;
- 负向 prompt、\(w\)、过饱和是工程高频。
学到什么:
- score 分解;
- classifier guidance;
- CFG 与条件 dropout;
- 负向 prompt;
- \(w\) 的影响与改进。
能处理什么:
- D8;
- “CFG 需要分类器吗”;
- “\(w\) 为什么不能太大”;
- “负向 prompt 怎么实现”。
为什么不做:
- 不实现 CFG 采样;
- 不训练分类器;
- 不展开所有改进变体。
取舍:公式 + 对比表 + 调参经验,足够面试。
4. 为什么没有代码¶
第 2 章最容易滑向“实现 sampler/跑 benchmark”。本课程刻意不做,原因:
- 面试考的是解释和选型,不是复现;
- 代码会消耗大量时间,但不会自动提升表达;
- 跑通不等于理解:可以调库,但讲不清 \(\sigma\) 的作用;
- 本章的产出是公式、分类表、选型逻辑,不是 repo。
如果以后需要代码,建议作为“可选实验”,不进入主线。
5. 学什么 → 能处理什么¶
| 学完 | 能处理的问题 | 能做的动作 |
|---|---|---|
| 2.1 | D4、DDIM 跳步/反演 | 写公式、画特例表 |
| 2.2 | D1、DPM-Solver | 分类、选型、解释 |
| 2.3 | D3、LCM/Turbo | 比较、选型、说代价 |
| 2.4 | D8、CFG/\(w\) | 推导、调参、解释负向 prompt |
| 05 | 面试追问 | 90 秒回答 |
| 06 | 自我检查 | 手算、推导、错题归因 |
6. 本章不覆盖什么¶
- 不覆盖 SDE 的严格数学;
- 不覆盖 DPM-Solver 的完整推导;
- 不覆盖蒸馏训练细节;
- 不覆盖采样器工程实现;
- 不覆盖所有 guidance 变体(CFG++/APG/PAG 只点名)。
这些不是不重要,而是不属于第 2 章的面试主线。
7. 你可以怎么改¶
7.1 加深数学¶
- 加 Fokker–Planck;
- 加 DPM-Solver 指数积分推导;
- 加 consistency model 的数学;
- 加 CFG 的 score 严格推导。
7.2 增加代码(可选)¶
- 给 DDIM 20 行伪代码;
- 给“代码阅读题”;
- 不要求运行。
7.3 增加面试训练¶
- 加 30 题题库;
- 加英文版;
- 加压力追问;
- 加“选型 case”。
7.4 调整比例¶
- 少讲 SDE,多讲 DDIM/CFG;
- 少讲蒸馏,多讲采样器;
- 增加 Flow 采样;
- 增加编辑/反演。
建议:每加一块内容,就删一块低优先级内容,保持 90 分钟。
8. 怎么判断学会了¶
L1 能复述¶
能讲 3 分钟“采样器怎么选”。
L2 能推导¶
能写 DDIM 更新式和 CFG 公式。
L3 能比较¶
能比较 DDPM/DDIM、DPM-Solver/蒸馏、CFG/classifier。
L4 能应对追问¶
能回答“为什么跳步”“为什么 DPM-Solver 快”“为什么高 CFG 过饱和”。
本章目标是 L2–L3,面试冲刺是 L4。
9. 最后一句话¶
第 2 章的价值,不是让你会写 sampler,而是让你在面试中把“怎么采样、怎么加速、怎么引导”讲成三条清晰的线。