深度神经网络量化

目录

什么是模型量化

模型量化的优点

量化技术落地的三大挑战

量化原理

浮点与定点数据的转化公式如下:

矩阵运算的量化

QuantizeDequantizeRequantize算子

假设模型已经量化好,即模型算子已经转换为int类型算子(如下图的Conv2D)。在模型推理阶段,需要在计算图中插入QuantizeDequantizeRequantize3种算子。

3种算子的计算过程如下,其中的scaleoffset是在推理前已经计算好的。

  • 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散度等方法计算量化比例因子。

量化方法比较