---
title: convert_qat_model
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/amct/atlasamct_16_0160.html
sourcePath: /source/zh/canncommercial/900/devaids/amct/atlasamct_16_0160.html
indexId: dd09b2bfb92bdc4892daa7860d5b5450ce11113327e27bd65813fa56ca2ec35365
---
# convert_qat_model

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |


#### 功能说明

将ONNX量化模型适配为CANN支持的量化模型。


#### 约束说明

- 若QuantizeLinear不为output算子：仅支持对QAT模型中包含QuantizeLinear和DequantizeLinear两类FakeQuant层结构的模型进行适配，且仅权重支持per-channel量化，成对的QuantizeLinear、DequantizeLinear层需要存在相同的量化因子。
- 若QuantizeLinear为非中间层的output算子，且为单输出：则模型适配时，不需要和DequantizeLinear配对，适配过程中会将QuantizeLinear算子替换成AscendQuant算子。
  由于ONNX原始模型中的offset值以INT32类型存储，进行算子替换时，可能会出现offset值超过INT8表示范围的情况；但是实际计算过程中，ONNX Runtime以及AMCT都会对offset做合法化处理，不会影响适配流程及结果。


#### 函数原型

```
convert_qat_model(model_file, save_path, record_file=None)
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| model\_file | 输入 | 含义：待适配的.onnx格式模型文件路径。 数据类型：string |
| save\_path | 输入 | 含义：模型存放路径。该路径需要包含模型名前缀，例如./quantized\_model/\*model。 数据类型：string |
| record\_file | 输入 | 含义：用户计算得到的量化因子记录文件路径，量化因子记录文件格式为.txt。 数据类型：string 默认值为：None |


#### 返回值说明

无


#### 调用示例

```
import amct_onnx as amct
model_file = "./pre_model/mobilenet_v2_qat.onnx"
save_path="./results/model"
amct.convert_qat_model(model_file, save_path)
```

落盘文件说明：

- 可用于CPU/GPU测试的fakequant模型以及用于ATC转换的deploy模型。
- （可选）生成一个量化参数的txt格式记录文件，内部记录了完整量化层的量化参数。
