跳转至

DiffPro: Joint Timestep and Layer-Wise Precision Optimization for Efficient Diffusion Inference

会议: ECCV2026
论文: ECCV 原文
PDF: 官方关联全文
领域: 模型压缩
关键词: 混合精度量化、动态激活量化、时间步剪枝、硬件感知优化、扩散模型

身份核验:清单 ID 3584 与缓存标题、官方条目一致。作者为 Farhana Amin、Sabiha Afroz、Kanchon Gharami、Mona Moghadampanah 和 Dimitrios S. Nikolopoulos;PDF 文件编号 2066 不是会议条目 ID。本文核心是量化与部署优化,因此归入模型压缩。

一句话总结

DiffPro 用校准数据识别易受量化影响的层和去噪步骤,再联合选择逐层精度、动态激活量化与保留时间步,在 DiT-XL/2 上将模型从 2575 MB 压至 327 MB、A30 延迟从 6.88 降至 2.55 秒/图,代价是 FID 从 2.27 升至 5.89。

研究背景与动机

扩散推理的成本有两个来源:每次去噪都要运行大模型,同时一张图需要重复运行许多次。训练后量化减少单次执行成本,时间步裁剪减少执行次数,但把两者独立优化会漏掉一个重要现象:量化后的模型不再具有全精度模型原来的误差分布,原本可以跳过的步骤可能变得重要。

这一问题在 DiT 中尤为明显。不同层的注意力、MLP 和嵌入操作对低精度的容忍度不同,同一层的激活范围又会随去噪进度变化。固定量化尺度可能在某些时间步截断异常值;统一位宽则可能把精度浪费在稳定层,同时损伤少数敏感层。仅凭 BitOps 选择方案也不够,因为真实 GPU 延迟还受张量形状、内核分派与访存影响。

DiffPro 因而不是设计新的生成骨干,而是为已有模型寻找部署方案。核心 idea:同时考虑“哪些层值得保留精度”和“量化后哪些步骤必须保留”,用师生输出差异评估质量风险,并用实测硬件成本决定预算该花在哪里。

方法详解

整体框架

输入是预训练去噪器、校准样本以及延迟和内存预算,输出是固定的逐层权重位宽、分组大小和保留时间步集合。 权重候选精度为 4、8、16 bit,分组大小候选为 32、64、128、192、288;这些是部署搜索变量,不是重新训练生成模型的架构参数。

流程先以全精度教师建立敏感度画像,产生位宽候选,再启用动态激活量化并评估哪些步骤能够删除。 最后把降低位宽与删除步骤放进同一个预算决策过程,而不是简单串接两个独立压缩器。 下面将论文的五个阶段合并为四个设计:前两个阶段共同负责生成逐层精度方案。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    Input["预训练模型、校准数据<br/>延迟与内存预算"] --> Precision["敏感度驱动的<br/>精度分配"]
    Precision --> DAQ["动态激活量化"]
    DAQ --> Steps["漂移引导的<br/>时间步选择"]
    Steps --> Joint["硬件预算下的<br/>联合搜索"]
    Joint --> Output["固定部署方案<br/>量化去噪与 VAE 解码"]

关键设计

1. 敏感度驱动的精度分配:先找到不能随便压缩的层

校准阶段记录全精度教师的噪声预测与逐层激活统计。 PCA 统计包括解释 95% 方差所需的主成分数、特征维数以及剩余方差;它们刻画激活结构的复杂程度。 论文再把 PCA 信息与归一化激活平方能量结合,构成曲率与结构脆弱性信号。这里的曲率是近似信号,不是直接求完整生成质量目标的精确 Hessian。

单靠结构信号仍无法知道某层在整个去噪过程里是否稳定,因此作者还加入跨时间阶段的漂移、扫描位宽和分组大小得到的敏感度拐点,以及经 Jacobian 能量放大的量化舍入噪声估计。 四种信号分别记为结构脆弱性、时间漂移、拐点敏感度和量化噪声,融合公式为原式 (3):

