PTQ和QAT的区别
- Post-training-quantization(PTQ)
- Quantization-aware-training(QAT)
Post-training-quantization(PTQ)是目前常用的模型量化方法之一。以INT8量化为例,PTQ处理流程为:
1 | 1. 首先在数据集上以FP32精度进行模型训练,得到训练好的baseline模型。 |
可以看出如果PTQ中模型训练和量化是分开的,而QAT则是在模型训练时加入了伪量化节点,用于模拟模型量化时引起的误差。以INT8量化为例,QAT处理流程为:
1 | 1. 首先在数据集上以FP32精度进行模型训练,得到训练好的baseline模型。 |
伪量化实际上是quantization+dequantization的结合,通过quantization+dequantization操作模拟量化引起的误差。
伪量化的操作看起来输入输出没变,但是实际上在其中模拟了量化round操作,将这种误差当做一种训练的噪声,在QAT finetune的同时,模型会去适应这种噪声,从而在最后量化为INT8时,减少精度的损失。