核心想法值得先讲一遍
DMD(分布匹配蒸馏)训练少步数学生,靠的是「目标分数」减去「学生分数」的差。麻烦在于学生分布在训练中一直在变,所以你必须额外养一个专门拟合学生当前分布的辅助扩散模型——它自己也要训,也要占显存,还要不断重拟合。
DMAD 的做法是把这件事换成分类:共享骨干上挂两个判别器头,一个分辨真实数据、一个分辨教师样本,都用学生样本做负样本。然后对学生样本施加一个线性损失。
漂亮的地方在证明:在判别器最优处,判别器 logit 与对数密度比之间有一个经典恒等式,于是这两个线性损失恰好恢复出 DMD 底层的分布匹配梯度。也就是说它没换目标,换的是估计目标的办法——从「训一个分数模型」换成「训一个分类器」。
但「省掉辅助模型」这笔账,得看表 5
原文附录 Table 5 把 DMD2 和 DMAD 拉到同批大小、同输入形状、同硬件(H200)上比:
| 设置 | 显卡 | 每次生成器更新耗时 | 显存峰值 |
|---|---|---|---|
| ImageNet-64 | 1 | 2.321 s → 0.496 s | 40.34 → 33.99 GiB |
| Wan2.1-T2V-14B | 4 | 162.9 s → 38.50 s | 131.04 → 124.56 GiB |
| MiniMax-H3-33B | 4 | 818.1 s → 233.3 s | 127.23 → 114.72 GiB |
帖文把「额外内存与计算开销」并列着说,但实测下来,这份收益的绝大部分落在时间上(因为 critic 对 generator 的更新比从 DMD2 官方的 5:1 降到 1:1),内存那一格只掉了几个百分点。14B 那一行尤其明显:时间省 4.2 倍,显存只省 6.5 GiB。
消融表比主表好看:完整模型不是每格都赢
Table 4 给了四个消融。把 COCO-10K(SDXL 四步)和 VBench 那几列拉出来:
| 设置 | COCO FID | Patch FID | CLIP | VBench 总分 | 语义分 |
|---|---|---|---|---|---|
| 去掉教师头 | 13.85 | 26.03 | 0.312 | 82.20 | 75.36 |
| 去掉真实头 | 21.37 | 23.70 | 0.325 | 84.38 | 79.59 |
| 去掉差距重加权 | 16.62 | 20.57 | 0.327 | 83.56 | 79.69 |
| 去掉线性损失 | 14.78 | 21.04 | 0.326 | 84.12 | 79.86 |
| DMAD 完整版 | 14.47 | 19.88 | 0.328 | 84.70 | 79.55 |
- 去掉教师头,SDXL 的 FID 反而更好(13.85 对 14.47)。论文自己的解释是它虽然 FID 最低,但 patch FID、CLIP 都最差,VBench 语义分掉了 4.19 点。所以是「这个指标赢了,别的输了」,不是全面胜出。
- VBench 语义分那一列,完整版是五个里最低的(79.55,低于去掉重加权的 79.69、去掉真实头的 79.59、去掉线性损失的 79.86)。差得极小(0.31 以内),但完整模型在这一格不是第一。
- 去掉真实头伤害最大:ImageNet FID 从 1.24 掉到 1.67,COCO 从 14.47 掉到 21.37。所以真正承重的是「真实数据头 + 基于差距的重加权」这一支,而这也正是它跟纯对抗蒸馏拉开距离的地方。
头条那个 1.04,也得看清楚是怎么来的
摘要写 ImageNet-64×64 一步生成 FID 1.04。但主表 Table 1 里 DMAD 自己的成绩是 1.24,1.04 是"采用 D2O-F 的投影判别器"之后拿到的,原文写得很清楚:*With a projected discriminator following D2O-F, DMAD achieves an FID of 1.04*。
也就是说:那个数字里有一部分是判别器架构的功劳,而架构是借来的。1.24 那个版本已经赢了 DMD2(含长训练变体)和教师本身(ODE 与 SDE 两种采样器),这个更干净。
同理,COCO-10K 的 14.47 是四步,一步是 16.11(CLIP 0.338),论文说这是对比模型里最好的一步 FID 和最高 CLIP。
人类偏好那两个数,分母被削掉了三分之一
2,322 次两两比较、三名标注者、每个基线每个维度 387 条 prompt 级结果(多数投票,三人全不同则记平局)。
- 对 DMD2:胜 204 / 平 129 / 负 54 → 平局率 33.3%
- 对 rCM:胜 247 / 平 95 / 负 45 → 平局率 24.5%
换个读法:三分之一的题目上,评委看不出 DMAD 和 DMD2 有区别。这不是造假——报告平局率的做法比不报要诚实——但「79.1% 的人更喜欢它」和「在有明确偏好的那部分里,79.1% 更喜欢它」是两个句子。
一句话
它把「再训一个模型来估计梯度」换成了「训练一个分类器」,这一步是真的漂亮,证明也干净。至于省下了什么:省下的是时间(三到五倍),不是显存(不到两成)。