\[ S^*_\ell = 0.4 S^x_\ell + 0.2 S^d_\ell + 0.25 S^k_\ell + 0.15 S^n_\ell. \]

权重并非纯粹手工猜测:作者逐次仅把一个层量化到 W4,其余层保持 FP16,以此获得 113 层的质量退化测量,再用普通最小二乘拟合。 五折交叉验证的拟合结果为 \(R^2=0.76\pm0.04\)。但论文没有在可读正文中完整展开漂移和拐点信号的所有计算细节,因此不能把这一个融合式当作完整复现配方。

由此得到的排序用于风险分层与背包式精度分配:稳定层可以用 W4 和较粗分组,敏感层优先升级 W8 或保留 FP16。 随后用 GPTQ 逐组量化,并通过进化搜索修改位宽与组大小;GPTQ 使用激活构造的二阶近似和 Cholesky 分解来处理权重误差。 候选先用少量批次筛选,再对优胜者充分评估,避免每个候选都计算完整 FID。 图 4 报告的最终配置含 77 个 W4 层、14 个 W8 层、22 个 FP16 层,说明这里的 Mixed 不能等同于全模型 W4。

2. 动态激活量化:让尺度跟随当前样本和去噪时刻

选好权重精度并不代表激活已经安全。相同层在不同时间步可能具有完全不同的数值范围,静态尺度会在“分辨率不够”与“异常值被截断”之间反复出错。 DAQ 在每个样本、时间步和通道组上更新尺度;先按 99.9 百分位阈值对称裁剪,再根据裁剪后的组内最大绝对值确定量化范围。 99.9 来自校准集上对 99.0 至 99.99 的扫描,不是针对所有模型的理论常数。

论文同时使用早期、中期、晚期阶段分箱处理时间变化,并以量化学生参与校准,避免只拟合教师的激活分布。 前向 pre-hook 在分组线性层前更新尺度,覆盖 Q、K、V、注意力输出投影和两个 MLP 层;LayerNorm 与残差路径维持较高精度。 实现描述中的计算路径是 INT8 乘 INT8、累加到 INT32。因此,W4 权重存储不能直接解读为已经使用原生 INT4 算术内核。 表 3 报告 DAQ 每步增加 0.24 ms,其中百分位计算 0.12 ms、尺度计算 0.04 ms、重新量化 0.08 ms;总开销为报告设置的 3.6%。

3. 漂移引导的时间步选择:删除低风险步骤,但保护最后的精修

这里的“漂移”不是相邻时间步的图像变化,而是在同一带噪输入、时间步和条件下,量化学生与全精度教师输出的差异。 下式用原式 (4) 的噪声预测记法表示筛选损失;固定时间步后进行条件期望,就得到原式 (7) 的逐步漂移概念。

\[ \mathcal{L}_{\mathrm{drift}} = \mathbb{E}_{(x_t,t,y)}\left\|\epsilon_{\mathrm{student}}(x_t,t,y)-\epsilon_{\mathrm{teacher}}(x_t,t,y)\right\|_2^2. \]

选择器首先保留去噪执行顺序中最后 20% 的精修步骤,然后在剩余步骤里按漂移从高到低补足数量。 高漂移表示学生已经偏离教师,不能轻易进一步删掉该处计算;低漂移步骤则更适合裁剪。 尾段即使漂移低仍受到保护,因为末期误差更容易直接反映为最终图像中的可见缺陷。

以 DiT 的 1000 步保留 500 步为例,先保留最后 200 步,再从非尾段选出 300 步,因此受保护尾段占最终日程的 40%。 SDXL 的 100 步保留 50 步同理,保护 20 步,再补 30 步。 这里遵循正文对执行末段的定义;缓存的式 (8) 存在符号缺失,不能据其残缺不等式自行推断原始扩散时间索引方向。

4. 硬件预算下的联合搜索:比较下一次降位宽与删步的收益

