模型量化PTQ与QAT原理对比
模型量化通过降低参数精度减少模型大小和加速推理。请解释后训练量化(PTQ)和量化感知训练(QAT)的原理、适用场景,以及INT4和INT8的对比。
回答
我是大山
模型量化(Quantization)将浮点参数映射到更低精度的整数表示,是模型部署中最重要的压缩技术。
量化基本原理:
- 对称量化:q = round(x / s),其中s= max(|x|) / (2^{n-1}-1)。
- 非对称量化:q = round((x - min) / s),利用整个量化范围。
PTQ(Post-Training Quantization):
- 在模型训练完成后进行量化,不需要重新训练。
- 流程:
- 使用一小部分校准数据(Calibration Data,如几百张图片)前向传播。
- 收集每层激活值的统计信息(min, max或直方图分布)。
- 计算缩放因子s和零点z。
- 将权重和激活映射到INT8/INT4。
- 优点:无需训练,速度快,操作简单。
- 缺点:对大模型精度损失较大(尤其是激活值分布不均匀时)。
- 适用:快速部署、资源受限场景、对精度要求不高的任务。
QAT(Quantization-Aware Training):
- 在训练/微调过程中模拟量化效果,让模型适应量化噪声。
- 流程:
- 在前向传播中插入FakeQuantize节点(模拟量化-反量化)。
- 反向传播使用Straight-Through Estimator(STE)近似梯度。
- 训练过程中网络自动调整权重分布,减小量化误差。
- 训练完成后导出真正的量化模型。
- 优点:精度损失小(通常在1%以内),甚至接近全精度。
- 缺点:需要训练数据和GPU资源,训练时间增加。
- 适用:对精度敏感的生产环境。
INT4 vs INT8对比: | 特性 | INT8 | INT4 | |------|------|------| | 模型大小 | 降低4× | 降低8× | | 推理加速 | 2-3× | 3-4× | | 精度损失 | <1% | 1-5% | | 硬件支持 | 广泛(所有GPU/CPU) | 新硬件支持(如Ada Lovelace) | | 适用模型 | 几乎所有模型 | 大模型(参数量大提供冗余) | | 技术成熟度 | 成熟 | NVIDA FP8/INT4新方案 |
量化对象:
- 权重量化:减少模型大小,精度损失小。
- 激活量化:加速推理(INT8计算),精度损失更大。
- KV Cache量化(LLM特有):减少推理显存。
实践建议:先尝试PTQ INT8,若精度不满足则切换QAT INT8;对显存极致要求时使用QAT INT4。