前提条件

已安装AMCT工具包,详情请参见 工具安装

如下产品型号,不支持Caffe框架。

Atlas A2训练系列产品/Atlas 800I A2推理产品

获取sample包

  1. 单击 Link获取sample软件包,并上传到 AMCT 所在服务器任意路径,例如上传到: $HOME/software/AMCT_Pkg/ amct_sample
  2. 解压sample软件包。

    切换到 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                         # 数据集预处理脚本

    量化模型

    • 由于软件约束(动态shape场景下暂不支持输入数据为DT_INT8),量化后的部署模型使用ATC工具进行模型转换时, 不能使用动态shape相关参数 ,例如--dynamic_batch_size和--dynamic_image_size等,否则模型转换会失败。
    • 使用 AMCT 工具量化后的部署模型,使用ATC工具进行模型转换时, 不能再使用高精度特性 ,比如不能再通过--precision_mode参数配置 force_fp32 must_keep_origin_dtype(原图fp32输入) ;不能再通过--precision_mode_v2参数配置 origin ;不能通过--op_precision_mode配置 high_precision 参数等。在高精度模式下设置量化参数,既拿不到量化的性能收益,也拿不到高精度模式的精度收益。
    1. 获取待量化的Caffe网络模型。
    2. 准备模型相匹配的二进制数据集。
      1. 切换到amct_caffe/cmd目录,执行如下命令,用于下载校准数据集。
        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
      2. 在amct_caffe/cmd目录,执行如下命令将calibration目录下*.jpg格式数据集转换为bin格式数据集。
        python3 ./src/process_data.py

        执行完成后,在data目录会生成新的calibration目录,并在该目录生成calibration.bin格式数据集。

      3. 在任意路径执行如下命令进行网络模型的量化操作。如下命令中使用的目录以及文件均为样例,请以实际为准。
        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 命令查看命令行涉及的所有参数,关于参数的详细解释以及使用方法请参见 命令行参数说明

        • 如果执行 amct_caffe calibration --help 命令后,查询不到 AMCT 工具,则可能是安装该工具时,使用的python版本不对,参见 安装Python3.9.2(Ubuntu) 重新执行如下环境变量后再次尝试(路径请替换为实际安装的地址):
          export PATH=/usr/local/python3.9.2/bin:$PATH
        • AMCT 的sample还提供了 3 量化命令以及 2.b 中数据集预处理脚本的封装脚本run_calibration.sh,用户准备完模型以及下载好数据集后,可以直接使用该脚本执行量化,切换到amct_caffe/cmd目录,执行如下命令:
          bash ./scripts/run_calibration.sh
        • 若提示如下信息且无Error日志信息,则说明模型量化成功。
          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_log/amct_caffe.log:记录了工具的日志信息,包括量化过程的日志信息。
          • results:量化结果文件。
            • ResNet-50_deploy_model.prototxt:量化后的可在 昇腾AI处理器 部署的模型文件。
            • ResNet-50_deploy_weights.caffemodel:量化后的可在 昇腾AI处理器 部署的权重文件。
            • ResNet-50_fake_quant_model.prototxt:量化后的可在Caffe环境进行精度仿真模型文件。
            • ResNet-50_fake_quant_weights.caffemodel:量化后的可在Caffe环境进行精度仿真权重文件。
            • ResNet-50_quant.json:量化信息文件(该文件名称和量化后模型名称保持统一),记录了量化模型同原始模型节点的映射关系,用于量化后模型同原始模型精度比对使用。
          • (可选) 随机数_时间戳, 该目录只有 AMCT_LOG_LEVEL =DEBUG 时才会生成,设置方法请参见 环境变量设置