昇腾社区首页
中文
注册

执行量化

  1. 获取sample软件包。

    获取sample软件包,并上传到昇腾模型压缩工具所在服务器,例如上传到amct_acl软件包所在路径:$HOME/software/AMCT_Pkg/amct/amct_acl。

  2. 解压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                # 执行量化封装脚本
  3. 执行量化。
    • Caffe框架ResNet50分类网络模型量化
      1. 切换到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路径下看到已经下载的模型文件。

      2. 准备校准数据集:

        如下命令用于将image目录下*.jpg图片转换为bin格式数据集。

        python3.7.5 process_data.py

        执行完成后,在image目录生成calibration.bin数据集。

      3. 在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命令进行量化时,命令有两种方式,用户根据实际情况进行选择:
        1. amct_acl param1=value1 param2=value2 ...(value值前面不能有空格,否则会导致截断,param取的value值为空)
        2. 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.
      4. 量化结果说明。
        量化成功后,在sample/resnet50_caffe目录生成如下文件:
        • amct_log/amct_acl.log:量化日志目录,记录昇腾模型压缩工具量化过程的日志信息。
        • fusion_result.json:模型编译过程中使用的融合规则。
        • kernel_meta:算子编译生成的文件目录。
        • results/ResNet-50-model.air:量化后的模型文件。
        • (可选)dump/record.txt:量化因子文件,如果执行量化时设置了生成量化因子的环境变量,请参见安装后处理,则量化后还会生成该目录,关于量化因子详细说明请参见量化因子记录文件说明
      5. (后续处理)如果用户需要将量化后的模型,转换为适配昇腾AI处理器的离线模型,则请参见ATC工具使用指南

        转换样例如下:

        atc --model=$HOME/module/ResNet-50-model.air --framework=1 --output=$HOME/module/out/ResNet-50_om --soc_version=${soc_version}
    • TensorFlow框架ResNet50分类网络模型量化
      1. 准备校准数据集:

        如下命令用于将image目录下*.jpg图片转换为bin格式数据集。

        python3.7.5 process_data.py

        执行完成后,在image目录生成calibration.bin数据集。

      2. 在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.
      3. 量化结果说明。

        量化成功后,在sample/resnet50_tf目录生成如下文件:

        • amct_log/amct_acl.log:量化日志目录,记录昇腾模型压缩工具量化过程的日志信息。
        • fusion_result.json:模型编译过程中使用的融合规则。
        • kernel_meta:算子编译生成的文件目录。
        • results/resnet_v1_50.air:量化后的模型文件。
        • (可选)dump/record.txt:量化因子文件,如果执行量化时设置了生成量化因子的环境变量,请参见安装后处理,则量化后还会生成该目录,关于量化因子详细说明请参见量化因子记录文件说明
      4. (后续处理)如果用户需要将量化后的模型,转换为适配昇腾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分类网络模型量化
      1. 准备校准数据集:

        如下命令用于将image目录下*.jpg图片转换为bin格式数据集。

        python3.7.5 process_data.py

        执行完成后,在image目录生成calibration.bin数据集。

      2. 在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.
      3. 量化结果说明。

        量化成功后,在sample/resnet101_onnx目录生成如下文件:

        • amct_log/amct_acl.log:量化日志目录,记录昇腾模型压缩工具量化过程的日志信息。
        • fusion_result.json:模型编译过程中使用的融合规则。
        • kernel_meta:算子编译生成的文件目录。
        • results/resnet101_v11.air:量化后的模型文件。
        • (可选)dump/record.txt:量化因子文件,如果执行量化时设置了生成量化因子的环境变量,请参见安装后处理,则量化后还会生成该目录,关于量化因子详细说明请参见量化因子记录文件说明
      4. (后续处理)如果用户需要将量化后的模型,转换为适配昇腾AI处理器的离线模型,则请参见ATC工具使用指南

        转换样例如下:

        atc --model=$HOME/module/resnet101_v11.air --framework=1 --output=$HOME/module/out/resnet101_v11_om --soc_version=${soc_version}