量化:让大模型跑在更小的硬件上

大模型量化是将高精度浮点数(FP16/BF16)转换为低精度整数(INT8/INT4)的技术,能大幅减少模型内存占用和推理计算量。2026 年,INT4 量化已成为大模型部署的标配。本文深入解析量化背后的数学原理。

一、量化的数学基础

1.1 均匀量化

量化的核心是将浮点数映射到有限离散值:

$$q = \text{round}\left(\frac{x}{s}\right) + z$$

其中:

  • $x$:原始浮点值
  • $q$:量化后的整数值
  • $s$:缩放因子(scale)
  • $z$:零点(zero point)

反量化(恢复浮点值):

$$\hat{x} = s \cdot (q - z)$$

1.2 对称量化 vs 非对称量化

对称量化(Symmetric):$z = 0$,零点固定为 0

$$s = \frac{\max(|x|)}{2^{b-1} - 1}$$

适用于权重(均值为 0 的正态分布)。

非对称量化(Asymmetric):$z \neq 0$

$$s = \frac{x_{max} - x_{min}}{2^b - 1}$$ $$z = \text{round}\left(-\frac{x_{min}}{s}\right)$$

适用于激活值(可能偏移,如 ReLU 后全为正)。

对称量化 (INT8):
  浮点范围 [-127, 127] → 整数 [-127, 127]
  x = 0 → q = 0
  s = max(|x|) / 127

非对称量化 (INT8):
  浮点范围 [xmin, xmax] → 整数 [0, 255]
  x = 0 → q = z (可能不为 0)
  s = (xmax - xmin) / 255

1.3 量化误差

量化引入的误差:

$$\epsilon = x - \hat{x} = x - s \cdot \left(\text{round}\left(\frac{x}{s}\right) + z\right)$$

对于均匀分布的 $x$,量化误差的期望:

$$E[\epsilon^2] = \frac{s^2}{12}$$

误差与缩放因子 $s$ 的平方成正比。这意味着 $s$ 越小(量化范围越窄),误差越小。

二、Per-Tensor vs Per-Channel vs Per-Group

2.1 粒度对比

Per-Tensor (整个张量一个 scale):
  W = [[0.1, 2.5], [0.01, 3.8]]  →  s = 3.8/7 = 0.54
  问题: 0.01 和 3.8 用同一个 scale, 小值精度丢失严重

Per-Channel (每行/列一个 scale):
  W_row0: s = 2.5/7 = 0.36
  W_row1: s = 3.8/7 = 0.54
  更精确, 但需要存储多个 scale

Per-Group (每 group 个元素一个 scale):
  group_size = 128
  每 128 个连续元素使用独立的 scale
  最精确, 但 scale 存储开销增大

2.2 存储开销分析

方案 Scale 数量 Scale 存储开销 精度
Per-Tensor 1 可忽略 最差
Per-Channel 输出通道数 ~0.1%
Per-Group (g=128) 参数量/128 ~2%

2026 年的主流方案是 Per-Group(group_size=128),兼顾精度和开销。

三、INT8 量化

3.1 Weight-Only 量化

最简单的方案:只量化权重,激活值保持 FP16。

$$Y = X \cdot W \approx X \cdot \text{dequant}(W_{int8})$$

优势:实现简单,不需要校准数据 劣势:只减少权重大小,不加速计算(仍需 FP16 矩阵乘法)

3.2 Weight-Activation 联合量化

同时量化权重和激活值,使用 INT8 矩阵乘法:

$$Y_{int8} = X_{int8} \cdot W_{int8}$$

需要校准数据来确定激活值的量化范围。

3.3 校准方法

MinMax 校准:取激活值的最大最小值

$$s = \frac{\max(|X_{calib}|)}{127}$$

百分位校准:取 99.9% 分位数,忽略极端值

均方误差校准:搜索最优 scale 使量化误差最小

$$s^* = \arg\min_s \text{MSE}(X, \text{dequant}(\text{quant}(X, s)))$$

