采样器与步数

核心 约 25 分钟 采样器DDIMEulerDPM++步数ODE核心原理
前置知识点(建议先学)
学习状态:

一句话定义

采样器(sampler)是把训练好的单步去噪网络组织成「从纯噪声到图像」完整轨迹的数值策略,不同采样器在确定性、步数效率与画面风格上各有取舍,步数则是精度与算力之间的旋钮。

为什么重要

这是日常出图接触最频繁的一组参数(「DPM++ 2M Karras,30 步」这句话的全部含义),也是最容易误调成「玄学」的地方。理解 ODE/随机微分两种视角后,你能预判:为什么换采样器构图会变、为什么步数加到 50 无增益、为什么低步数专精模型(Turbo/LCM 系)必须配对采样器使用。

前置知识

kp-006(去噪公式与「模型只做单步预测」的性质);kp-005(ᾱ 时刻表)。

核心概念

原理与机制

kp-006 的采样公式是「每步一小段、噪声带新随机性」的马尔可夫链(DDPM 祖先采样)。DDIM 的关键改写:先把网络输出换算成对全图的估计 x̂₀,再直接跳向任意更早时刻:

xt−Δ = √ᾱt−Δ · x̂0 + √(1 − ᾱt−Δ − σt²) · εθ(xt, t) + σt z

σt = 0 时完全确定,可任选步子(如 1000 步链上只走 20 步)

ODE 视角进一步统一了框架:去噪轨迹可写成一条常微分方程,Euler 是一阶数值解(每步沿当前预测方向直线推进),DPM++ 2M / DPM-Solver 用历史信息做二阶/高阶修正,同精度下步数可减半再减半。带 a 后缀(Euler a、DPM++ 2M SDE)在每步重新注入噪声:细节更「活」但对步数敏感、种子跨参数不可复现。Karras 时刻表证明「怎么切噪声水平」与「用什么求解器」同样重要——在中段(半噪半图、信息最活跃的区间)加密步数,收益远大于两端均匀撒步。

步数的边际递减:ODE 轨迹光滑段粗网格即可逼近,误差集中在转折区间;20~30 步后质量增益趋平,继续加步只烧时间;反之步数过低(高阶求解器 <10 步)会出现结构性伪影。低步数模型(Turbo/LCM/ lightning 类蒸馏模型,截至 2026-10 生态常客)通过蒸馏把轨迹压到 1~8 步,但必须配其训练目标对应的采样器与 CFG,否则画面发灰或崩坏。

公式与推导

Euler 法一步 = 用 kp-006 的公式把 x_t 推进到相邻时刻;二阶法(如 Heun/DPM2)先用试探步估出轨迹斜率变化再修正落点——代价是每步两次网络前向、换来总步数近半,净收益视求解器而定。DDIM 跳步公式(上行)推导要点:假设去噪方向 ε_θ 在跳步区间内不变,把 x_t 分解回 (x̂₀, ε) 后按目标时刻的 ᾱ 重新组合。

图示

采样器确定性步数效率特征
DDPM(祖先)随机低(需 ~1000)原始形态,现仅作教学
DDIM(σ=0)确定中跳步先河、同种子可复现
Euler / Euler aa 系随机中朴素稳定、一阶
DPM++ 2M(Karras)确定高20~30 步即收敛,社区主力
DPM++ SDE / Euler a 系随机中质感细腻、对步数敏感
UniPC / DPM-Solver确定很高高阶修正、低步数专精

直观类比

下山找谷底:DDPM 是「每步随机晃一下往下走」;DDIM 是「看好方向直线跳大步」;高阶求解器(DPM++ 2M)是「记住前几步坡度变化,走 S 形捷径」;Karras 时刻表是「在最陡的那段多踩几脚」;步数是「允许走多少步」。

实例或案例

常见误区

自测题

  1. DDIM 为什么能跳步而 DDPM 原始采样不能?

答案要点:DDIM 把中间量参数化为 (x̂₀, ε) 组合,可按任意目标 ᾱ 重建;DDPM 公式绑定相邻时刻且方差固定。

  1. Karras 调度改的是什么?

答案要点:不改求解器,只重排各步的噪声水平(σ/ᾱ 间隔),把步数集中到信息变化最快的中段。

  1. 为什么 Turbo 类模型不能随便换采样器?

答案要点:其蒸馏目标与特定采样格式绑定,常规采样器/CFG 设置不匹配会导致亮度与结构崩坏。

与其他知识点的关系

kp-010 的 CFG 作用于每个去噪步内部、与采样器正交;kp-012 图生图从中间时刻接入某条采样轨迹;kp-024 把步数×分辨率×求解器换算成时间账。

延伸阅读

DDIM 论文(ICLR 2021)第 4 节的非马尔可夫视角;Karras 等《Elucidating…》(NeurIPS 2022)把设计空间拆成「调度×求解器×网络」三个正交轴,是采样器设计的现代总纲。

相关知识点