Consistency Models — 把 50 步扩散压成 1 步出图
是什么
Consistency Model(CM)是一种让扩散模型从 50 步采样压到 1-2 步还能保住画质的训练方法。日常类比:原来扩散模型像一个慢工细描的画师,需要描 50 笔才出一张画;CM 训练出来的是一个速写大师,扫一眼噪声就能直接落笔成画。
具体一点。扩散模型生成图像时,从纯噪声 x_T 出发,沿一条轨迹一步步去噪,最后到达干净图像 x_0。这条轨迹有 50 个甚至 1000 个点。CM 的核心洞察是:轨迹上每一个点 x_t 都对应同一个终点 x_0,那我直接学一个函数 f(x_t, t) = x_0 不就好了? 一次调用,到家。
这个能力让”实时图像生成”从理论变成产品——画一笔出一张图,鼠标拖到哪里图就跟到哪里。
为什么重要
不理解 CM,下面这些事都没法解释:
- 为什么 2024 年能在网页上实时画图(拖鼠标即出图),而 2023 年的扩散模型还在转圈
- 为什么 SDXL Turbo / SD3 Turbo / LCM-LoRA 这些”加速版”模型能 2-4 步出图,背后都是 CM 思想
- 为什么 OpenAI 在 2023 年突然发这篇论文——他们在为后来的实时多模态铺路
- 为什么”扩散蒸馏”成了 2023-2024 年图像生成最热的子领域
核心要点
先理解一个数学对象:概率流 ODE(Probability Flow ODE)。
扩散模型的前向加噪过程是一个 SDE(随机过程),但 Song 2021 证明它对应一个确定性 ODE——给定终点的噪声 x_T,沿 ODE 倒推唯一得到一个 x_0。所以”从噪声到图像”在数学上是一条确定的曲线,只是过去要走 50 个数值积分步才能算出来。
CM 的训练目标可以拆成 三个约束:
-
自一致性(self-consistency):同一条 ODE 轨迹上的任意两点
x_t和x_t2,喂给f应当输出同一个值。换句话说,f(x_t, t) = f(x_t2, t2)。这就是论文标题的来源。 -
边界条件(boundary condition):在最小噪声层
t = epsilon,强制f(x_eps, eps) = x_eps(直接把输入吐出来)。日常类比:定下一根锚点,剩下的曲线围着它长。这一条决定了f不会退化成”输出常量”的平凡解。 -
训练信号:student 网络当前权重和它的 EMA(指数滑动平均)副本互为师徒——student 预测
x_t的去噪结果,老师预测相邻点x_t2的去噪结果,两者必须一致。这种 self-distillation 思路与 BYOL(自监督表示学习)同构。
CM 提供两种训练路径:
- Consistency Distillation(CD):用一个预训练的扩散模型(如 EDM)当老师,老师跑一步 ODE 求解器给出轨迹上的点对
(x_t, x_t2),student 学一致性。 - Consistency Training(CT):不需要老师扩散模型,直接从数据加噪生成轨迹近似,student 自训。CT 让 CM 从”加速器”升级成”独立生成模型”。
实践案例
案例 1:从一张噪声直接生成图
训练完后,推理只需一行:
x_T = torch.randn(B, 3, 64, 64) * sigma_max # 纯噪声x_0 = f(x_T, sigma_max) # 一步搞定对比原版 EDM 扩散:
x = x_Tfor sigma in schedule_50_steps: # 跑 50 次 x = denoise(x, sigma)CM 把 50 次前向降到 1 次,理论加速 50 倍。
案例 2:多步采样换更高画质
1 步质量不够时,CM 支持”加噪 + 单步预测”反复几次:
x = f(x_T, sigma_max) # 第 1 次预测for sigma in [sigma2, sigma3]: # 多走 2 步 x_noised = x + torch.randn_like(x) * sigma x = f(x_noised, sigma)CIFAR-10 上:1 步 FID 3.55,2 步 FID 2.93——多花一次前向就能逼近 50 步扩散的质量。
案例 3:下游 LCM 让 Stable Diffusion 飞起来
CM 原版在 64x64 像素图上训练。Latent Consistency Model(LCM, 2023)把同样的损失搬到 SD 的 latent 空间(4x64x64),蒸馏出来的模型 4 步就能出 512x512 文生图,比原 SD 的 50 步快了一个数量级。后续 LCM-LoRA 把这套技术做成插件,任何 SD 模型挂上就加速。
案例 4:训练损失的实际形态
CM 的核心损失(CD 模式)形如:
# x: 真实图像;sigma_i, sigma_{i+1}: 相邻噪声层x_i = x + sigma_i * noisex_i1 = teacher_ode_step(x_i, sigma_i, sigma_{i+1}) # 老师走一步 ODEloss = LPIPS(student(x_i, sigma_i), student_ema(x_i1, sigma_{i+1}).detach())注意 detach():EMA 老师不接收梯度,否则 student 会和”自己骗自己”。LPIPS(感知距离)比 L2 更接近人眼判断,论文实验里替换 L2 为 LPIPS 后 FID 直接掉一半。
踩过的坑
-
1 步质量不等于 50 步质量:CM 论文最强的 1-step CIFAR-10 FID 3.55,距离 50-step EDM 的 FID 1.97 仍有差距。要”无损”加速,至少 2-4 步起。
-
蒸馏依赖老师质量:CD 路径下,老师 EDM 求解器精度直接决定 student 上限。老师 ODE 轨迹算错了,student 学到错的轨迹一致性。
-
超参敏感:噪声调度(sigma_min / sigma_max / discretization 步数 N)、EMA 衰减率、损失类型(L2 vs LPIPS)每一项都影响显著。OpenAI 给了一组配方,照抄就好,自己调容易翻车。
-
文生图直接套 CM 不行:原版 CM 是无条件像素生成。要做文生图必须像 LCM 那样改到 latent 空间 + 加 cross-attention 条件,工程量不小。
适用 vs 不适用场景
适用:
- 实时交互生成(画笔即出图、鼠标拖动跟随)
- 需要在端侧(手机/浏览器)跑扩散模型
- 视频/3D 生成里逐帧扩散太慢的场景
- 已有强扩散老师,想加速推理
不适用:
- 追求绝对最高画质(科研刷榜)—— 50 步扩散仍领先
- 老师扩散模型本身效果差 —— student 学不到东西
- 需要精确控制中间步骤(如 ControlNet 多步注入)—— 1 步采样没有”中间”
历史小故事(可跳过)
- 2020-2021:Yang Song 等人用 score matching 把扩散模型重新表述为 SDE / ODE。这给了”轨迹”这个数学对象。
- 2022:Karras 等人 EDM 论文把扩散训练简化到极致,FID 刷新;副产品是清晰的 ODE 求解器。
- 2023 年 3 月:Song 把 EDM 当老师,提出”轨迹上每点都映射回起点”的一致性目标,CM 论文上 arXiv。
- 2023 年 10 月:清华 LCM 把 CM 搬到 SD latent 空间,让消费级显卡 4 步出 512x512 图,社区炸锅。
- 2023 年 11 月:StabilityAI 发布 SDXL Turbo,把 CM + Adversarial Distillation 结合,1 步出 1024x1024 高质量图。
学到什么
- 轨迹一致性是个简单又强大的约束:不需要判别器(GAN)、不需要复杂目标,只需”同轨迹上的点要输出同结果”
- EMA self-distillation 训稳定:student 当老师的 EMA 副本,避免老师漂移,工程上和 BYOL/MoCo 同构
- 加速即蒸馏:把多步推理蒸成单步,是 2023 年生成模型的主旋律——CM 是这一波的开山之作
- 理论 -> 算法 -> 产品:score-based diffusion (2020) -> EDM (2022) -> CM (2023) -> LCM/Turbo (2023 末) 一年一跳
- 数学家的偷懒:50 步 ODE 数值解和 1 次函数调用相比,一致性损失等价于把”每一步都正确”放松成”轨迹整体起点正确”——少了局部约束,反而能跑得更快
延伸阅读
- 论文 PDF:Consistency Models, ICML 2023(38 页,前 10 页足够理解核心)
- 官方代码:openai/consistency_models(CIFAR-10 / ImageNet 64 训练脚本)
- LCM 论文:Latent Consistency Models(CM 在 latent 空间的工业化)
- 解读视频:Yannic Kilcher — Consistency Models Explained(45 分钟逐段过论文)
- stable-diffusion —— LCM 把 CM 搬到 SD latent 空间,CM 是 SD 加速版的根
- score-based-generative-modeling —— CM 的数学起点,定义了 probability flow ODE
关联
- stable-diffusion —— SD 是 CM 蒸馏的主要对象(通过 LCM)
- gan-2014 —— GAN 也能 1 步生成,但训练不稳;CM 提供了无判别器的替代方案
- byol-2020 —— EMA self-distillation 思想 CM 与 BYOL 同源
- knowledge-distillation-2015 —— CM 是 distillation 在生成模型上的特化
反向链接
(暂无反向链接)