模型量化
模型量化的两种类型,分别是 PTQ 和 QAT
什么是训练后量化 Post Training Quantization (PTQ)?
- 在训练得到的高精度模型后,统计权重和激活值的动态范围和量化参数(q-parms)后,再进行量化操作
- 分为 2 个量化阶段:1) 量化权重,这个很简单,因为权重可以直接被访问,所以可以很轻松计算得到其分布;2) 量化激活,这个比较麻烦,因为必须使用实际输入数据才能测出其分布
- 校准 (Calibration): 在量化激活时,输入代表性数据集,获得层间激活分布的过程
什么是量化感知训练 Quantization Aware Training (QAT)?
- 训练后量化 (PTQ) 有时候出现无法接受的精度损失,这时候就需要使用量化感知训练 Quantization Aware Training (QAT),它的主要思想是:在训练阶段包含量化误差,使得网络可以适应量化后的权值与激活
- 通过在训练图中插入量化操作 (Q) 和反量化操作 (DQ),实现将量化误差包含在网络中,以使得 量化参数 更加符合网络,减少精度损失
什么是量化操作 (Q) 和反量化操作 (DQ)?
- 量化 (Quantize): 将浮点数量化为整数的过程
- 反量化 (Dequantize): 将整数转化为浮点数的过程