算法 2 从保留全部步骤和最高精度的方案开始,维护按漂移排列的可删步骤队列,以及按节省成本相对于预计质量损失排序的降位宽候选堆。 每轮比较“删除当前步骤”与“采用最佳降位宽动作”,选择单位质量损失能够节省更多成本的动作,再更新延迟和内存估计,直到满足预算。 这与逐层方案细化的进化搜索属于不同层次,不能把两者混称为同一个初始化过程。

延迟依据同步 CUDA events 的实测内核时间,而非直接把位数或 FLOPs 换算成秒。 候选仍用师生 MSE 做质量代理,正文还描述了延迟和 BitOps 违规惩罚;因此“硬件感知”不等于整个搜索完全没有代理指标。 缓存式 (10) 的乘加符号抽取不完整,这里不擅自重建评分函数。原文另给出两个惩罚权重均为 0.5,但准确实现仍需核对原 PDF 或代码。 最后进行轻量偏置与 LayerNorm 校正,并对脆弱层做自适应舍入;推理时固定权重分配和时间步日程,只有激活尺度随当前输入动态计算。

损失函数 / 训练策略

本文属于训练后优化,不重新训练扩散骨干,但不是零成本处理:需要教师校准、量化参数处理、敏感度测量和方案搜索。 校准使用 512 个样本,一次规划约需 53 分钟,FLUX 上为 108 分钟;论文估计约生成 1200 张图后摊销规划成本。 这些规划耗时不计入部署后的单图延迟,但在小批量或频繁更换模型的场景中必须计入总成本。

实验关键数据

主实验

DiT-XL/2 在 ImageNet 256×256 上做类别条件生成,FID 使用 50K 张图、CFG=1.5,DDIM 从 1000 步保留 500 步。 SDXL U-Net 在 COCO 2014 1024×1024 上使用 30K 条提示词与 30K 张生成图、CFG=3.0,从 100 步保留 50 步。 主要实现使用 NVIDIA A30 24 GB、CUDA 12.1.1、PyTorch 2.1.2;表 4 还报告 A100 延迟。 延迟以 batch size 1、同步 CUDA events、100 次运行均值统计;能耗用 NVML 测量并扣除空闲功耗,同样平均 100 次。

下表摘录原表 4;大小单位为 MB,延迟为 A30 上的秒/图,FID 越低越好。两种架构的 FID 不能跨数据集直接比较。

架构 方法 W/A FID 大小 (MB) A30 (秒/图)
DiT-XL/2 全精度 16/16 2.27 2575 6.88
DiT-XL/2 Q-DiT 4/8 6.40 348 3.21
DiT-XL/2 TQ-DiT 8/8 4.91 392 3.60
DiT-XL/2 Q-DiT+Uni.500 4/8 13.82 348 1.85
DiT-XL/2 DiffPro W8A8 8/8 5.12 392 2.68
DiT-XL/2 DiffPro Mixed 5.89 327 2.55
SDXL 全精度 16/16 24.50 12877 9.84
SDXL GPTQ 4/8 29.47 3568 6.54
SDXL TMPQ-DM Mixed 27.91 2854 3.12
SDXL DiffPro Mixed 26.50 2317 2.35

DiT 的约 7.9 倍压缩是模型大小比,不是峰值运行内存下降倍数;约 2.7 倍加速来自 6.88/2.55。 与全精度相比 FID 恶化 3.62,不能称为无损压缩。Q-DiT+Uni.500 更快但质量明显更差,TQ-DiT 则质量更好但更慢。

消融实验

下表摘录原表 7 的 DiT-XL/2 分组,实验协议沿用主实验。Uni.50% 保留 DiffPro 位宽和 DAQ,只把漂移选步换成均匀删步。

配置 FID 延迟 (秒/图) 能耗 (J) 大小 (MB)
全精度 2.27 6.88 660.94 2575.42
Uniform W8/G32 8.68 2.72 389.61 429.95
No DAQ 7.09 2.64 359.64 327.24
No Prune 6.22 2.65 361.51 327.24
Uni.50% 8.41 2.55 358.72 327.24
Sequential 6.74 2.55 361.28 327.24
DiffPro 5.89 2.55 360.05 327.24

