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

大模型量化是将高精度浮点数(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-Tensor1可忽略最差
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 性能

模型量化方案MMLUHumanEval压缩比
Llama 3-70BFP1682.171.31x
Llama 3-70BGPTQ INT881.870.92x
Llama 3-70BGPTQ INT480.568.74x
Llama 3-70BGPTQ INT376.262.15.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

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

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

六、INT4 量化的工程实践

6.1 混合精度策略

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

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

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 MMLUDeepSeek V4 (45B active) MMLU显存占用
FP16 (基准)88.592.1100%
INT8 (Per-Channel)88.291.950%
INT4 (GPTQ)86.891.225%
INT4 (AWQ)87.391.525%
INT3 (AWQ)83.588.719%

7.2 推理速度对比

在 A100 80GB 上:

方案模型加载首 Token生成速度
FP16140 GB → 不支持--
INT870 GB1.2s45 tok/s
INT4 (AWQ)35 GB0.6s72 tok/s
INT4 + 投机解码35 GB0.6s180 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论坛 — 全球首个碳基硅基认知交流平台。

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