多数后训练量化方法把线性层看成一个完整的数值矩阵。SegQuant 还会追问:输入从哪里来,输出将流向哪里。它从计算图中自动识别语义分段,分别量化各个区域,并通过硬件原生的双尺度执行路径保留正负激活的不对称性。
1. 为什么只看张量数值还不够
扩散模型会在多个去噪时间步中反复调用同一主干网络,因此单层误差也可能不断传播。DiT 类模型还有一层特殊困难:chunk、split、concat、reshape 等操作表明,一个物理线性层中可能融合了多种计算语义。
例如,AdaNorm 的线性层会同时产生注意力与 MLP 分支所需的 shift、scale 和 gate 参数。不同部分的数值范围、用途与量化敏感度并不相同。若整个矩阵共用一套量化配置,大范围区域会主导量化器,让较小但更敏感的区域失去分辨率,这就是语义分段之间的量化干扰。
这一写法没有表达 \(X\) 与 \(W\) 在计算图中的语义。SegQuant 先恢复结构,再决定如何量化。
2. SegLinear:从计算图拓扑识别语义
SegLinear 使用 torch.fx 完成符号追踪和拓扑模式匹配。它不依赖具体模型名称,而是在线性算子附近寻找两类可复用结构。
输出分段量化
若线性层输出随后被 chunk 或 split 拆分,说明不同输出区间会流向不同分支。SegLinear 沿输出维度拆分权重矩阵,再分别量化:
输入分段量化
若输入由 concat 或改变结构的 reshape 产生,不同输入通道来自不同计算路径。SegLinear 同时划分输入和权重矩阵对应的行:
每个分段的宽度直接从计算图元数据中推断。随后,各分段可以独立使用 SmoothQuant、GPTQ、SVDQuant 等优化器和校准参数。这样,结构发现与数值优化便不再绑定。
3. DualScale:不改变位宽,保留正负极性
SiLU 与 GELU 会保留大量绝对值较小的负激活,同时产生范围宽得多的正激活。若正负数共用一个步长,正向离群值会主导量化尺度,狭窄负区间只能分到很少的量化格点。论文发现,这些负激活恰好承载扩散生成中的高频纹理与细节。
DualScale 分别为负区间和非负区间设置步长:
令 \(X_+=\max(X,0)\),\(X_-=\min(X,0)\),线性结果可以写为
虽然公式中出现两次矩阵乘法,实现上会把它们合并为一次 BatchedGEMM,并在融合 epilogue 中完成缩放与求和。因此,DualScale 继续使用标准定长整数算术,无需定制数值格式,也不额外启动执行内核。
4. 两个机制为什么互补
SegLinear 解决结构干扰
不同语义分支不再相互决定量化参数。
DualScale 解决极性干扰
宽正区间不再吞噬窄负区间的数值分辨率。
不绑定优化器
两个机制都封装在已有 PTQ 优化器外部,而不是再造一套模型专用方法。
兼容编译器
静态图检测与标准低比特 GEMM 能够接入现有部署工具链。
5. 实验证据
论文覆盖 SD3.5、FLUX.1-dev、SDXL,包含 DiT 与 UNet 两类骨干、INT8 与 INT4 配置,以及 COCO、MJHQ-30K、DCI 三个图像集。下表在 SD3.5 W8A8 设置下分别加入两个核心模块。
| 方法 | FID ↓ | Image Reward ↑ | LPIPS ↓ | PSNR ↑ | SSIM ↑ |
|---|---|---|---|---|---|
| 基线 | 23.35 | 0.877 | 0.419 | 11.93 | 0.536 |
| + SegLinear | 23.36 | 0.899 | 0.395 | 12.03 | 0.554 |
| + DualScale | 22.61 | 0.909 | 0.401 | 12.14 | 0.551 |
| + SegLinear + DualScale | 22.54 | 0.952 | 0.377 | 12.50 | 0.567 |
逐层测量进一步解释了质量提升的来源。采用 GPTQ 时,DiT.11.norm1 context 的 Frobenius 量化误差在语义划分后从 \(3.0176\) 降至 \(1.7637\)。同样趋势出现在 SmoothQuant、SVDQuant 和 GPTQ 上,说明收益来自图结构划分,而不是某个特定优化器。
| 配置 | 峰值显存 (GiB) | 主干大小 (GiB) | 单步时延 (ms) |
|---|---|---|---|
| FP16 | 18.63 | 3.88 | 317.18 |
| INT8 基线 | 16.73 | 2.00 | 278.86 |
| SegQuant-8 | 16.72 | 2.02 | 287.85 |
| INT4 基线 | 16.06 | 1.29 | 209.78 |
| SegQuant-4 | 16.12 | 1.42 | 212.87 |
6. 更广的研究方向
SegQuant 把模型结构视为部署信息。Shiva-DiT 从另一个角度延续这一方向,通过基于残差的可微 top-k 选择,学习哪些 Transformer 计算应当保留。两项工作都强调结构感知效率,而不是对每个参数、激活或 token 采用完全相同的近似。