模型量化-静态离线量化

    静态离线量化中,有两种计算量化因子的方法,非饱和量化方法和饱和量化方法。非饱和量化方法计算整个Tensor的绝对值最大值,将其映射为127。饱和量化方法使用KL散度计算一个合适的阈值T (0<T<mab_max),将其映射为127。一般而言,待量化Op的权重采用非饱和量化方法,待量化Op的激活(输入和输出)采用饱和量化方法 。

    使用条件:

    • 有训练好的预测模型

    • 有少量校准数据,比如100~500张图片

    使用步骤:

    • 产出量化模型:使用PaddleSlim调用静态离线量化接口,产出量化模型

    • 量化模型预测:使用PaddleLite加载量化模型进行预测推理

    • 不需要大量训练数据

    • 快速产出量化模型,简单易用

    缺点:

    • 对少部分的模型,尤其是计算量小、精简的模型,量化后精度可能会受到影响

    大家可以使用PaddleSlim调用静态离线量化接口,得到量化模型。

    参考PaddleSlim文档进行安装。

    2.2 准备模型和校准数据

    准备已经训练好的FP32预测模型,即 保存的模型。 准备校准数据集,校准数据集应该是测试集/训练集中随机挑选的一部分,量化因子才会更加准确。对常见的视觉模型,建议校准数据的数量为100~500张图片。

    2.4 调用静态离线量化

    对于调用静态离线量化,首先给出一个例子,让大家有个直观了解。

    快速开始请参考。

    API接口请参考文档

    Demo请参考。

    首先,使用PaddleLite提供的模型转换工具(model_optimize_tool)将量化模型转换成移动端预测的模型,然后加载转换后的模型进行预测部署。

    参考模型转换准备模型转换工具,建议从Release页面下载。

    参考使用模型转换工具,参数按照实际情况设置。比如在安卓手机ARM端进行预测,模型转换的命令为:

    1. ./opt --model_dir=./mobilenet_v1_quant \
    2. --optimize_out=mobilenet_v1_quant_opt \

    3.2 量化模型预测