---
title: 快速入门
description: "本章节以压缩特性中的量化功能为例，并借助sample中的网络模型，为您介绍如何使用命令行方式压缩一个模型。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/amct/atlasamct_16_0002.html
sourcePath: /source/zh/canncommercial/900/devaids/amct/atlasamct_16_0002.html
indexId: df594a102c906daae25592add4a1f05aa5346eb1ac83f4613a79c28eb5098cab65
---
# 快速入门

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

AMCT支持命令行方式和Python API接口方式量化原始网络模型，命令行方式压缩方式，目前仅支持如下ONNX、TensorFlow、Caffe框架：

- 压缩ONNX网络模型
- 压缩开源框架的TensorFlow网络模型
- 压缩开源框架的Caffe网络模型

其他未支持的框架和特性，只能使用Python API方式进行量化。命令行方式相比Python API接口方式有以下优点：


**表1 量化方式比较**

| 命令行方式 | Python API接口方式 |
| --- | --- |
| 量化准备动作简单，只需准备模型和模型匹配的数据集即可。 | 需要了解Python语法和量化流程。 |
| 量化过程简单，只涉及参数选择，无需对量化脚本进行适配。 | 需要适配修改量化脚本。 |
| 当前仅支持训练后量化、QAT模型适配CANN模型两个功能。 目前仅支持AMCT（ONNX）、AMCT（TensorFlow）、AMCT（Caffe）。 | 支持量化的所有功能。 支持所有框架。 |


#### 压缩ONNX网络模型

- 前提条件
  已安装AMCT（ONNX）工具包，详情请参见准备环境。


