扩散模型第6章:采样效率与条件控制
第 3 章已经说明训练目标、scheduler 和采样器必须使用一致的参数约定。本章只处理两个工程问题:怎样降低采样成本,以及怎样让生成受条件控制。这里最重要的原则是不要把某个图像 checkpoint 的经验参数写成跨领域默认值。
1. 训练时间网格与采样路径是两件事
Section titled “1. 训练时间网格与采样路径是两件事”训练时常从一个离散时间网格中随机抽取 ;采样时则需要选择一条从噪声到数据的数值路径。两者相关,但不要求采样严格访问训练时的全部时间点。
flowchart LR T["训练:随机采样噪声水平"] --> N["学习噪声/score/velocity"] N --> S["采样:选择 solver 与时间点"] S --> E["NFE、延迟与质量"]
因此更好的速度指标是 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 做外推。以噪声预测记号为例,可写成:
增大通常会增强条件一致性,但也可能损失多样性、造成过度饱和或放大模型误差。不存在跨 checkpoint 通用的“3–8 最佳区间”。有些现代模型还使用 guidance embedding、distilled guidance 或其他训练方式,scale 的含义可能不同。
标准 CFG 需要模型同时学会有条件和无条件行为。训练时随机把条件替换为空条件是一种常见实现,但 dropout 概率是超参数,不是固定的 10%。
5. 条件怎样进入网络
Section titled “5. 条件怎样进入网络”条件注入是架构设计,不只是“条件长什么样”的机械映射。
| 方法 | 适合的关系 | 典型用途 |
|---|---|---|
| 加法 / 拼接 / FiLM/AdaLN 调制 | 低维全局条件 | 类别、时间、标量属性 |
| cross-attention | 条件是另一串可变长表示 | 文本、蛋白/序列上下文、结构 token |
| 空间或图对齐控制分支 | 条件与输出位置有对应关系 | mask、边缘、模板、局部几何约束 |
| adapter / LoRA | 调整已有模型参数以适应新条件或领域 | 参数高效适配;本身不等同于“条件通道” |
ControlNet 是一种额外控制分支的具体架构;LoRA 是参数高效更新机制。把两者与“cross-attention/concat”放成同一层级的三种条件形状,会混淆“信息怎么输入”和“参数怎么适配”。
6. 调试顺序
Section titled “6. 调试顺序”出现“生成不听条件”或“少步就崩”时,按依赖关系检查:
- 参数化一致性:epsilon/x0/v、scheduler 与 checkpoint 是否一致。
- 数据尺度:训练和推理归一化是否一致,噪声水平是否覆盖合理范围。
- 采样器兼容性:solver 是否支持该模型和时间参数化。
- NFE:先增加 NFE 判断是积分误差还是模型本身的问题。
- guidance:从模型推荐值附近做小范围 sweep,观察条件满足与多样性。
- 条件通道:确认条件在训练时真实可见、没有被错误 mask/dropout。
这个顺序的目的,是先排除“配置不一致”再调超参数。很多能够运行但结果很差的扩散管线,本质上不是模型能力不足,而是训练与采样约定错位。
主题色
字体
字号
视觉效果
即将离开本站
你将前往外部网站:
该网站与本站无关,本站不对其内容、安全性或可用性负责。确定后将在新标签页打开。