← 返回题目列表

DDIM 是什么?扩散模型采样为什么慢,如何加速?

高频 中等 第 9 / 25 题 更新于 2026/09/25
DDIM采样加速扩散模型蒸馏
学习 AI 实战项目

简化版

扩散采样要重复执行去噪网络,延迟约随函数评估次数(NFE)增长。DDIM 构造与 DDPM 共享边缘加噪分布和训练目标的非马尔可夫过程;采样可选稀疏时间步,并在 η=0 时形成确定性更新,因此能复用已训练模型减少 NFE。20–50 步只是常见历史配置,不保证跨模型质量。DPM-Solver 类数值求解器与蒸馏/一致性方法则进一步改变求解或训练方式。

详细版

慢的根源

原始 DDPM 祖先采样按相邻时间步运行,每步需要网络前向;经典设置可有很多步。实践也可对 DDPM 时间表做 respacing,只是大步长会改变误差与质量,因此“DDPM 绝对不能跳步”不准确。

DDIM 的两个改造

  1. 共享训练目标 + 可调随机性:DDIM 从共享 q(x_t|x_0) 边缘的非马尔可夫构造得到采样更新,可直接复用常见 DDPM 噪声预测器。把随机项系数设为 0 时,给定初始噪声、条件和确定性算子,更新是确定的。
  2. 跳步采样:正因为不再是逐步马尔可夫,DDIM 可以在时间上取一个稀疏子序列(如从 1000 步里取 50 步)直接跳着走,大幅减少前向次数。

DDIM 单步(确定性)

x₀_pred = ( x_t − √(1-ᾱ_t)·ε_θ(x_t,t) ) / √ᾱ_t         # 先估计干净图
x_{t-1} = √ᾱ_{t-1}·x₀_pred + √(1-ᾱ_{t-1})·ε_θ(x_t,t)   # 再按下一步的噪声水平重构

DDIM 的额外好处

  • 确定性便于复现:还需固定模型、条件、时间表、数值 kernel 等环境。
  • 便于反演与轨迹编辑:DDIM inversion 是近似过程,重建误差受模型和步数影响。
  • 可减少 NFE:质量保持程度必须用目标 checkpoint 和任务实测。

更强的加速谱系

  • DPM-Solver / DPM-Solver++:把反向过程看成常微分方程(ODE),用高阶数值解法,10–20 步出图。
  • 蒸馏 / 一致性模型(Consistency Models、LCM、SDXL-Turbo):把多步过程蒸馏进网络,1–4 步生成,逼近实时。

完整版教学

记忆钩子:扩散模型题沿着加噪学会还原、采样逐步去噪、条件控制方向、速度质量取舍这条线讲,答案就不会散。

一、把慢的原因说透

扩散采样的耗时 ≈ 步数 × 单步网络前向成本。要加速只有两条路:减少步数 或 降低单步成本。

  • 降低单步成本 → Latent Diffusion(在小的潜空间跑)、更轻的网络。
  • 减少步数 → DDIM、DPM-Solver、蒸馏。

原始 DDPM 离散反向链通常在完整时间表上运行;减少步数会放大离散误差。DDIM 给出另一族更新,使稀疏子序列有清晰公式,但不是说任何 DDPM respacing 都在数学上被禁止。

二、DDIM 的关键:训练目标不变,采样过程可换

DDIM 最精妙的地方在于一个观察:DDPM 的训练损失 L_simple 只依赖前向的边缘分布 q(x_t|x₀),并不依赖前向是不是马尔可夫。 也就是说,只要保证「任意时刻 x_t 的分布」和 DDPM 一致,反向过程可以另设计一族。

DDIM 就构造了这样一族非马尔可夫的前向/反向过程,它们共享同一个 q(x_t|x₀),因此:

  • 可以直接用 DDPM 训练好的网络,无需重训(这点非常重要,是它能即插即用的原因);
  • 采样公式有随机性参数 η;η=0 为确定性 DDIM。在完整且匹配的时间表/方差设定下某些选择可对应 DDPM 式随机性,但不能笼统说任意跳步下 η=1 就等于原始 DDPM。