- 获取sample包

  1. 单击    Link(https://gitee.com/ascend/samples/tree/master/python/level1_single_api/9_amct/amct_onnx/cmd)
获取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_onnx/cmd
```


    获得如下目录信息：

```
|-- README_CN.md
|-- data                                     # 数据集存放路径
|-- model                                    # ONNX 模型文件所在目录
|-- scripts
|   |-- run_calibration.sh                   # 执行量化封装脚本
|   |-- run_convert_qat.sh                   # QAT模型适配CANN模型命令行脚本
|   |-- run_customized_calibration.sh        # 用户自定义的训练后量化脚本
|-- src
|-- process_data.py                      # 数据集预处理脚本，生成模型的输入数据；如果更换为其他数据集，需保证处理后数据shape与模型输入shape一致
|-- evaluator.py                         # 系统内置的，基于“Evaluator”基类并且包含evaluator评估器的Python脚本
```


- 量化模型

  1. 获取ONNX网络模型。
    单击Link(https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/amct_acl/resnet101_v11.onnx)，获取resnet101_v11.onnx网络的模型文件（*.onnx），并以AMCT软件包运行用户将获取的文件上传至Linux服务器sample目录amct_onnx/cmd/model。

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

    a. 切换到amct_onnx/cmd/data，依次执行如下命令，用于下载校准数据集。

```
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/amct_acl/classification/imagenet_calibration.tar.gz
tar -zxvf imagenet_calibration.tar.gz
```


      执行完成后，在images目录会生成*.jpg格式数据集。

    b. 在amct_onnx/cmd目录，执行如下命令将images目录下*.jpg格式数据集转换为bin格式数据集。

```
python3 ./src/process_data.py
```


      执行完成后，在data目录生成calibration目录，并在该目录中生成calibration.bin格式数据集。

  3. 在任意目录执行如下命令进行网络模型的量化操作。如下命令中使用的目录以及文件均为样例，请以实际为准。

```
amct_onnx calibration --model .
/model
/resnet101_v11.onnx --save_path .
/results
/resnet101_v11 --input_shape "input:16,3,224,224"  --data_dir "./data/calibration"  --data_types "float32"
```


    amct_onnx二进制所在路径为安装用户$HOME/.local/bin目录。用户可以通过amct_onnx calibration --help命令查看命令行涉及的所有参数，关于参数的详细解释以及使用方法请参见命令行参数说明。

    如果执行amct_onnx 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_onnx/cmd目录，执行如下命令： bash ./scripts/run_calibration.sh

  4. 若提示如下信息且无Error日志信息，则说明模型量化成功。
```
INFO - [AMCT]:[Utils]: The model file is saved in $HOME/xxx/results/resnet101_v11_fake_quant_model.onnx
```

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

    a. amct_log/amct_onnx.log：记录了工具的日志信息，包括量化过程的日志信息。
      上述日志文件重新执行量化时会被覆盖，请用户自行进行保存。此外，由于生成的日志文件大小和所要量化模型层数有关，请用户确保AMCT工具所在服务器有足够空间：

      以量化resnet101模型为例，日志级别设置为INFO，日志文件大小为5KB左右，中间临时文件大小为170MB左右；日志级别设置为DEBUG，日志文件大小为2MB左右，中间临时文件大小为170MB左右。

    b. results：量化结果文件。

      1. resnet101_v11_deploy_model.onnx：量化后的可在AI处理器部署的模型文件。
      2. resnet101_v11_fake_quant_model.onnx：量化后的可在ONNX执行框架ONNX Runtime进行精度仿真的模型文件。
      3. resnet101_v11_quant.json：量化信息文件（该文件名称和量化后模型名称保持统一），记录了量化模型同原始模型节点的映射关系，用于量化后模型同原始模型精度比对使用。
    c. （可选）随机数_时间戳，该目录只有AMCT_LOG_LEVEL=DEBUG时才会生成，设置方法请参见设置环境变量。

      1. quant_config.json：量化配置文件，描述了如何对模型中的每一层进行量化。如果当前目录已经存在量化配置文件，则再次进行量化时，如果新生成的量化配置文件与已有的文件同名，则会覆盖已有的量化配置文件，否则生成新的量化配置文件。
      2. 实际量化过程中，如果量化后的模型推理精度不满足要求，则用户可以根据量化后的quant_config.json，自行构造简易配置文件config.cfg，构造原则请参见        调优流程
。然后使用        --calibration_config
参数重新进行量化。通过该文件用户可以自行决定校准使用的数据量，以及控制哪些层进行量化等。
      3. record.txt：记录量化因子的文件。关于该文件的原型定义请参见        record记录文件
。
      4. modified_model.onnx、updated_model.onnx：量化过程中的中间文件。


#### 压缩开源框架的TensorFlow网络模型

- 前提条件
  已安装AMCT（TensorFlow）工具包，详情请参见准备环境。


- 获取sample包

  1. 单击    Link(https://gitee.com/ascend/samples/tree/master/python/level1_single_api/9_amct/amct_tensorflow/cmd)
获取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与模型输入shape一致
```


- 量化模型

  1. 获取待量化的TensorFlow网络模型。
    单击Link(https://obs-9be7.obs.cn-east-2.myhuaweicloud.com:443/resource/mobilenet_v2_1.0_224.tgz)获取MobileNet V2网络模型，解压后将其中的（*.pb）文件，以AMCT软件包运行用户上传至Linux服务器sample目录amct_tensorflow/cmd/model。

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

    a. 切换到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格式数据集。

    b. 在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
```

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

    a. amct_log/amct_tensorflow.log：记录了工具的日志信息，包括量化过程的日志信息。
      上述日志文件重新执行量化时会被覆盖，请用户自行进行保存。此外，由于生成的日志文件大小和所要量化模型层数有关，请用户确保AMCT工具所在服务器有足够空间：

      以量化resnet101模型为例，日志级别设置为INFO，日志文件大小为5KB左右，中间临时文件大小为170MB左右；日志级别设置为DEBUG，日志文件大小为2MB左右，中间临时文件大小为170MB左右。

    b. results：量化结果文件。

      1. mobilenet_v2_quantized.pb：量化后的可在TensorFlow环境进行精度仿真并可在AI处理器部署的模型。
      2. mobilenet_v2_quant.json：量化信息文件（该文件名称和量化后模型名称保持统一），记录了量化模型同原始模型节点的映射关系，用于量化后模型同原始模型精度比对使用。
    c. （可选）随机数_时间戳：该目录只有set_logging_level接口打屏日志级别设置为debug才会生成。

      1. quant_config.json：量化配置文件，描述了如何对模型中的每一层进行量化。如果当前目录已经存在量化配置文件，则再次进行量化时，如果新生成的量化配置文件与已有的文件同名，则会覆盖已有的量化配置文件，否则生成新的量化配置文件。
      2. 实际量化过程中，如果量化后的模型推理精度不满足要求，则用户可以根据量化后的quant_config.json，自行构造简易配置文件config.cfg，构造原则请参见        调优流程
。然后使用        --calibration_config
参数重新进行量化。通过该文件用户可以自行决定校准使用的数据量，以及控制哪些层进行量化等。
      3. record.txt：记录量化因子的文件。关于该文件的原型定义请参见        record记录文件
。


#### 压缩开源框架的Caffe网络模型

- 前提条件
  已安装AMCT（Caffe）工具包，详情请参见准备环境。

  Atlas A2 训练系列产品 / Atlas A2 推理系列产品 、 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 不支持Caffe框架。=

  Atlas 350 加速卡不支持Caffe框架。


- 获取sample包

  1. 单击    Link(https://gitee.com/ascend/samples/tree/master/python/level1_single_api/9_amct/amct_caffe/cmd)
获取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与模型输入shape一致
```


- 量化模型
- 由于软件约束（动态shape场景下暂不支持输入数据为DT_INT8），量化后的部署模型使用ATC工具进行模型转换时，不能使用动态shape相关参数，例如--dynamic_batch_size和--dynamic_image_size等，否则模型转换会失败。
- 使用AMCT工具量化后的部署模型，使用ATC工具进行模型转换时，不能再使用高精度特性，比如不能再通过--precision_mode参数配置force_fp32或must_keep_origin_dtype（原图float32输入）；不能再通过--precision_mode_v2参数配置origin；不能通过--op_precision_mode配置high_precision参数等。在高精度模式下设置量化参数，既拿不到量化的性能收益，也拿不到高精度模式的精度收益。


  1. 获取待量化的Caffe网络模型。
    切换到amct_caffe/cmd目录，执行如下命令下载模型文件和权重文件。

```
python3 ./src/download_models.py --close_certificate_verify
```


    其中，--close_certificate_verify参数可选，用于关闭证书验证参数，确保模型正常下载。如果模型下载过程中提示认证失败相关信息，则可以增加该参数重新下载。

    若提示如下信息，则说明模型文件下载成功：

    1 2 [INFO]Download 'ResNet-50-deploy.prototxt' to 'xxx/amct_caffe/cmd/model/ResNet-50-deploy.prototxt' success. [INFO]Download file_name to 'xxx/amct_caffe/cmd/model/ResNet-50-model.caffemodel' success.

    用户可以根据提示信息，在amct_caffe/cmd/model路径看到已经下载的模型文件。

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

    a. 切换到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
```


    b. 在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

  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：记录了工具的日志信息，包括量化过程的日志信息。
      上述日志文件重新执行量化时会被覆盖，请用户自行进行保存。此外，由于生成的日志文件大小和所要量化模型层数有关，请用户确保AMCT工具所在服务器有足够空间：

      以量化resnet101模型为例，日志级别设置为INFO，日志文件大小为5KB左右，中间临时文件大小为170MB左右；日志级别设置为DEBUG，日志文件大小为2MB左右，中间临时文件大小为170MB左右。

    - 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：记录量化因子的文件。关于该文件的原型定义请参见        record记录文件
。
