---
title: 使用AOE工具调优模型
description: "本节介绍推理场景下使用aoe命令进行子图调优、算子调优的基本方法。在调优前，您需要先参见《AOE调优工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/aoe/auxiliarydevtool_aoe_0001.html)》准备好环境、了解使用约束以及基本的参数使用方法。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/programug/acldevg/aclcppdevg_000110.html
sourcePath: /source/zh/canncommercial/900/programug/acldevg/aclcppdevg_000110.html
indexId: f5e56de2308abbabecad5c447e72ae25a5e1a696704bf826fa74197647e8f5a970
---
# 使用AOE工具调优模型

本节介绍推理场景下使用aoe命令进行子图调优、算子调优的基本方法。在调优前，您需要先参见《AOE调优工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/aoe/auxiliarydevtool_aoe_0001.html)》准备好环境、了解使用约束以及基本的参数使用方法。

使用aoe命令调优时，会生成：适配AI处理器的om模型文件、基于AI处理器的调优知识库、调优效果文件（通过效果文件可查阅模型中各算子的性能提升率）。由于生成om模型文件，所以aoe命令是包含模型转换的功能，因此aoe命令的参数，一般来说，是在atc命令参数的基础上增加了--job_type参数，增加子图调优、算子调优的功能。一般建议先进行子图调优，再进行算子调优，原因是：先进行子图调优会生成图的切分方式，子图调优后算子已经被切分成最终的shape了，再进行算子调优，会基于这个最终shape去做算子调优。如果优先算子调优，这时调优的算子shape不是最终切分后的算子shape，可能会影响最终的调优效果。

#### 操作步骤

1. 使用aoe命令依次执行子图调优、算子调优。

  - 子图调优命令示例如下所示：

```
aoe --model=${HOME}/module/resnet50_pytorch_1.4.onnx --framework=5
--job_type=1
```


  - 算子调优命令示例如下所示：

```
aoe --model=${HOME}/module/resnet50_pytorch_1.4.onnx --framework=5
--job_type=2
```


2. 查看调优结果。
执行调优结果如下所示，代表调优完成并且性能有提升。调优后，同时生成自定义知识库、om模型文件以及调优效果文件。

```
<xxxx> process finished. Performance improved by xx%    //xxxx：调优任务名称,xx%：性能提升的比例。
```

调优结果文件如下：

  - 基于AI处理器的调优知识库

    - 针对子图调优，默认存储到${HOME}/Ascend/latest/data/aoe/custom/graph/${soc_version}目录下。
    - 针对算子调优，默认存储到${HOME}/Ascend/latest/data/aoe/custom/op/${soc_version}路径下。
  - 适配AI处理器的om模型文件
    调优后的om模型默认存放在执行aoe命令的当前目录下，具体路径如下：${model_name}_${timestamp}/tunespace/result/${model_name}_${timestamp}_tune.om（或者${model_name}_${timestamp}_tune_${os}_${arch}.om）。

  - 调优效果文件
    执行aoe命令的当前目录下生成命名为“aoe_result_opat_{timestamp}_{pidxxx}.json”的文件，记录调优过程中被调优的算子信息。

    json文件中的内容片段示例如下：

```
{
"op_name": "Conv_125",
"op_type": "Conv2D",
"tune_performance": {
"Schedule": {
"performance_after_tune(us)": 72.046,
"performance_before_tune(us)": 72.055,
"performance_improvement": "0.01%",
"update_mode": "add"
}
}
}
```


3. 指定调优知识库，再执行模型推理。

  a. 设置TUNE_BANK_PATH环境变量，指定为AOE调优后的自定义知识库存放路径，该路径下的graph目录下为子图调优知识库、op目录下为算子调优知识库。示例如下：

```
export TUNE_BANK_PATH=/home/HwHiAiUser/custom
```


  b. 模型推理。
    使用1中执行算子调优命令生成的om模型文件，执行模型推理。

    支持“一次AOE调优+多次ATC模型转换”的场景，使用AOE工具调优模型后，若由于其它业务需求需要重新转换模型，可通过环境变量指定AOE调优知识库的路径，再使用ATC工具重新转换模型，这样就可以基于知识库中的调优策略编译模型、转换出调优后的模型。
