快速入门

昇腾模型压缩工具支持命令行方式和Python API接口方式量化原始网络模型,命令行方式相比Python API接口方式有以下优点:

表1 量化方式比较

命令行方式

Python API接口方式

量化准备动作简单,只需准备模型和模型匹配的数据集即可。

需要了解Python语法和量化流程。

量化过程简单,只涉及参数选择,无需对量化脚本进行适配。

需要适配修改量化脚本。

当前仅支持训练后量化中的均匀量化。

支持量化的所有功能。

本章节以Sample中ResNet-50网络模型为例,为您介绍如何借助命令行参数快速体验量化一个模型,Python API接口方式请参见量化。Sample获取链接请单击Link

  1. 获取待量化的Caffe网络模型。

    您可以从以下链接中获取ResNet-50网络的模型文件(*.prototxt)、预训练模型文件(*.caffemodel),并以昇腾模型压缩工具软件包运行用户将获取的文件上传至Linux服务器Sample目录cmd/model。

    • ResNet-50网络的模型文件(*.prototxt):单击Link下载该文件。
    • ResNet-50网络的预训练模型文件(*.caffemodel):单击Link下载该文件。

  2. 准备模型相匹配的二进制数据集。

    1. 单击Link获取ResNet-50网络模型对应的数据集。
    2. 将上述获取的数据集上传到Sample cmd/data/目录,并在该目录自行创建image目录。
    3. 在cmd目录执行如下命令将jpg格式数据集转成bin格式。
      python3.7.5 ./src/process_data.py

      执行完成后,在image目录会生成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/image" --data_types="float32"

    用户可以通过amct_caffe calibration --help命令查看命令行涉及的所有参数,关于参数的详细解释以及使用方法请参见命令行参数说明

  4. 若提示如下信息且无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时才会生成,设置方法请参见环境变量设置
      • quant_config.json:量化配置文件,描述了如何对模型中的每一层进行量化。如果当前目录已经存在量化配置文件,则再次进行量化时,如果新生成的量化配置文件与已有的文件同名,则会覆盖已有的量化配置文件,否则生成新的量化配置文件。

        实际量化过程中,如果量化后的模型推理精度不满足要求,则用户可以根据量化后的quant_config.json,自行构造简易配置文件config.cfg,构造原则请参见调优流程。然后使用--calibration_config参数重新进行量化。通过该文件用户可以自行决定校准使用的数据量,以及控制哪些层进行量化等。

      • modified_model.prototxt、modified_model.caffemodel:量化过程中生成的中间模型文件。
      • record.txt:记录量化因子的文件。关于该文件的原型定义请参见量化因子记录文件说明