跳转到内容

扩散模型第6章:采样效率与条件控制

第 3 章已经说明训练目标、scheduler 和采样器必须使用一致的参数约定。本章只处理两个工程问题:怎样降低采样成本,以及怎样让生成受条件控制。这里最重要的原则是不要把某个图像 checkpoint 的经验参数写成跨领域默认值。

1. 训练时间网格与采样路径是两件事

Section titled “1. 训练时间网格与采样路径是两件事”

训练时常从一个离散时间网格中随机抽取 tt;采样时则需要选择一条从噪声到数据的数值路径。两者相关,但不要求采样严格访问训练时的全部时间点。

训练与采样的分工

因此更好的速度指标是 NFE,而不是“训练用了 T=1000,所以推理必须 1000 步”。

2. DDIM 与 solver:同一网络可以有不同采样路径

Section titled “2. DDIM 与 solver:同一网络可以有不同采样路径”

DDIM 的关键贡献之一,是在同一训练目标下构造非马尔可夫的生成过程,从而可以使用稀疏的时间步,并在常见设置下进行确定性采样。它不要求重训去噪网络,但“多少步够用”没有跨模型固定答案。

后续方法把连续时间扩散写成 ODE/SDE,并设计更高效的求解器。DPM-Solver++ 的论文在特定 guided 图像模型上展示了约 15–20 次网络评估的高质量采样,但这应理解为论文实验结果,而不是所有模型的推荐步数。

路线主要特点需要注意
ancestral / SDE sampler保留随机项,可获得随机轨迹NFE、噪声离散化和模型参数化必须匹配
DDIM可确定性、可使用较稀疏时间点少步质量依 checkpoint 而变
ODE solver / DPM-Solver 类利用连续动力学做高效积分solver 阶数、时间网格与 guidance 会相互作用
蒸馏/一致性模型训练目标本身针对少步甚至单步不是“换一个 scheduler”就能得到

“采样器就是 ODE 数值积分器”只对一部分确定性概率流采样器成立;随机 SDE/ancestral sampler 不能全部塞进这个类比。

3. 步数怎么选:用 NFE–质量曲线,而不是甜点数字

Section titled “3. 步数怎么选:用 NFE–质量曲线,而不是甜点数字”

一个可靠流程是固定 checkpoint、随机种子集合和评价协议,然后对候选 sampler 扫一组 NFE。记录至少三类指标:生成质量/任务指标、吞吐或延迟、失败率或约束违反率。

checkpoint + scheduler 约定固定
↓
选择 2–3 个兼容 sampler
↓
扫 NFE:少 → 中 → 多
↓
画质量/效用 vs NFE 曲线
↓
在目标预算下选择拐点

图像模型常见的 10、20、50 步经验不能直接搬到蛋白结构、分子坐标或离散扩散。不同状态空间的一次网络前向成本也完全不同。

4. Classifier-free guidance:条件与无条件预测的组合

Section titled “4. Classifier-free guidance:条件与无条件预测的组合”

标准 CFG 同时计算条件预测和无条件预测,并按 guidance scale 做外推。以噪声预测记号为例,可写成:

ϵ^cfg=ϵθ(xt,t,∅)+w[ϵθ(xt,t,c)−ϵθ(xt,t,∅)].\hat\epsilon_{cfg} =\epsilon_\theta(x_t,t,\varnothing) +w\left[\epsilon_\theta(x_t,t,c)-\epsilon_\theta(x_t,t,\varnothing)\right].

ww 增大通常会增强条件一致性,但也可能损失多样性、造成过度饱和或放大模型误差。不存在跨 checkpoint 通用的“3–8 最佳区间”。有些现代模型还使用 guidance embedding、distilled guidance 或其他训练方式,scale 的含义可能不同。

标准 CFG 需要模型同时学会有条件和无条件行为。训练时随机把条件替换为空条件是一种常见实现,但 dropout 概率是超参数,不是固定的 10%。

条件注入是架构设计,不只是“条件长什么样”的机械映射。

方法适合的关系典型用途
加法 / 拼接 / FiLM/AdaLN 调制低维全局条件类别、时间、标量属性
cross-attention条件是另一串可变长表示文本、蛋白/序列上下文、结构 token
空间或图对齐控制分支条件与输出位置有对应关系mask、边缘、模板、局部几何约束
adapter / LoRA调整已有模型参数以适应新条件或领域参数高效适配;本身不等同于“条件通道”

ControlNet 是一种额外控制分支的具体架构;LoRA 是参数高效更新机制。把两者与“cross-attention/concat”放成同一层级的三种条件形状,会混淆“信息怎么输入”和“参数怎么适配”。

出现“生成不听条件”或“少步就崩”时,按依赖关系检查:

  1. 参数化一致性:epsilon/x0/v、scheduler 与 checkpoint 是否一致。
  2. 数据尺度:训练和推理归一化是否一致,噪声水平是否覆盖合理范围。
  3. 采样器兼容性:solver 是否支持该模型和时间参数化。
  4. NFE:先增加 NFE 判断是积分误差还是模型本身的问题。
  5. guidance:从模型推荐值附近做小范围 sweep,观察条件满足与多样性。
  6. 条件通道:确认条件在训练时真实可见、没有被错误 mask/dropout。

这个顺序的目的,是先排除“配置不一致”再调超参数。很多能够运行但结果很差的扩散管线,本质上不是模型能力不足,而是训练与采样约定错位。

本页导航

目录