什么是模型量化
模型量化的优点
量化技术落地的三大挑战
量化原理
浮点与定点数据的转化公式如下:
矩阵运算的量化
Quantize
,Dequantize
,Requantize
算子
假设模型已经量化好,即模型算子已经转换为int
类型算子(如下图的Conv2D
)。在模型推理阶段,需要在计算图中插入Quantize
,Dequantize
,Requantize
3种算子。
3种算子的计算过程如下,其中的scale
,offset
是在推理前已经计算好的。
-
float -> int
-
int -> float
-
int32 -> int8
动态训练后量化(Post-Training Quantization Dynamic, PTQ Dynamic)
不需要重新进行训练或者是标签数据,仅将模型中特定算子的权重从FP32类型映射成INT8/16类型。因此这是一种轻量化的量化方法。在大多数情况下PTQ Dynamic使用8bit量化时可以接近浮点模型的精度。
量化感知训练(Quantization Aware Training, QAT)
让模型感知量化运算对模型精度带来的影响,通过finetune训练降低量化误差。
QAT算法流程:
静态训练后量化(Post-Training Quantization Static, PTQ Static)
使用少量无标签较准数据,采用KL散度等方法计算量化比例因子。