Skip to content

Latest commit

 

History

History
 
 

quant

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  1. 准备

安装需要测试的Paddle版本和PaddleSlim版本。

准备ImageNet数据集。假定解压到/dataset/ILSVRC2012文件夹,该文件夹下有train文件夹、val文件夹、train_list.txt和val_list.txt文件

通过export CUDA_VISIBLE_DEVICES=xx指定需要使用的GPU ID。

  1. 产出PTQ量化模型

run_ptq.sh中设置数据路径,比如data_path="/dataset/ILSVRC2012"

执行sh run_ptq.sh,会使用动态图离线量化方法量化mobilenetv1、mobilenetv2、resnet50和vgg16模型。

执行完成,量化模型保存在当前output_ptq目录下。 比如output_ptq/mobilenet_v1/fp32_infer是原始FP32模型,output_ptq/mobilenet_v1/int8_infer是PTQ量化模型。

  1. 产出QAT量化模型

run_qat.sh文件中设置data_path为上述ImageNet数据集的路径/dataset/ILSVRC2012

执行sh run_train.sh 会对几个分类模型使用动态图量化训练功能进行量化,其中只执行一个epoch。

执行完后,在output_qat目录下有产出的量化模型。 比如output_qat/mobilenet_v1是QAT量化模型。

  1. 转换量化模型

在X86 CPU上部署量化模型,需要使用src/save_quant_model.py脚本对量化模型进行转换。

如下是对output_qat/mobilenet_v1模型进行转换的示例。

sh run_convert.sh output_qat/mobilenet_v1 int8_qat_models/mobilenet_v1

按照上述示例,将所有QAT和PTQ产出的量化模型进行转换,假定分别保存在int8_qat_modelsint8_ptq_models文件中。

  1. 测试模型

run_test.sh脚本中设置data_path为上述ImageNet数据集的路径/dataset/ILSVRC2012

使用run_test.sh脚本测试原始FP32模型(共4个)的精度,可以开启GPU,举例如下。

sh run_test.sh output_ptq/mobilenet_v1/fp32_infer/ True

使用run_test.sh脚本测试转换前PTQ和QAT量化模型(分别4个)的精度,可以开启GPU,举例如下。

sh run_test.sh output_qat/mobilenet_v1 True

使用run_test.sh脚本测试转换后PTQ和QAT量化模型(分别4个)的精度,不可以开启GPU,举例如下。

sh run_test.sh int8_qat_models/mobilenet_v1 False
  1. 测试目标

使用动态图离线量化功能,产出mobilenet_v1,mobilenet_v2,resnet50,vgg16量化模型,测试转换前后量化模型精度在1%误差范围内。