跳转至

第 3 章材料设计理由

这份文档回答:为什么第 3 章选这些内容?学完能做什么?不学/不做会缺什么?
也可以作为你提出新需求/修改课程的依据。


1. 本章定位

第 3 章不是“训练 SD 的工程课”,而是:

把 Stable Diffusion 从 tokenizer 到训练配方讲成一张完整的系统图。

因此材料遵循四条原则:

  1. 架构必须能画:VAE → latent → UNet → VAE;
  2. 公式必须能写:VAE ELBO、VQ 损失、Attention;
  3. 训练必须能复述:两阶段、冻结、CFG dropout、Offset Noise;
  4. 不做代码实现:不在 VAE/UNet/训练脚本上耗时间。

2. 材料地图

材料 为什么选 学完能做什么 不做什么
3.1 AE/VAE/VQ A2/A3 的核心,SD 的 tokenizer 比较三者,写 ELBO/VQ 损失 不实现 VAE/VQ
3.2 LDM/SD A5 的核心 画数据流,解释为什么快 不写 UNet
3.3 Attention A8/A16 的核心 写公式,解释文本注入 不实现 attention
3.4 SD 训练 A6/D7 的核心 复述两阶段,解释 Offset Noise 不训练 SD
05 面试题库 知识→表达 90 秒回答 7 道核心题 不覆盖所有题
06 练习 纸面检查 手算压缩率/形状,写公式 不做编程题
07 讲师手册 可授课 4 节课节奏/板书 不是学生必读
08 设计理由 解释取舍 判断增删/加深 不是知识点讲义

3. 每份材料的详细理由

3.1 为什么先讲 AE/VAE/VQ-VAE(3.1)

选择理由:

  • A2 是 SD 架构的前置题;
  • 不理解 VAE,就讲不清 latent diffusion;
  • VQ-VAE/VQGAN 是 A2 的高频追问;
  • 重参数化(A3)在 VAE 里最直观。

学到什么:

  • AE 的确定性隐空间;
  • VAE 的 ELBO/重参数/模糊;
  • VQ-VAE 的 codebook/三项损失/straight-through;
  • VQGAN 的 GAN/perceptual;
  • SD 为什么用连续 VAE。

能处理什么:

  • A2、A3;
  • “SD 的 VAE 是不是 VQ-VAE”;
  • “VAE 为什么模糊”;
  • “VQ-VAE 怎么生成”。

为什么不做:

  • 不实现 VAE/VQ;
  • 不训练 codebook;
  • 不展开所有变分推导。

取舍:用“结构 + 损失 + 对比表”替代代码实验。


3.2 为什么讲 LDM/SD(3.2)

选择理由:

  • A5 是 SD 系统题的核心;
  • 很多人只会说“SD 是 latent diffusion”,但画不出数据流;
  • 计算量数字能直接支撑“为什么快”。

学到什么:

  • 像素扩散 vs latent diffusion;
  • SD 数据流;
  • VAE/UNet/CLIP/Cross-Attn/CFG 分工;
  • 48 倍压缩;
  • 瓶颈。

能处理什么:

  • A5;
  • “为什么不用像素扩散”;
  • “SD 为什么快”;
  • “SD 的瓶颈在哪”。

为什么不做:

  • 不写 UNet;
  • 不跑模型;
  • 不展开训练细节(3.4 讲)。

取舍:先系统图,再组件,再瓶颈。


3.3 为什么讲 Attention(3.3)

选择理由:

  • A8/A16 是高频题;
  • 文本如何进入图像,是 SD 的核心;
  • attention 形状/复杂度是常见追问;
  • MMDiT 是 SD3 的铺垫。

学到什么:

  • Self/Cross 公式;
  • Q/K/V 来源;
  • 形状/复杂度;
  • SD 中的位置;
  • attention map;
  • MMDiT。

能处理什么:

  • A8/A16;
  • “Q 从哪来”;
  • “为什么放低分辨率”;
  • “SD3 为什么改 MMDiT”。

