扩散模型:扩散方法对照表

扩散模型:扩散方法对照表

Charles Lv7

这一页不是把方法名字罗列一遍,而是回答一个更实际的问题:当你已经知道 DDPMDDIMEulerHeunDPM-SolverDMDDMD2Phased DMDRectified Flow / Rectified Diffusion 这些名字时,怎样在训练、采样、蒸馏和部署四个层面上判断差异;当项目约束变成“不能重训”“只能给 8 步”“想做一步出图”“必须兼容 CFG”“对边缘纹理很敏感”时,又应该优先看哪一类方法。

如果把扩散方法的演化高度压缩,可以写成下面这条链:

1
2
3
4
5
6
基础扩散建模
-> 更快的采样路径
-> 更好的 ODE/SDE 求解器
-> 少步蒸馏
-> 一步分布匹配
-> 路径整流与直线化

这页的作用,是把这条链拆开到可以用于工程判断的粒度。

初学者先抓住

对照扩散方法时,先判断它改的是哪一层:训练目标、采样路径、数值求解器、蒸馏学生,还是整条生成轨迹。名字相近的方法可能解决完全不同的误差来源,不能只按“几步出图”排序。

难点解释:为什么同样少步,失败形态不同

少步采样可能失败在积分误差,也可能失败在学生模型分布匹配不稳,还可能失败在条件 guidance 被放大后过冲。看方法表时要把“快”拆成速度、稳定性、保真、多样性和训练成本几项分别评估。

1. 先用四个问题给方法定位

比较扩散方法时,最稳的做法不是先问“它更新不更新论文榜单”,而是先确认它改的是训练目标、采样路径、数值求解器还是学生模型;是否需要重训;省下的是网络评估次数、单步误差还是整条采样轨迹;副作用更容易表现为模糊、颜色漂移、细节伪影、多样性下降还是训练不稳定。很多“方法很像”的错觉,都来自没有先把这四件事拆开。

2. 总表:方法按修改层级来对照

方法 是否重训 主要改动层 直接目标 代表优点 主要代价 更适合的情形
DDPM 基础生成建模 稳定学习反向去噪 训练清晰、质量高、理论基础强 采样极慢 做高质量教师模型、研究基线
DDIM 采样路径 在不重训的前提下减少步数 兼容已有模型、少步可用 极少步时误差仍较大 已有教师模型,需要快速加速
Euler ODE 离散化 低成本少步采样 实现简单、速度高、社区常用 一阶误差大,低步数细节易抖 预算紧、追求可控性和简单性
Heun 二阶校正离散化 提升低步数稳定性 同步数下更平滑、更稳 每步计算更高 追求 10 到 30 步内较稳的质量
DPM-Solver 专用高阶求解器 少步仍保留较好保真 充分利用 diffusion ODE 结构 实现复杂、调参理解门槛高 10 到 20 步高质量采样
DPM-Solver++ guided solver 兼顾 CFG 稳定性和速度 工业界采用广、guided 采样稳 仍属于推理侧优化 Stable Diffusion 等 CFG 场景
Progressive Distillation 学生模型蒸馏 逐级减半采样步数 少步质量往往比直接一步更稳 蒸馏链长、教师成本高 从 64 步压到 32/16/8/4 步
Consistency / LCM 一致性映射 直接学习 1 到几步映射 推理很快、生态成熟 高频细节与多样性受训练影响大 交互式出图、快速预览
DMD 分布匹配蒸馏 一步生成 不只模仿轨迹而是逼近数据分布 训练不稳、容易模糊 追求一步出图的研究与探索
DMD2 改良分布匹配 更稳的一步生成 质量和清晰度明显提高 训练链更复杂 一步生成但仍要求教师级外观
Phased DMD 分阶段蒸馏 兼顾结构和纹理的一步/少步生成 逐阶段控制学习难度 管线复杂、阶段设计敏感 大规模或复杂条件生成
Flow Matching 速度场训练目标 直接拟合噪声到数据路径上的 vector field 训练目标直连 ODE 采样,适合视频/latent flow 路径、time sampling、loss weighting 都要重新设计 新训练视频 DiT、latent flow 或多模态生成底座
Rectified Flow / Rectified Diffusion 轨迹形状重塑 学更“直”的生成路径 粗步积分更自然、少步友好 仍需重训和调 schedule 从轨迹本身优化一步或少步生成

3. 方法之间真正不同的不是“快慢”,而是误差来源

许多扩散方法都在说“减少步数”,但它们消除的误差不一样。

3.1 DDIM 解决的是路径构造问题