关键发现

  • 匹配位宽、DAQ、保留步数的 Uni.50% 对照,FID 差值为 2.52;13.82 与 5.89 的差值 7.93 则包含不同量化方案,不能全部归功于选步。
  • Sequential 与完整方法延迟同为 2.55 秒/图,FID 从 6.74 降至 5.89,联合搜索贡献为 0.85。No DAQ 的 FID 为 7.09,但其能耗 359.64 J 略低于完整方法,完整方案不是所有指标都最优。
  • 原表 2 仅比较精度方案、不含 DAQ 或删步:最佳单信号的相关性/FID 为 0.61/10.41,融合信号为 0.81/8.86。不能把 8.86 当作完整 DiffPro 的结果。
  • SDXL 在原表 7 中由 675.92 J 降至 369.24 J,约节能 45%;FID 由 24.50 升至 26.50。原表 4 的整数大小与表 7 的小数大小属于不同报告精度。

亮点与洞察

  • 量化会改变时间步价值。使用量化学生与教师之间的输出误差选步,使调度真正针对将要部署的模型,而非仅针对原始教师。
  • 尾段保护补充了误差代理的盲点。一个步骤当前漂移小,不代表删除它对最终细节没有影响,因此需要结构性保护规则。
  • 真实收益来自层、时间、硬件三者的交互。对部署系统而言,位宽和步数都是资源分配动作,适合在同一预算下比较,而不是分别最优后直接组合。

局限与展望

  • 质量损失仍然明显:DiT FID 从 2.27 升至 5.89。作者提出更强的逐块量化、视频扩散支持和轻量微调作为后续方向,本文并未验证视频生成收益。
  • 校准和搜索成本不小。53 分钟的一次性规划与约 1200 张图的摊销估计依赖具体工作负载,不能推广为所有设备、批量和提示分布的保证。
  • 本文阅读中发现复现口径仍需核对:图 4 描述全 W4 种子,阶段 2 文字描述分层种子,算法 2 又从最高精度初始化;应区分实验图示和两个搜索层次,并查实现确认。
  • 表 7 的 No Prune 为 2.65 秒/图,完整方案为 2.55 秒/图,尽管正文称删去一半步骤。该表不足以支持“步数减半必然延迟减半”;需进一步核实消融的实际日程与计时范围。
  • 缓存的式 (6)、(8)、(10) 不完整,本笔记不据残缺文本补造精确量化分母、时间索引不等式或联合评分函数。FLUX/PixArt 的原表 6 提供质量迁移证据,但不能据此认定获得相同加速倍数。

相关工作与启发

  • 与 GPTQ 相比:DiffPro 复用逐层二阶近似量化作为工具,额外解决扩散中的时间变化、精度分配与日程决策;不是重新发明权重量化器。
  • 与 Q-DiT / PTQ4DiT 相比:本文在量化之外纳入选步,并通过学生感知的 DAQ 处理激活变化。比较时必须同时看步数、精度和端到端延迟。
  • 与 TMPQ-DM 相比:两者都涉及步数与精度的联合选择,本文强调复合敏感度和实测内核成本;其贡献不宜表述为首次想到联合优化。
  • 对后续研究的启发:值得把搜索质量代理与最终 FID 的一致性、短日程采样器上的收益和跨硬件迁移成本作为独立验证目标,而不只继续降低名义位宽。

评分

  • 新颖性: 4/5。把复合敏感度、学生感知 DAQ 与硬件预算下的选步联合起来,但各基础组件已有先例。
  • 实验充分度: 4/5。包含双骨干主实验、匹配方案消融与新架构扩展,部分消融计时及初始化细节仍需核查。
  • 写作质量: 3/5。整体流程可理解,但正文、算法、图示的初始化口径及缓存公式完整性影响复现清晰度。
  • 价值: 4/5。对大量重复生成的压缩部署有参考价值,小规模使用则要认真计入校准与搜索成本。