文档
注册

快速入门

本章节以压缩特性中的量化功能为例,并借助sample中MobileNet V2网络模型,为您介绍如何使用命令行方式快速体验压缩一个模型。

前提条件

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

获取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_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                      # 数据集预处理脚本

量化模型

  • 由于软件约束(动态shape场景下暂不支持输入数据为DT_INT8),量化后的部署模型使用ATC工具进行模型转换时,不能使用动态shape相关参数,例如--dynamic_batch_size和--dynamic_image_size等,否则模型转换会失败。
  • 使用AMCT工具量化后的部署模型,使用ATC工具进行模型转换时,不能再使用高精度特性,比如不能再通过--precision_mode参数配置force_fp32must_keep_origin_dtype(原图fp32输入);不能再通过--precision_mode_v2参数配置origin;不能通过--op_precision_mode配置high_precision参数等。在高精度模式下设置量化参数,既拿不到量化的性能收益,也拿不到高精度模式的精度收益。
  1. 获取待量化的TensorFlow网络模型。

    单击Link获取MobileNet V2网络模型,解压后将其中的(*.pb)文件,以AMCT软件包运行用户上传至Linux服务器sample目录amct_tensorflow/cmd/model。

  2. 准备模型相匹配的二进制数据集。
    1. 切换到amct_tensorflow/cmd/data,依次执行如下命令,用于下载校准数据集。
      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格式数据集。

    2. 在amct_tensorflow/cmd目录,执行如下命令将calibration目录下*.jpg格式数据集转换为bin格式数据集。
      python3 ./src/process_data.py

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

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

    • 如果执行amct_tensorflow 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_tensorflow/cmd目录,执行如下命令:
      bash ./scripts/run_calibration.sh
  4. 若提示如下信息且无Error日志信息,则说明模型量化成功。
    INFO - [AMCT]:[save_model]: The model is saved in $HOME/xxx/results/mobilenet_v2_quantized.pb

    量化后生成文件说明如下:

    1. amct_log/amct_tensorflow.log:记录了工具的日志信息,包括量化过程的日志信息。
    2. results:
      1. mobilenet_v2_quantized.pb:量化后的可在TensorFlow环境进行精度仿真并可在昇腾AI处理器部署的模型。
      2. mobilenet_v2_quant.json:量化信息文件(该文件名称和量化后模型名称保持统一),记录了量化模型同原始模型节点的映射关系,用于量化后模型同原始模型精度比对使用。
    3. (可选)随机数_时间戳:该目录只有set_logging_level接口打屏日志级别设置为debug才会生成。
      1. quant_config.json:量化配置文件,描述了如何对模型中的每一层进行量化。如果当前目录已经存在量化配置文件,则再次进行量化时,如果新生成的量化配置文件与已有的文件同名,则会覆盖已有的量化配置文件,否则生成新的量化配置文件。
      2. 实际量化过程中,如果量化后的模型推理精度不满足要求,则用户可以根据量化后的quant_config.json,自行构造简易配置文件config.cfg,构造原则请参见调优流程。然后使用--calibration_config参数重新进行量化。通过该文件用户可以自行决定校准使用的数据量,以及控制哪些层进行量化等。
      3. record.txt:记录量化因子的文件。关于该文件的原型定义请参见record记录文件
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词