DDIM 的关键价值不是把单步预测做得更准,而是让你能在同一个训练模型上重新选一条更适合稀疏离散的路径。
它本质上是在问:DDPM 的随机反向链是否唯一,以及能否换成一条更平滑、可控、适合少步采样的确定轨迹。

所以 DDIM 的贡献点是“路径”,不是“单步预测能力”。

3.2 Euler、Heun、DPM-Solver 解决的是积分误差问题

进入 ODE/SDE 视角后,采样误差可以简化理解成数值积分误差。
设概率流 ODE 写成

dxdt=fθ(x,t),\frac{dx}{dt} = f_\theta(x,t),

若步长为 hh,一阶 Euler 的局部截断误差通常是 O(h2)O(h^2),累计全局误差是 O(h)O(h)
Heun 这类二阶方法能把全局误差推到 O(h2)O(h^2)
专用高阶方法如 DPM-Solver 则利用扩散 ODE 的结构,把线性部分解析化处理,从而在同样网络调用次数下获得更小误差。

直观上可以这样想:Euler 是拿直尺连一小段弯路;Heun 是先猜方向再回头修正;DPM-Solver 则利用扩散 ODE 的部分解析结构,更聪明地沿着路径前进。

3.3 DMD、DMD2、Phased DMD 解决的是“整条轨迹都不要了”

一步生成路线真正激进的地方在于,它不再满足于“把 50 步采样压成 10 步”,而是试图直接学习:

zN(0,I)x0z \sim \mathcal{N}(0, I) \mapsto x_0

的强映射。

这时问题从“怎么更准地做 10 次积分”变成“怎么保证一步映射出来的整体分布和真实数据分布足够接近”。
所以 DMD 系列的核心挑战不是积分误差,而是分布匹配是否稳定、学生是否会坍塌到安全但单调的样本、以及构图、语义和局部纹理能否在极少更新中同时保住。

3.4 Flow Matching 解决的是“直接学速度场”

传统扩散常先预测 ϵ\epsilonx0x_0vv,再由采样器换算成更新方向。Flow Matching 更直接:先定义一条从噪声分布到数据分布的连续路径,再让模型回归这条路径上的速度。

如果路径是

xt=(1t)x0+tx1,x_t=(1-t)x_0+t x_1,

目标速度就是

ut=x1x0.u_t=x_1-x_0.

这类方法的关键问题不只是“速度场能不能学准”,还包括路径是否适合数据几何、时间采样是否覆盖高难区间、CFG 放大后 ODE 是否仍稳定。现代视频模型常采用 velocity / flow 风格目标,是因为视频 latent 的采样成本高,直接学习可积分的生成方向更有利于少步和蒸馏。

3.5 Rectified Flow / Diffusion 解决的是“轨迹本来就该更直”

如果从高斯噪声到数据样本的理想路径是一条非常弯的曲线,那么再好的数值求解器也要付出很多步数。
整流类方法的直觉是:与其反复提高积分器阶数,不如把路径本身改直一些。

这在几何上很容易理解。设路径为 xtx_t,曲率越大,粗步长积分造成的偏离越明显。
如果通过训练把路径改得更接近线性插值,则少步乃至一步近似自然会更好。

4. 一张“误差来源”对照表

方法类 主要误差来源 典型补救办法 常见失败外观
DDPM 原始多步 步数太多带来的时延,不是质量本身 改成稀疏时间步或更快求解器 太慢,不一定难看
DDIM 路径稀疏后时间离散误差上升 更合理 time schedule,配合 solver 构图尚可但纹理偏软
Euler 一阶近似偏差大 增加步数、缩小步长、换二阶方法 边缘毛刺、层次感不稳
Heun 低步数下仍可能受模型误差支配 改噪声 schedule、保留足够步数 稳一些但仍可能出现局部漂移
DPM-Solver 系列 高阶近似假设与实际网络误差 选合适 solver 阶数和 schedule guidance 高时颜色或对比度异常
Progressive Distillation 学生模仿教师轨迹时丢失细节 多阶段蒸馏、强教师、加正则 细节被均值化
LCM / Consistency 一致性目标下高频纹理难保 增大训练覆盖、改善 teacher trajectory 速度快但“像”而不“锐”
DMD / DMD2 / Phased DMD 分布匹配不稳,梯度噪声大 更好的判别信号、阶段设计、强先验 平滑、假细节、模式坍塌
Flow Matching 路径选择、时间采样和速度场误差 调整插值路径、loss weighting、solver 和条件注入 大结构可行但局部细节或控制不足
Rectified 路线 路径重塑不充分或与条件控制冲突 改流匹配目标、强化条件训练 大轮廓好但局部控制偏弱