四、GPTQ:基于二阶信息的量化

4.1 核心思想

GPTQ(Generalized Post-Training Quantization)利用二阶信息(Hessian 矩阵)来指导量化顺序和误差补偿。

4.2 问题形式化

目标:量化权重 $W$ 使得 $\arg\min_{W_q} |XW - XW_q|_2^2$

逐列量化:依次量化 $W$ 的每一列,量化第 $j$ 列后更新剩余列以补偿误差。

4.3 算法推导

定义 Hessian 矩阵 $H = X^T X$。量化第 $j$ 列 $w_j$ 时:

$$\delta = \text{quant}(w_j) - w_j$$

误差为 $X \delta$,需要更新剩余权重来补偿:

$$w_{remaining} \leftarrow w_{remaining} - \delta \cdot \frac{H_{j,remaining}}{H_{j,j}}$$

完整算法:

def gptq_quantize(W, X, group_size=128):
    H = X.T @ X  # Hessian
    H += 1e-5 * torch.diag(torch.diag(H))  # 正则化
    
    for i in range(0, W.shape[1], group_size):
        block = W[:, i:i+group_size]
        H_block = H[i:i+group_size, i:i+group_size]
        
        for j in range(block.shape[1]):
            # 量化第 j 列
            q = quantize_column(block[:, j])
            delta = q - block[:, j]
            
            # 更新剩余列补偿误差
            block[:, j+1:] -= delta.unsqueeze(1) * H_block[j, j+1:] / H_block[j, j]
            block[:, j] = q
    
    return W

4.4 GPTQ 性能

模型 量化方案 MMLU HumanEval 压缩比
Llama 3-70B FP16 82.1 71.3 1x
Llama 3-70B GPTQ INT8 81.8 70.9 2x
Llama 3-70B GPTQ INT4 80.5 68.7 4x
Llama 3-70B GPTQ INT3 76.2 62.1 5.3x

INT4 是质量-效率的最佳平衡点,质量损失通常 <2%。

五、AWQ:激活感知权重量化

5.1 核心洞察

AWQ(Activation-aware Weight Quantization)的关键发现:不是所有权重都同样重要——保护"重要"权重可以显著提升量化质量

如何判断权重的重要性?通过对应的激活值大小:

$$\text{importance}(w_{ij}) \propto |w_{ij}| \cdot |x_j|$$

激活值大的通道对应的权重更重要,因为它们对输出的贡献更大。

5.2 等效变换

AWQ 通过缩放变换来保护重要权重:

$$W’ = W \cdot \text{diag}(s), \quad X’ = X / \text{diag}(s)$$

其中 $s$ 是每通道的缩放因子。变换后 $XW = X’ W’$(数学等价),但 $W’$ 的量化误差更小。

5.3 最优缩放因子搜索

$$s^* = \arg\min_s \text{MSE}\left(XW, \text{dequant}(\text{quant}(W \cdot s)) / s\right)$$

网格搜索 $s \in [0, 1]$,找到最优缩放因子。

5.4 AWQ vs GPTQ

维度 GPTQ AWQ
需要校准数据
计算复杂度 高 (需要 Hessian) 低 (网格搜索)
量化质量 优 (略好于 GPTQ)
推理速度 快 (优化了量化推理 kernel)
实现复杂度

2026 年实践中,AWQ 因其简单性和优秀的推理性能,成为 INT4 量化的首选方案。

六、INT4 量化的工程实践

6.1 混合精度策略

并非所有层都适合 INT4 量化。混合精度策略:

层类型 推荐精度 理由
Embedding FP16 量化会损害词嵌入质量
Attention QKV INT8 敏感度较高
Attention Output INT8 敏感度较高
FFN (MoE 专家) INT4 参数占比大,量化收益最高
LayerNorm FP16 太敏感
LM Head FP16 直接影响输出分布

6.2 量化推理加速

INT4 推理的关键是利用 GPU 的 INT4 Tensor Core:

FP16 推理:
  加载 W (FP16) → 矩阵乘法 (FP16 Tensor Core)

INT4 推理:
  加载 W (INT4) → 反量化 (INT4→INT8/FP16) → 矩阵乘法
  加载 W (INT4) → INT4 矩阵乘法 (新硬件支持)

2026 年的 GPU(H100/B200)原生支持 INT4 矩阵乘法,无需反量化。

6.3 KV Cache 量化

除了权重量化,KV Cache 也可以量化:

class QuantizedKVCache:
    def __init__(self, num_layers, max_seq_len, hidden_dim, bits=4):
        self.bits = bits
        # INT4 存储: 每 2 个元素共用 1 byte
        self.k_cache = torch.zeros(num_layers, max_seq_len, hidden_dim // 2, dtype=torch.uint8)
        self.v_cache = torch.zeros_like(self.k_cache)
        self.scales = torch.zeros(num_layers, max_seq_len, hidden_dim // group_size)
    
    def store(self, layer, pos, k, v):
        k_int4, k_scale = quantize_int4(k)
        v_int4, v_scale = quantize_int4(v)
        self.k_cache[layer, pos] = pack_int4(k_int4)
        self.scales[layer, pos] = k_scale
    
    def load(self, layer, pos):
        k_int4 = unpack_int4(self.k_cache[layer, pos])
        return dequantize_int4(k_int4, self.scales[layer, pos])

七、性能基准

7.1 量化对模型性能的影响

量化方案 Llama 4-70B MMLU DeepSeek V4 (45B active) MMLU 显存占用
FP16 (基准) 88.5 92.1 100%
INT8 (Per-Channel) 88.2 91.9 50%
INT4 (GPTQ) 86.8 91.2 25%
INT4 (AWQ) 87.3 91.5 25%
INT3 (AWQ) 83.5 88.7 19%

7.2 推理速度对比

在 A100 80GB 上:

方案 模型加载 首 Token 生成速度
FP16 140 GB → 不支持 - -
INT8 70 GB 1.2s 45 tok/s
INT4 (AWQ) 35 GB 0.6s 72 tok/s
INT4 + 投机解码 35 GB 0.6s 180 tok/s

INT4 量化让 70B 模型可以在单张 A100 上运行,并实现 3-4x 加速。

八、前沿方向

8.1 1-bit 量化(BitNet)

BitNet 将权重量化到 +1/-1(1-bit),极端压缩:

$$Y = X \cdot \text{sign}(W) \cdot \gamma$$

其中 $\gamma$ 是缩放因子。BitNet b1.58 使用三值 {-1, 0, +1},在 3B 模型上达到了 FP16 的质量水平。

8.2 浮点量化(FP4/FP8)

与整数量化不同,浮点量化保留指数位,动态范围更大:

  • FP8 (E4M3):4位指数 + 3位尾数,精度高
  • FP4 (E2M1):2位指数 + 1位尾数,极限压缩

2026 年 Blackwell GPU 原生支持 FP4 计算,浮点量化正在取代整数量化。

8.3 量化感知训练(QAT)

后训练量化(PTQ)在不修改训练过程的情况下量化。QAT 在训练中模拟量化误差:

$$\mathcal{L}{QAT} = \mathcal{L}{task}(f_{\theta_q}(x), y)$$

其中 $\theta_q$ 是量化后的权重,梯度通过 Straight-Through Estimator 传递。QAT 可以在 INT4 上达到接近 FP16 的质量。

九、总结

大模型量化是连接"大模型能力"和"有限硬件资源"的桥梁:

  1. INT4 量化是 2026 年的性价比最优选择
  2. AWQ 在质量和速度上优于 GPTQ
  3. 混合精度策略保护敏感层
  4. KV Cache 量化进一步减少推理内存
  5. FP4/FP8 是下一代量化方向

量化的本质是"用最小的精度损失换取最大的效率提升"——这是一门精密的工程艺术。

加入讨论

这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。