为什么不做:

  • 不实现 attention;
  • 不做 attention 可视化代码;
  • 不展开多头实现细节。

取舍:公式 + 形状 + 作用,足够面试。


3.4 为什么讲训练与 Offset Noise(3.4)

选择理由:

  • A6 是 SD 训练的系统题;
  • D7 是亮度问题的代表;
  • 很多人把 Offset Noise 当“调亮技巧”,讲不清低频逻辑;
  • zero terminal SNR/v-pred 容易与 Offset Noise 混淆。

学到什么:

  • 两阶段训练;
  • 冻结 VAE/文本编码器;
  • CFG dropout/EMA/bucketing;
  • 预测目标;
  • Offset Noise 的公式、动机、代价;
  • 与 zero terminal SNR/v-pred 的区别。

能处理什么:

  • A6、D7;
  • “为什么要分两阶段”;
  • “Offset Noise 为什么有效”;
  • “它和 zero terminal SNR 一样吗”。

为什么不做:

  • 不训练 VAE/UNet;
  • 不跑微调;
  • 不做亮度实验。

取舍:训练流程图 + trick 动机 + 亮度直觉。


4. 为什么没有代码

第 3 章最容易滑向“写 VAE/UNet/训练脚本”。本课程刻意不做,原因:

  1. 面试考的是架构和训练逻辑,不是复现;
  2. 代码会占用大量时间,但不直接提升表达;
  3. 跑通不等于理解:可以调库,但画不出数据流;
  4. 本章产出是架构图、公式、训练流程,不是 repo。

如果以后需要代码,建议作为“可选实验”,不进入主线。


5. 学什么 → 能处理什么

学完 能处理的问题 能做的动作
3.1 A2/A3、SD VAE 写 ELBO/VQ 损失,比较三者
3.2 A5、SD 架构 画数据流,算压缩率
3.3 A8/A16、文本注入 写公式,算形状,解释 MMDiT
3.4 A6/D7、训练/亮度 画两阶段,解释 Offset Noise
05 面试追问 90 秒回答
06 自我检查 手算、推导、错题归因

6. 本章不覆盖什么

  • 不覆盖 VAE 的完整变分推导;
  • 不覆盖 UNet 每个模块;
  • 不覆盖 SDXL/SD3 的完整演进(第 5 章);
  • 不覆盖微调/LoRA/ControlNet(第 4 章);
  • 不覆盖训练工程/分布式。

这些不是不重要,而是不属于第 3 章的面试主线。


7. 你可以怎么改

7.1 加深数学

  • 加 VAE 的完整 ELBO 推导;
  • 加 VQ-VAE 的梯度推导;
  • 加 attention 的矩阵分解;
  • 加 Offset Noise 的频率分析。

7.2 增加代码(可选)

  • 给 VAE/attention 的 20 行伪代码;
  • 给“代码阅读题”;
  • 不要求运行。

7.3 增加面试训练

  • 加 30 题题库;
  • 加英文版;
  • 加“画图 + 追问”模拟;
  • 加 SDXL/SD3 对比。

7.4 调整比例

  • 少讲 VQ,多讲 VAE/SD;
  • 少讲训练,多讲 attention;
  • 增加 SDXL/SD3;
  • 增加 Offset Noise 实验分析(纸面)。

建议:每加一块内容,就删一块低优先级内容,保持 90 分钟。


8. 怎么判断学会了

L1 能复述

能讲 3 分钟“SD 是什么”。

L2 能画/写

能画 SD 数据流,写 VAE ELBO/Attention 公式。

L3 能比较

能比较 AE/VAE/VQ、Self/Cross、SD1.5/XL/3。

L4 能应对追问

能回答“为什么用连续 VAE”“为什么 cross-attn 放低分辨率”“Offset Noise 为什么有效”。

本章目标是 L2–L3,面试冲刺是 L4。


9. 最后一句话

第 3 章的价值,不是让你会训练 SD,而是让你能在白板上画出 SD,并解释每个模块为什么存在。