量化:INT8、INT4 到底损失了什么?

用更少的比特表示权重,换取容量、带宽与质量之间的平衡

目录

  FP16 每个权重占 2 Bytes,INT8 约占 1 Byte,INT4 约占半个 Byte。模型更容易放入显存,但原来的连续数值只能落到有限格点上,必然产生舍入误差。

量化不是简单删除小数位,而是用 Scale 把一段浮点范围映射到有限整数格点。

量化:INT8、INT4 到底损失了什么?

第 20 课核心流程,点击查看原始 SVG

1、量化与反量化

对称量化常用 q=round(x/scale),计算时用 x≈q×scale 恢复近似值。Scale 决定整数格点覆盖多大范围。

位数越低,可用格点越少;Scale 选得不好会造成更大舍入误差或截断。

2、Per-Tensor、Per-Channel 与 Group

整张权重矩阵共用一个 Scale 最简单,但难照顾不同分布。按输出通道或小组分别求 Scale,能更贴合局部范围,代价是保存更多元数据并增加实现复杂度。

3、Weight-Only 与 W8A8

Weight-Only 只压缩权重,计算前反量化到 FP16/BF16,常见于 4-bit 本地推理。W8A8 同时量化权重和激活,更依赖硬件整数内核,也更容易受到激活异常值影响。

4、PTQ 与 QAT

Post-Training Quantization 在模型训练完成后用少量校准数据完成量化,成本低。Quantization-Aware Training 在训练中模拟量化误差,让模型适应低比特表示,通常更复杂但可能保持更好质量。

5、GPTQ 与 AWQ 在优化什么

GPTQ 使用近似二阶信息逐步量化权重并补偿误差。AWQ 根据激活观察哪些权重通道更重要,通过缩放保护显著权重。二者都是常见的训练后权重量化思路。

6、更小不保证更快

低比特权重减少显存和带宽,但实际速度依赖 GPU 是否支持对应格式、反量化与矩阵内核是否高效、Batch 是否足够大。模型质量损失也因架构、任务、校准数据和位宽而异。

容易混淆的三件事

  1. INT4 文件不代表全流程都用 INT4 计算。
  2. 量化与混合精度不是同一件事。
  3. 不能只用文件大小判断质量和速度。

记住这 5 件事

  1. 量化产生不可避免的舍入误差
  2. Scale 决定映射范围
  3. 分组越细通常越准确
  4. PTQ 成本低而 QAT 更深入
  5. 体积更小不保证速度更快

参考资料

第二十课复习总图

大模型第二十课复习总图

第二十课复习总图,点击查看原始 SVG

  下一阶段进入后训练:SFT 怎样把只会续写的基础模型变成聊天助手?