执行量化
- 获取sample软件包。
获取sample软件包,并上传到昇腾模型压缩工具所在服务器,例如上传到amct_acl软件包所在路径:$HOME/software/AMCT_Pkg/amct/amct_acl。
- 解压sample软件包。
切换到amct/amct_acl目录,执行如下命令解压sample包。
tar -zxvf amct_acl_sample.tar.gz cd sample
获得如下目录信息:
sample/ ├── resnet101_onnx # ONNX网络模型量化目录 │ ├── images # ONNX ResNet101网络模型sample自带的分类图片数据集,包含160张图片 │ ├── pre_model │ │ └── resnet101_v11.onnx # ONNX 原始网络模型文件 │ ├── process_data.py # 数据集预处理脚本 │ └── run_calibration.sh # 执行量化封装脚本 ├── resnet50_caffe # Caffe框架ResNet50分类网络模型量化目录 │ ├── classification.jpg # Caffe框架ResNet50分类网络使用的校准集 │ ├── download_prototxt.py # ResNet50模型文件下载脚本 │ ├── image # Caffe框架ResNet50 sample自带的分类图片数据集,包含32张图片 │ ├── pre_model │ │ └── ResNet-50-model.caffemodel # Caffe框架原始模型权重文件 │ ├── process_data.py # 数据集预处理脚本 │ └── run_calibration.sh # 执行量化封装脚本 └── resnet50_tf # TensorFlow框架ResNet50分类网络模型量化目录 ├── classification.jpg # TensorFlow框架ResNet50分类网络使用的校准集 ├── image # TensorFlow框架ResNet50 sample自带的分类图片数据集,包含32张图片 ├── pre_model │ └── resnet_v1_50.pb # TensorFlow框架原始网络模型文件 ├── process_data.py # 数据集预处理脚本 └── run_calibration.sh # 执行量化封装脚本
- 执行量化。
- Caffe框架ResNet50分类网络模型量化
- 切换到sample/resnet50_caffe目录,执行如下命令下载ResNet-50-deploy.prototxt模型文件。
python3.7.5 download_prototxt.py --close_certificate_verify
其中,--close_certificate_verify参数可选,用于关闭证书验证参数,确保模型正常下载。如果模型下载过程中提示提示认证失败相关信息,则可以增加该参数重新下载。
若提示如下信息,则说明模型文件下载成功:
[INFO]Download 'ResNet-50-deploy.prototxt' to '$HOME/amct/amct_acl/sample/resnet50_caffe/pre_model/ResNet-50-deploy.prototxt' success.
用户可以根据提示信息,在sample/resnet50_caffe/pre_model路径下看到已经下载的模型文件。
- 准备校准数据集:
如下命令用于将image目录下*.jpg图片转换为bin格式数据集。
python3.7.5 process_data.py
执行完成后,在image目录生成calibration.bin数据集。
- 在sample/resnet50_caffe目录,执行如下命令进行量化。
amct_acl --framework=0 --model=./pre_model/ResNet-50-deploy.prototxt --weight=./pre_model/ResNet-50-model.caffemodel --calibration_data=./image/calibration.bin --calibration_shape="data:32,3,224,224" --output=./results/ResNet-50-model --soc_version=AscendxxxA --log=info
使用amct_acl命令进行量化时,命令有两种方式,用户根据实际情况进行选择:- amct_acl param1=value1 param2=value2 ...(value值前面不能有空格,否则会导致截断,param取的value值为空)
- amct_acl param1 value1 param2 value2 ...
关于参数解释以及说明请参见参数说明。该sample提供了上述命令以及3.b中数据集预处理脚本的封装脚本run_calibration.sh,用户可以直接使用该脚本执行量化,切换到sample/resnet50_caffe目录,执行如下命令:
bash run_calibration.sh
若出现如下信息则说明量化成功:
amct_acl generate deploy air success.
- 量化结果说明。量化成功后,在sample/resnet50_caffe目录生成如下文件:
- amct_log/amct_acl.log:量化日志目录,记录昇腾模型压缩工具量化过程的日志信息。
- fusion_result.json:模型编译过程中使用的融合规则。
- kernel_meta:算子编译生成的文件目录。
- results/ResNet-50-model.air:量化后的模型文件。
- (可选)dump/record.txt:量化因子文件,如果执行量化时设置了生成量化因子的环境变量,请参见安装后处理,则量化后还会生成该目录,关于量化因子详细说明请参见量化因子记录文件说明。
- (后续处理)如果用户需要将量化后的模型,转换为适配昇腾AI处理器的离线模型,则请参见《ATC工具使用指南》。
转换样例如下:
atc --model=$HOME/module/ResNet-50-model.air --framework=1 --output=$HOME/module/out/ResNet-50_om --soc_version=${soc_version}
- 切换到sample/resnet50_caffe目录,执行如下命令下载ResNet-50-deploy.prototxt模型文件。
- TensorFlow框架ResNet50分类网络模型量化
- 准备校准数据集:
如下命令用于将image目录下*.jpg图片转换为bin格式数据集。
python3.7.5 process_data.py
执行完成后,在image目录生成calibration.bin数据集。
- 在sample/resnet50_tf目录,执行如下命令进行量化。
amct_acl --framework=3 --model=./pre_model/resnet_v1_50.pb --calibration_data=./image/calibration.bin --calibration_shape="input:16,224,224,3" --output=./results/resnet_v1_50 --soc_version=AscendxxxA --log=info
关于参数解释以及说明请参见参数说明。该sample提供了上述命令以及3.a中数据集预处理脚本的封装脚本run_calibration.sh,用户可以直接使用该脚本执行量化,切换到sample/resnet50_tf目录,执行如下命令:
bash run_calibration.sh
若出现如下信息则说明量化成功:
amct_acl generate deploy air success.
- 量化结果说明。
量化成功后,在sample/resnet50_tf目录生成如下文件:
- amct_log/amct_acl.log:量化日志目录,记录昇腾模型压缩工具量化过程的日志信息。
- fusion_result.json:模型编译过程中使用的融合规则。
- kernel_meta:算子编译生成的文件目录。
- results/resnet_v1_50.air:量化后的模型文件。
- (可选)dump/record.txt:量化因子文件,如果执行量化时设置了生成量化因子的环境变量,请参见安装后处理,则量化后还会生成该目录,关于量化因子详细说明请参见量化因子记录文件说明。
- (后续处理)如果用户需要将量化后的模型,转换为适配昇腾AI处理器的离线模型,则请参见《ATC工具使用指南》。
转换样例如下:
atc --model=$HOME/module/resnet_v1_50.air --framework=1 --output=$HOME/module/out/resnet_v1_50_om --soc_version=${soc_version}
- 准备校准数据集:
- ONNX ResNet101分类网络模型量化
- 准备校准数据集:
如下命令用于将image目录下*.jpg图片转换为bin格式数据集。
python3.7.5 process_data.py
执行完成后,在image目录生成calibration.bin数据集。
- 在sample/resnet101_onnx目录,执行如下命令进行量化。
amct_acl --framework=5 --model=./pre_model/resnet101_v11.onnx --calibration_data=./images/calibration.bin --calibration_shape="input:16,3,224,224" --out_nodes="Gemm_353:0" --output=./results/resnet101_v11 --soc_version=AscendxxxA --log=info
关于参数解释以及说明请参见参数说明。该sample提供了上述命令以及3.a中数据集预处理脚本的封装脚本run_calibration.sh,用户可以直接使用该脚本执行量化,切换到sample/resnet101_onnx目录,执行如下命令:
bash run_calibration.sh
若出现如下信息则说明量化成功:
amct_acl generate deploy air success.
- 量化结果说明。
量化成功后,在sample/resnet101_onnx目录生成如下文件:
- amct_log/amct_acl.log:量化日志目录,记录昇腾模型压缩工具量化过程的日志信息。
- fusion_result.json:模型编译过程中使用的融合规则。
- kernel_meta:算子编译生成的文件目录。
- results/resnet101_v11.air:量化后的模型文件。
- (可选)dump/record.txt:量化因子文件,如果执行量化时设置了生成量化因子的环境变量,请参见安装后处理,则量化后还会生成该目录,关于量化因子详细说明请参见量化因子记录文件说明。
- (后续处理)如果用户需要将量化后的模型,转换为适配昇腾AI处理器的离线模型,则请参见《ATC工具使用指南》。
转换样例如下:
atc --model=$HOME/module/resnet101_v11.air --framework=1 --output=$HOME/module/out/resnet101_v11_om --soc_version=${soc_version}
- 准备校准数据集:
- Caffe框架ResNet50分类网络模型量化