自我图书馆SELF LIBRARY持续整理中

SHELF 02 / PASSIONSR · CASE STUDY

PassionSR
把单步扩散超分压进低比特。

基于 CVPR 2025 论文与官方代码,拆解 PassionSR 如何为 One-Step Diffusion(单步扩散,简称 OSD)图像超分辨率建立 Post-Training Quantization(后训练量化,简称 PTQ)路径。

W8A8 权重 / 激活W6A6 低比特配置500 校准图像

01 / WHY THIS WORK APPEARED

单步扩散已经减少了采样次数,
却仍然不等于可部署。

扩散式图像超分辨率通常依赖多步去噪来获得较高视觉质量。One-Step Diffusion 将这条采样链压缩为一次前向,但 U-Net、Variational Autoencoder(变分自编码器,简称 VAE)、中间激活和高分辨率图像的内存开销依然很高。PassionSR 在 2025 年关注的核心问题正是:能否在不重新训练基础模型的前提下,用低比特 PTQ 让 OSD 超分更接近设备端部署条件。

它的核心优势在于把量化问题从“固定截断”变成“可校准的分布调整”。

论文将 OSD 超分模型简化为 U-Net 与 VAE 两个核心组件,移除 CLIPEncoder;随后通过可学习的量化边界与等价变换调整激活和权重的数值范围,并使用分布式校准稳定量化参数。论文报告 W8A8 与 W6A6 可获得与全精度模型可比的视觉结果,这一结论对应其给定的模型、校准数据和评测协议,迁移到其他任务仍需重新验证。

A

PTQ 的工程位置

Post-Training Quantization 在基础模型训练完成后处理权重与激活,避免完整再训练的成本。它特别适合已有权重、但部署资源紧张的场景。

B

扩散超分的敏感性

超分辨率既要恢复低频结构,也要恢复高频纹理。激活离群值、通道尺度差异和注意力计算都可能让简单 MinMax 量化留下可见伪影。

C

低位宽不是免费性能

较低位宽会降低存储和带宽压力,但真实速度还依赖目标设备是否有匹配 kernel、量化算子是否被后端接收,以及是否引入额外的格式转换。

02 / THREE CORE IDEAS

边界、等价变换、
分布式校准。

PassionSR 的方法由三个相互配合的部分组成:先让量化范围可学习,再在保持浮点运算语义的前提下重整分布,最后以校准策略优化这些参数。它们分别对应“量化范围怎么选”“数值分布怎么变得更友好”“如何让优化稳定收敛”。

01 / LBQ

Learnable Boundary Quantizer

Learnable Boundary Quantizer(可学习边界量化器,简称 LBQ)将截断范围与量化步长纳入校准,使离群值和有效动态范围可以围绕重建误差调整,而非完全由一次统计确定。

02 / LET

Learnable Equivalent Transformation

Learnable Equivalent Transformation(可学习等价变换,简称 LET)通过互逆缩放与偏移重参数化输入和权重,保持原浮点层的功能等价,同时降低量化器面对的通道间尺度差异。

03 / ATTENTION

注意力路径的尺度

代码中的量化注意力模块分别维护 Query–Key 与 Value–Weight 路径的 scale factor。这样可以在不破坏相关性计算关系的前提下,改善量化前的数值条件。

04 / DQC

Distributed Quantization Calibration

Distributed Quantization Calibration(分布式量化校准,简称 DQC)分阶段处理量化参数的优化,目标是降低联合校准的不稳定性,并在有限校准预算下更快收敛。

x′ = (x − offset) / s,W′ = W · s官方量化层对卷积、线性和注意力路径维护可学习 scale factor 与 offset。互逆变换在浮点语义上保持等价,而量化器看到的是重新平衡后的动态范围。

03 / CODE PATH

从官方入口,
追踪一次校准流程。

官方仓库以 ptq_quantize_single.py 为入口。当前实现读取 Stable Diffusion 配置后拆出 VAE 与 U-Net,加载 OSEDiff 的 LoRA 权重和空文本条件;随后收集低分辨率图像、latent、时间步、U-Net 输出、重建 latent 和高分辨率真值作为校准数据,再将卷积、线性层和注意力模块替换为量化版本。

LOAD

SD 2.1 + OSEDiff

加载基础配置、权重、LoRA 与调度器

→
COLLECT

Calibration Set

收集 LR、latent、条件、U-Net 输出与 HR 真值

→
WRAP

Quantized Layers

替换卷积、线性和注意力内的量化路径

→
MEASURE

Quality + Runtime

用真实 SR 数据与目标设备核验质量和性能

CUDA_VISIBLE_DEVICES="0" python ptq_quantize_single.py --config_file scripts/PTQ/config/UV/saw_sep/saw_U_W8A8_V_W8A8.yaml

这是官方 README 提供的 W8A8 入口示例。配置文件、CUDA 版本、权重路径、校准数据和目标设备都属于实验条件,不能在其他环境中直接视为默认配置。

04 / REPRODUCTION & DEPLOYMENT

读懂论文后,
仍需在自己的任务上重新做验证。

PTQ 的结果强依赖基座模型、输入图像分布、校准集、位宽、量化粒度和硬件后端。论文中的 W8A8 与 W6A6 是清晰的研究设置,而部署过程应将图像质量、端到端延迟、峰值显存和实际算子覆盖放在同一张验证表里。

A

校准集覆盖

校准数据需要包含目标业务的纹理、亮度、尺寸和退化类型。只用少量“干净”的样本,往往会低估线上量化误差。

B

图像质量对比

同时比较重建指标、局部纹理、边缘与真实场景视觉结果。单一均值指标无法覆盖所有感知退化。

C

目标后端测量

将 PyTorch 的低比特模拟结果与部署引擎的实际执行区分开来。只有目标 backend 落地对应低比特 kernel,才会出现预期的延迟与能耗收益。

READING LIST / ORIGINAL SOURCES
PassionSR: Post-Training Quantization with Adaptive Scale in One-Step Diffusion based Image Super-Resolution · CVPR 2025↗PassionSR 官方代码库↗PassionSR arXiv 预印本↗OSEDiff: One-Step Diffusion for Real-World Image Super-Resolution↗

技术结论以原始论文、官方仓库和对应版本文档为准。工程解释用于帮助理解,不替代许可证、支持矩阵与目标设备上的实验验证。