5. 如果从训练成本看,方法差异会非常明显

用户常说“我要更快的方法”,但在研究和工程里至少有三种完全不同的“快”:

5.1 推理快,但训练不变

这一类包括改变采样路径的 DDIM、低成本一阶离散化的 Euler、带校正的二阶 Heun,以及利用扩散 ODE 结构的 DPM-Solver / DPM-Solver++。它们的共同点是现成模型可用、切换成本低、上线前能快速试质量和速度,效果不佳时也容易回退。

它们更像“编译优化”或者“求解器优化”。

5.2 推理快,但训练成本上升

这一类包括逐级压缩教师步数的 Progressive Distillation、学习少步一致性映射的 Consistency / LCM、追求一步分布匹配的 DMD 系列,以及通过更直路径降低少步积分难度的 Rectified Flow / Diffusion。它们本质上是在用离线训练成本换线上网络评估次数,教师质量、蒸馏目标和数据覆盖范围会共同决定上限。

5.3 训练和推理都更复杂

某些复杂条件生成或视频生成场景下,方法虽然理论上更快,但整个系统会变复杂:CFG 变种改变采样轨迹和数值稳定性,ControlNet / adapter 增加前向开销和显存压力,多尺度 latent 级联需要协调阶段接口,视频时空注意力还会显著增加 token 数和 cache 成本。此时“采样步数减少”未必能直接换来端到端吞吐提升,瓶颈可能转移到 UNet / DiT 单次前向、条件网络、显存带宽或视频缓存。

6. 用三个场景理解怎么选方法

场景 A:你已经有一个高质量 Stable Diffusion 模型,但产品要求延迟从 2.8 秒降到 1 秒

第一优先级通常不是一步蒸馏,而是先试 DPM-Solver++Euler aHeun,再试更稀疏的步数 schedule,最后才考虑 LCM 或 consistency distillation。这样能最快落地,也更容易保持与已有 LoRA、ControlNet 和 prompt 工具链的兼容。

场景 B:你要做移动端草图预览,希望用户拖动 slider 时实时看到构图变化

这里目标不是最终极致质量,而是交互速度。
更适合的往往是 LCM、consistency models 或少步 rectified 路线,因为它们在 1 到 4 步内就能输出足够有用的预览图。

场景 C:你在研究一步高质量生成,并且愿意投入较重训练预算

这时才应该重点考虑 DMD、DMD2、Phased DMD 或 Rectified Diffusion / Flow,因为它们解决的是“把整个生成映射压成一步”的问题,而不是只优化原有采样器。

7. 一张“需求到方法”的对照表

需求 优先方法 原因 不建议直接上的方案
不重训、立刻提速 DDIM / Euler / Heun / DPM-Solver++ 切换成本低 一步蒸馏
10 步左右尽量逼近教师 DPM-Solver++ / 高质量 Heun schedule 少步质量稳定 直接 1 步
4 步内交互式预览 LCM / Consistency / 少步 Rectified 推理极快 继续用原始 DDPM
一步出图研究 DMD2 / Phased DMD / Rectified Diffusion 重点解决分布匹配 仅靠 solver 优化
条件控制很多,生态要求高 DPM-Solver++ + 蒸馏增量尝试 CFG 和 adapter 兼容性更重要 完全重构生成路径

8. 评价一个方法时,至少看五类指标

扩散论文经常只给出 FID、CLIP score 或用户主观图例,但工程上更应该把指标拆成五类:

8.1 分布质量

这一类指标包括 FID、precision / recall、density / coverage,回答的是结果是否“像真数据”。

8.2 语义对齐

这一类指标包括 prompt alignment、CLIP score 和条件一致性,回答的是结果是否“像你要的东西”。

8.3 局部视觉质量

这里要看边缘锐度、纹理稳定性、重复纹理伪影和高频细节保真。很多一步方法的大问题不在大轮廓,而在头发、手指、布料纹理、文字边缘等局部区域。

8.4 多样性

一步蒸馏最容易牺牲这一点。
如果只看最优样本图,很容易误判方法已经“追平教师”。

8.5 系统可用性

系统侧要同时看推理时延、显存、CFG 稳定性、与 LoRA / ControlNet / adapter 的兼容以及部署复杂度。研究上强,不代表产品上合适。

9. 公式角度看:为什么一步生成难得多

多步扩散实际上把复杂映射拆成了很多个局部简单子问题。
设从噪声到数据的目标映射为 GG^\star,多步采样相当于把它分解成:

GgTgT1g1.G^\star \approx g_T \circ g_{T-1} \circ \cdots \circ g_1.

