目录
FP16 每个权重占 2 Bytes,INT8 约占 1 Byte,INT4 约占半个 Byte。模型更容易放入显存,但原来的连续数值只能落到有限格点上,必然产生舍入误差。
量化不是简单删除小数位,而是用 Scale 把一段浮点范围映射到有限整数格点。
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 是否足够大。模型质量损失也因架构、任务、校准数据和位宽而异。
容易混淆的三件事
- INT4 文件不代表全流程都用 INT4 计算。
- 量化与混合精度不是同一件事。
- 不能只用文件大小判断质量和速度。
记住这 5 件事
- 量化产生不可避免的舍入误差
- Scale 决定映射范围
- 分组越细通常越准确
- PTQ 成本低而 QAT 更深入
- 体积更小不保证速度更快
参考资料
第二十课复习总图
下一阶段进入后训练:SFT 怎样把只会续写的基础模型变成聊天助手?