本章节以压缩特性中的量化功能为例,并借助sample中的网络模型,为您介绍如何使用命令行方式压缩一个模型。
AMCT支持命令行方式和Python API接口方式量化原始网络模型,命令行方式压缩方式,目前仅支持如下ONNX、TensorFlow、Caffe框架:
其他未支持的框架和特性,只能使用Python API方式进行量化。命令行方式相比Python API接口方式有以下优点:
命令行方式 |
Python API接口方式 |
---|---|
量化准备动作简单,只需准备模型和模型匹配的数据集即可。 |
需要了解Python语法和量化流程。 |
量化过程简单,只涉及参数选择,无需对量化脚本进行适配。 |
需要适配修改量化脚本。 |
|
|
已安装AMCT(ONNX)工具包,详情请参见工具安装。
切换到amct_sample目录,执行如下命令解压sample包。
unzip samples-master.zip cd samples-master/python/level1_single_api/9_amct/amct_onnx/cmd
获得如下目录信息:
|-- README_CN.md |-- data # 数据集存放路径 |-- model # ONNX 模型文件所在目录 |-- scripts | |-- run_calibration.sh # 执行量化封装脚本 | |-- run_convert_qat.sh # QAT模型适配CANN模型命令行脚本 | |-- run_customized_calibration.sh # 用户自定义的训练后量化脚本 |-- src |-- process_data.py # 数据集预处理脚本 |-- evaluator.py #系统内置的,基于“Evaluator”基类并且包含evaluator评估器的python脚本
单击Link,获取resnet101_v11.onnx网络的模型文件(*.onnx),并以AMCT软件包运行用户将获取的文件上传至Linux服务器sample目录amct_onnx/cmd/model。
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/amct_acl/classification/imagenet_calibration.tar.gz tar -zxvf imagenet_calibration.tar.gz
执行完成后,在images目录会生成*.jpg格式数据集。
python3 ./src/process_data.py
执行完成后,在data目录生成calibration目录,并在该目录中生成calibration.bin格式数据集。
amct_onnx calibration --model ./model/resnet101_v11.onnx --save_path ./results/resnet101_v11 --input_shape "input:16,3,224,224" --data_dir "./data/calibration" --data_types "float32"
amct_onnx二进制所在路径为安装用户$HOME/.local/bin目录。用户可以通过amct_onnx calibration --help命令查看命令行涉及的所有参数,关于参数的详细解释以及使用方法请参见命令行参数说明。
export PATH=/usr/local/python3.9.2/bin:$PATH
bash ./scripts/run_calibration.sh
INFO - [AMCT]:[Utils]: The model file is saved in $HOME/xxx/results/resnet101_v11_fake_quant_model.onnx
量化后生成文件说明如下:
上述日志文件重新执行量化时会被覆盖,请用户自行进行保存。此外,由于生成的日志文件大小和所要量化模型层数有关,请用户确保AMCT工具所在服务器有足够空间:
以量化resnet101模型为例,日志级别设置为INFO,日志文件大小为5KB左右,中间临时文件大小为170MB左右;日志级别设置为DEBUG,日志文件大小为2MB左右,中间临时文件大小为170MB左右。
已安装AMCT(TensorFlow)工具包,详情请参见工具安装。
切换到amct_sample目录,执行如下命令解压sample包。
unzip samples-master.zip cd samples-master/python/level1_single_api/9_amct/amct_tensorflow/cmd
获得如下目录信息:
|-- README_CN.md |-- data # 数据集存放路径 |-- model # TensorFlow模型文件所在目录 |-- scripts | |-- run_calibration.sh # 执行量化封装脚本 | |-- run_convert_qat.sh # QAT模型适配CANN模型命令行脚本 | |-- run_customized_calibration.sh # 用户自定义的训练后量化脚本 |-- src |-- evaluator.py #系统内置的,基于“Evaluator”基类并且包含evaluator评估器的python脚本 |-- process_data.py # 数据集预处理脚本
单击Link获取MobileNet V2网络模型,解压后将其中的(*.pb)文件,以AMCT软件包运行用户上传至Linux服务器sample目录amct_tensorflow/cmd/model。
cd amct_tensorflow/cmd/data mkdir image && cd image wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/amct_acl/classification/calibration.rar unrar e calibration.rar
上述命令执行完成后,在image/calibration目录会生成*.jpg格式数据集。
python3 ./src/process_data.py
执行完成后,在data目录会生成新的calibration目录,并在该目录生成calibration.bin格式数据集。
amct_tensorflow calibration --model=./model/mobilenet_v2_1.0_224_frozen.pb --save_path=./results/mobilenet_v2 --outputs="MobilenetV2/Predictions/Reshape_1:0" --input_shape="input:32,224,224,3" --data_dir="./data/calibration/" --data_types="float32"
amct_tensorflow二进制所在路径为安装用户$HOME/.local/bin目录。用户可以通过amct_tensorflow calibration --help命令查看命令行涉及的所有参数,关于参数的详细解释以及使用方法请参见命令行参数说明。
export PATH=/usr/local/python3.9.2/bin:$PATH
bash ./scripts/run_calibration.sh
INFO - [AMCT]:[save_model]: The model is saved in $HOME/xxx/results/mobilenet_v2_quantized.pb
量化后生成文件说明如下:
上述日志文件重新执行量化时会被覆盖,请用户自行进行保存。此外,由于生成的日志文件大小和所要量化模型层数有关,请用户确保AMCT工具所在服务器有足够空间:
以量化resnet101模型为例,日志级别设置为INFO,日志文件大小为5KB左右,中间临时文件大小为170MB左右;日志级别设置为DEBUG,日志文件大小为2MB左右,中间临时文件大小为170MB左右。
已安装AMCT(Caffe)工具包,详情请参见工具安装。
Atlas A2训练系列产品/Atlas 800I A2推理产品不支持Caffe框架。
切换到amct_sample目录,执行如下命令解压sample包。
unzip samples-master.zip cd samples-master/python/level1_single_api/9_amct/amct_caffe/cmd
获得如下目录信息:
|-- README_CN.md |-- data # 数据集存放目录 |-- model # Caffe模型文件所在目录 |-- scripts | |-- run_calibration.sh # 执行量化封装脚本 | |-- run_customized_calibration.sh # 用户自定义的训练后量化脚本 |-- src |-- download_models.py # 模型文件下载脚本 |-- evaluator.py #系统内置的,基于“Evaluator”基类并且包含evaluator评估器的python脚本 |-- process_data.py # 数据集预处理脚本
其中,--close_certificate_verify参数可选,用于关闭证书验证参数,确保模型正常下载。如果模型下载过程中提示认证失败相关信息,则可以增加该参数重新下载。
若提示如下信息,则说明模型文件下载成功:
[INFO]Download 'ResNet-50-deploy.prototxt' to 'xxx/amct_caffe/cmd/model/ResNet-50-deploy.prototxt' success. [INFO]Download file_name to 'xxx/amct_caffe/cmd/model/ResNet-50-model.caffemodel' success.
用户可以根据提示信息,在amct_caffe/cmd/model路径看到已经下载的模型文件。
cd data mkdir image && cd image wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/amct_acl/classification/calibration.rar unrar e calibration.rar
python3 ./src/process_data.py
执行完成后,在data目录会生成新的calibration目录,并在该目录生成calibration.bin格式数据集。
amct_caffe calibration --model=./model/ResNet-50-deploy.prototxt --weights=./model/ResNet-50-model.caffemodel --save_path=./results/Resnet-50 --input_shape="data:1,3,224,224" --data_dir="./data/calibration" --data_types="float32"
amct_caffe二进制所在路径为安装用户$HOME/.local/bin目录。用户可以通过amct_caffe calibration --help命令查看命令行涉及的所有参数,关于参数的详细解释以及使用方法请参见命令行参数说明。
export PATH=/usr/local/python3.9.2/bin:$PATH
bash ./scripts/run_calibration.sh
INFO - [AMCT]:[Utils]: The weights_file is saved in $HOME/xxx/results/Resnet-50_fake_quant_weights.caffemodel INFO - [AMCT]:[Utils]: The model_file is saved in $HOME/xxx/results/Resnet-50_fake_quant_model.prototxt
量化后生成文件说明如下:
上述日志文件重新执行量化时会被覆盖,请用户自行进行保存。此外,由于生成的日志文件大小和所要量化模型层数有关,请用户确保AMCT工具所在服务器有足够空间:
以量化resnet101模型为例,日志级别设置为INFO,日志文件大小为5KB左右,中间临时文件大小为170MB左右;日志级别设置为DEBUG,日志文件大小为2MB左右,中间临时文件大小为170MB左右。
实际量化过程中,如果量化后的模型推理精度不满足要求,则用户可以根据量化后的quant_config.json,自行构造简易配置文件config.cfg,构造原则请参见调优流程。然后使用--calibration_config参数重新进行量化。通过该文件用户可以自行决定校准使用的数据量,以及控制哪些层进行量化等。