GBDQ权重与平滑激活量化 | AI生成和翻译

Home 2026.06

问题: 这里描述的量化策略是什么——针对权重的GBDQ和针对激活值的Smooth Quantization——以及每种技术是如何工作的?

回答:

这是一个生产级LLM推理量化流水线的描述,很可能来自一个在支持原生FP4的NVIDIA Blackwell(B100/B200)GPU上部署大模型的团队。让我从基本原理出发进行拆解。


为什么要量化?

Transformer在推理时的显存成本主要来自两部分:

  1. 权重——例如,一个参数为70B的BF16模型约需140GB
  2. KV缓存——随batch_size × seq_len × num_heads × head_dim × 2 (K+V)线性增长

从8位降到4位,两者都能减半。Blackwell的张量核心可以执行原生FP4矩阵乘法,因此你不仅能节省显存,还能获得计算吞吐量的提升。


第一部分:权重量化——GBDQ

GBDQ = 分组分块动态量化

含义

重建循环(关键洞见)

# 逐层重建的伪代码
for layer in model.layers:
    W_fp = layer.weight.float()          # 全精度
    W_q = quantize(W_fp, bits=4)         # 量化为INT4/FP4

    # 使用校准数据进行前向传播
    out_fp = X @ W_fp.T                  # 真实值
    out_q  = X @ dequantize(W_q).T      # 量化后的输出

    error = out_fp - out_q               # 重建误差

    # 迭代调整缩放因子/零点以最小化误差
    optimize(quantization_params, loss=MSE(error))

这本质上就是GPTQ所做的——它利用二阶海森信息(来自Fisher矩阵)来逐权重补偿误差。GBDQ很可能使用了类似或简化版本的此方法。

关键洞见在于:权重的量化误差会通过逐层累积。通过使用真实激活值进行逐层校正,可以避免简单的四舍五入量化方法导致的级联退化。


第二部分:激活值量化——Smooth Quantization

激活值的量化比权重更难,因为:

异常值问题可视化

通道:  [0,   1,   2,   3,    4,    5  ]
数值:  [0.1, 0.2, 0.1, 0.3, 89.4, 0.2]  ← 通道4是异常值

如果你将其量化为INT4(范围-8到7),缩放因子 = 89.4/7 ≈ 12.8。现在所有的小值都会被映射到约等于0。造成巨大误差。

SmoothQuant的解决方案

利用的数学恒等式:

Y = X @ W
  = (X / s) @ (W * s)    ← 将缩放因子从激活值迁移到权重

其中 s 是一个逐通道平滑因子

# 逐通道平滑因子(通过校准找到)
s = max(abs(X), dim=0) ** alpha   # alpha 通常为 0.5

X_smooth = X / s          # 激活值现在具有更小的动态范围
W_smooth = W * s          # 权重吸收了缩放因子

# 现在量化两者——激活值不再有异常值
X_q = quantize(X_smooth, bits=4)
W_q = quantize(W_smooth, bits=4)

# 前向传播:数学上等价于原始计算
Y = X_q @ W_q      X @ W

alpha=0.5 将“难度”平均分配给了激活值和权重。模型输出在数学上(量化舍入之前)与未平滑版本完全相同,因此无需重新训练。


它们如何协同工作

输入 X (FP16/BF16)
    │
    ▼
[SmoothQuant] → X_smooth (减少异常值)
    │
    ▼
[量化 X_smooth → FP4]    [GBDQ: 权重已量化为 FP4,并经过误差校正]
    │                               │
    └────────── FP4 矩阵乘法 ────────┘
                    │
                    ▼
              输出(反量化 → BF16)

在Blackwell上,FP4矩阵乘法是原生硬件操作——这正是其价值所在。你能获得约2倍的显存减少以及Blackwell FP4张量核心的吞吐量优势。


你应该了解的相关工作

技术 作用
GPTQ 基于海森矩阵误差校正的逐层权重量化——GBDQ的前身
AWQ 激活感知的权重量化——根据激活值幅度保护重要权重
SmoothQuant 此处描述的平滑量化的确切来源
LLM.int8() 混合精度:将异常值通道保留在FP16,其余部分使用INT8
QuIP# 非相干处理 + 格码本实现极致压缩

GBDQ听起来像是GPTQ + AWQ思想的内部变体,采用分块方式应用并带有动态校准。SmoothQuant是来自MIT/英伟达(2022年)的一项已发表技术。


总结

参考文献:


Back Donate