扩散模型蒸馏#
本页内容6 个部分
查看概览图
减少步数,
也减少每步前向次数
先区分教师轨迹、生成分布与 guidance 三种监督,再比较质量、NFE 和真实延迟。
步数、NFE 与实际延迟要分别记录;CFG 两个分支也可以合并成加倍 batch 的一次调用。
同一轨迹 → 同一终点
-
Teacher:构造近似相邻状态 -
Student:通过梯度学习映射 -
EMA target:平滑回归目标 -
边界 f(x, ε) = x:排除常数映射
把双分支结果学进学生
-
FLUX.1-dev:guidance distillationguidance 条件 ≠ 外部双分支 CFG -
FLUX.1-schnell:latent adversarial distillation官方示例 4 步、guidance_scale = 0 -
训练是否支持可调 guidance,要看模型
常数 student 与相同常数 target 仍能令纯一致性损失为零。边界条件与轨迹监督不能省略;有限训练也不保证收敛。
扩散推理的成本可以粗略拆成 求解器步数 × 每步网络前向次数 × 单次前向成本。这只是预算模型:不同步的计算、批处理和通信成本也会影响实际延迟。
蒸馏主要处理前两个因子。它与量化、编译、注意力 kernel 优化可以组合,但训练成本、质量和模型兼容性需要分别评估。
1. 三类问题先分开#
| 目标 | 典型方法 | 学生学习什么 |
|---|---|---|
| 减少求解步数 | Progressive Distillation、Consistency Distillation、ADD | 多步教师的映射或生成分布 |
| 减少 CFG 双分支前向 | Guidance Distillation | 把教师的引导结果内化到一次预测 |
| 降低积分难度 | Rectified Flow / reflow 等 | 改善路径与耦合;不自动等于蒸馏 |
一步采样不代表所有输入都能准确恢复原图。生成模型学习的是分布或映射,少步模型也有近似误差和训练分布限制。
2. Progressive Distillation:两步压成一步#
从一个确定性教师采样器出发,让学生的一步更新匹配教师连续两步的结果。训练完成后,把学生作为下一轮教师,逐轮减半步数。若从 步降到 步且 是 2 的幂,需要 轮。
参数化为什么重要? 对 ,若通过噪声预测还原
则 很小时,噪声预测中的误差会被放大。这不等于“预测噪声本身一定很难”:高噪声端 就已经接近噪声。
在 的约定下,定义
参数化避免了上述除以很小 的转换,论文还讨论了其他参数化和损失权重。它是少步蒸馏的重要设计选择,不是所有蒸馏都必须使用的形式,也不保证任意步数下训练稳定。
3. Consistency Models 与 LCM#
一致性函数希望把同一条 probability flow ODE 轨迹上的各个状态映射到其近数据端终点:
这里的终点不必等于某次随机前向加噪时配对的训练图 。条件独立加噪配对与 ODE 轨迹是不同概念。
LCM 把这类一致性蒸馏放到 latent space,并使用带 guidance 的教师 ODE。典型训练包含三种角色:
| 角色 | 更新方式 | 用途 |
|---|---|---|
| 预训练 diffusion teacher | 冻结 | 构造相邻时间的近似轨迹状态 |
| Student | 梯度更新 | 学习一致性映射 |
| Target student | EMA 更新、停止梯度 | 提供较平稳的回归目标 |
给定 ,教师求解器近似走到 ,然后最小化
是条件, 表示引导强度;符号和 scale 约定随实现不同。教师的一次数值更新只近似对应连续 ODE 轨迹,不是精确解。
3.1 EMA 不等于防塌缩保证#
EMA 平滑目标参数,stop-gradient 截断目标端梯度;两者是不同操作。若只要求两个输出相等,那么常数 student 与相同常数 target 仍可令损失为零。
真正需要的锚点是边界条件,例如
通常通过 skip/output 系数的参数化实现。常数函数无法对所有不同的 满足这个边界。边界条件、轨迹监督和优化过程共同起作用,不能由 EMA 单独推出收敛。
3.2 推理时发生什么?#
一次前向预测近数据端结果;多步一致性采样可再次加噪到下一个较低噪声时间,再做预测。它不等同于把普通 DDIM 的步数直接设成 1。训练和部署可以使用 student 的不同权重版本,例如 EMA 权重,须以 checkpoint 和实现为准。
LCM 已蒸馏 classifier-free guided 教师;不能笼统写成“推理时仍必须跑 CFG 两个分支”。LCM-LoRA 则把蒸馏更新参数化为低秩适配器,便于复用同一兼容基座;与其他 LoRA 的组合效果仍需验证。
参考:Consistency Models、LCM、LCM-LoRA。
4. ADD:对抗学习与教师蒸馏#
Adversarial Diffusion Distillation 将对抗目标与扩散教师提供的蒸馏信号结合,用于少步生成。对抗项鼓励生成结果接近真实图像分布;教师项为学生提供预训练生成模型的知识。
它不是“LCM 的一致性损失再加一个 GAN”。不同蒸馏方法可以共享少步目标,却使用不同监督信号、判别器和训练流程。判别器也不是无误差的感知 oracle,可能带来训练不稳定或覆盖不足。
SDXL Turbo 的官方配置不使用额外 CFG 双分支前向,但不能将这归因成“GAN 在数学上禁止 CFG”,也不能据此推断所有对抗蒸馏模型都使用同一配置。
参考:Adversarial Diffusion Distillation。
5. Guidance Distillation:把双分支合并写入模型#
普通 CFG 常用两次条件预测合成
Guidance distillation 让学生学习这一引导结果,从而减少推理时的双分支计算。若训练覆盖多个 并把它作为输入,推理时可在训练支持范围内调节;固定 guidance 蒸馏则不自动提供这种自由度。
| 模型例子 | 官方公开的信息 | 使用时注意 |
|---|---|---|
| FLUX.1-dev | Guidance distillation | guidance_scale 是模型的 guidance 条件,不能等同于普通双分支 CFG |
| FLUX.1-schnell | Latent adversarial diffusion distillation,1–4 步 | 官方示例 guidance_scale=0;不从名字或调用方式反推未公开训练细节 |
参考:FLUX.1-dev model card、FLUX.1-schnell model card。
6. 如何比较,而不是只比较步数#
- 固定基座或说明基座差异,同时记录分辨率、scheduler、guidance、精度、硬件和 batch size。
- 区分求解器步数、网络评估次数(NFE)与端到端延迟;高阶 solver 一步可能调用网络多次,CFG 也可能合并成加倍 batch 的一次调用。
- 同时评估视觉质量、提示词遵循、样本多样性和任务成功率。更少步数不自动表示更高质量。
- 检查 prediction type、时间步配置、VAE scaling 与 LoRA 基座是否匹配;不把少步 checkpoint 直接套入任意采样器。
蒸馏降低的是部署时的部分成本。是否值得采用,要连同蒸馏训练、维护和质量损失一起衡量。