三、逐句读懂 DDIM 采样公式

DDIM(η=0)单步分两小步理解:

第一步:从当前带噪图和预测噪声,反解出对干净图的估计
   x₀_pred = ( x_t − √(1-ᾱ_t)·ε_θ(x_t,t) ) / √ᾱ_t

第二步:按"下一个时间步 s 的噪声水平"重新组装
   x_s = √ᾱ_s·x₀_pred + √(1-ᾱ_s)·ε_θ(x_t,t)

直觉:先大胆猜出最终的干净图 x₀_pred,再把它”退回”到目标噪声水平。因为这里 s 可以不是 t-1,而是任意更小的时间步,所以能跳步。整个过程没有随机项(η=0),故确定。

四、确定性带来的三个实用能力

  1. 可复现:固定 x_T 种子就固定结果,方便调试和产品化。
  2. 可控插值实验:固定确定性轨迹便于研究初始潜变量插值,但输出是否语义平滑不是保证;随机采样也可在固定随机变量后进行可控比较。
  3. 图像编辑/反演:DDIM inversion 可近似把图像映射到噪声轨迹,再改条件生成;它不是真正无损逆变换,强 CFG 与模型误差都会影响重建。

五、加速方法全景对比

方法思路典型步数是否需重训
DDPM随机马尔可夫逐步1000—
DDIM非马尔可夫、确定性、跳步20–50否(复用)
DPM-Solver++把反向当 ODE,高阶数值解10–20否(复用)
蒸馏(Progressive/Guided)学生网络学多步的合并4–8是(蒸馏)
一致性模型 / LCM学”任意点直接映射到 x₀”1–4是(蒸馏/专训)
对抗蒸馏(SDXL-Turbo/ADD)蒸馏+GAN 判别器保锐利1–4是

一条演进主线:DDIM/DPM-Solver 靠”更聪明地解同一个反向过程”来减步(免重训);蒸馏/一致性模型靠”重新训练网络学会大步跳”来把步数压到个位数(需重训)。

六、怎样用 NFE—质量曲线选择采样器

假设同一 checkpoint、同一 1,000 条提示上,50 步 DDIM 的 FID 为 12.0、平均耗时 2.5 秒,20 步为 13.4/1.1 秒,10 步为 18.7/0.6 秒。20 步相对 50 步节省约 56% 时间,但 FID 变差 1.4;是否接受取决于延迟 SLA、人工偏好与文本一致性,不能只说“20 步接近 1000 步”。

比较时应以 NFE 而非 UI 中模糊的“steps”统一成本,并固定模型、分辨率、CFG、seed 集合和时间步调度。至少报告图像质量/人评、提示遵循、多样性、重建或编辑指标以及 P50/P95 延迟;蒸馏模型还要与其专用采样器配对,不能换一个 scheduler 后直接横比。

七、常见误区与追问

  • 误区:DDIM 要重新训练模型。 不用,它复用 DDPM 训好的网络,只改采样过程。
  • 误区:步数越少越好。 步数太少(如 DDIM 用 5 步)质量会下降;每种采样器都有质量/速度的权衡点。
  • 追问:DDIM 为什么适合跳步? 它为共享边缘分布的非马尔可夫构造推导了跨稀疏时间点更新;原始 DDPM 全步链也可 respacing,但误差与采样分布不同。
  • 追问:确定性采样牺牲了什么? 牺牲了每次采样的随机多样性(同噪声必同图),但换来可复现、可插值、可编辑。要多样性可调 η>0 或换初始噪声。
  • 追问:LCM/Turbo 为什么能一步出图? 它们通过蒸馏/一致性训练,让网络学会「从任意噪声点直接预测干净图」,把上百步的迭代压缩进一次前向。

八、加强记忆

DDIM 记「共享 DDPM 训练目标、换一族采样更新、η=0 可确定、可用稀疏时间步」。它减少 NFE,却不保证固定 20–50 步保持质量;反演也只是近似。DPM-Solver 类方法改进数值求解,蒸馏/一致性方法通过额外训练压缩步数。选型要画 NFE—质量—延迟曲线,并区分“给定环境可复现”和“数学上无随机项”。