每个 gtg_t 只需要完成一次小规模局部修正。
而一步生成要求学生模型 GϕG_\phi 直接逼近整体映射:

Gϕ(z,c)x0.G_\phi(z, c) \approx x_0.

如果把每一步误差记作 ϵt\epsilon_t,多步情形中误差虽然会累积,但每一步学习任务简单;一步情形中虽然只有一次前向,但需要把所有结构、语义、纹理和条件控制一次性放进单个网络里。
这就解释了为什么一步方法经常出现“大结构对了但细节糊”“颜色对了但材质假”“人脸大致像了但眼睛和手不稳定”之类的问题。

10. 把 CFG 放进比较里,会看到另一层差异

很多扩散方法在无条件或弱条件下表现不错,但一旦引入 classifier-free guidance:

ϵ^θ(xt,c)=ϵθ(xt,)+w(ϵθ(xt,c)ϵθ(xt,)),\hat{\epsilon}_\theta(x_t, c) = \epsilon_\theta(x_t, \varnothing) + w \big( \epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \varnothing) \big),

问题就会变复杂。

当 guidance scale ww 很大时,分布会被强行拉向条件方向,数值积分更容易不稳定,颜色过饱和、局部过锐、结构断裂等问题也更常见。

这也是为什么 DPM-Solver++ 在实际工具链里地位很高,因为它更关注 guided 采样下的稳定性。
同样地,评估少步或一步方法时,如果完全不讨论 CFG,只展示无条件采样质量,结论常常不够有用。

11. 从研究阅读顺序看,这些方法最好这样串起来

建议把扩散采样与蒸馏路线分成四层读:

第一层:基础建模

先读 DDPM 和 Score Matching / Score SDE,目标是理解为什么扩散可以通过噪声预测转成监督学习。

第二层:路径与求解器

再读 DDIM、Euler / Heun、DPM-Solver / DPM-Solver++,目标是理解为什么同一个模型可以通过改离散化方法变快。

第三层:少步蒸馏

随后读 Progressive Distillation、Consistency Models 和 LCM,目标是理解为什么要把求解器优化升级为学生模型蒸馏。

第四层:一步与路径整流

最后读 DMD、DMD2、Phased DMD 和 Rectified Flow / Rectified Diffusion,目标是理解为什么研究重心会从“更好的积分器”进一步转向“更好的目标映射”。

12. 常见误判

误判 1:步数少就是更先进

不对。
如果一个 1 步模型只能在非常窄的数据分布上工作,而一个 8 步模型在真实 prompt 和复杂条件下更稳,那么后者在工程上反而更先进。

误判 2:DMD 就是把 DDIM 压到一步

不对。
DMD 系列不是单纯做轨迹压缩,而是直接围绕分布匹配和学生映射来设计目标。

误判 3:Rectified Flow 只是换个名字

也不对。
它的关键在于把“路径几何形状”作为优化对象,这和单纯替换 solver 不属于同一层问题。

误判 4:求解器比较只看 FID

远远不够。
同样 FID 下,不同步数和 solver 在 CFG 稳定性、边缘锐度、条件响应、人像手部细节和特殊 prompt 敏感性上都可能差很多。

13. 一份实践化的选择建议

如果你在真实项目中选路线,先问能不能不重训:如果能,用 DPM-Solver++HeunDDIM 先榨干现有模型。再问业务是否真的需要 1 到 4 步;如果只是从 50 步降到 12 步,solver 往往已够。只有必须做交互式生成时,才优先考虑 consistency、LCM、Rectified 少步路线;明确研究一步高质量生成时,再投入 DMD2、Phased DMD 这类复杂蒸馏。每次比较都要同时报告 CFG、prompt 分布、局部视觉质量和多样性。

14. 这页的一个总判断

扩散方法对比时,最容易犯的错是把所有工作都看成“减少步数”。更准确的看法是:DDIM 改路径,EulerHeunDPM-Solver 改数值积分,Progressive DistillationConsistencyLCM 改学生模型的步数预算,DMDDMD2Phased DMD 改整体分布匹配方式,Rectified Flow / Diffusion 则改路径几何本身。只有先分清这些层次,后面的论文、实验和部署选择才会真正有条理。

15. 推荐跳转

  • Title: 扩散模型:扩散方法对照表
  • Author: Charles
  • Created at : 2025-05-01 09:00:00
  • Updated at : 2025-05-01 09:00:00
  • Link: https://charles2530.github.io/2025/05/01/ai-files-diffusion-comparison-table/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
扩散模型:扩散方法对照表