---
title: 通过修改训练脚本配置调优模式（TensorFlow 2.6）
description: "- 除了通过AOE_MODE环境变量配置调优模式之外，还可以通过修改训练脚本方式，配置调优模式。同时配置的情况下，通过修改训练脚本方式优先生效。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/aoe/aoepar_16_075.html
sourcePath: /source/zh/canncommercial/900/devaids/aoe/aoepar_16_075.html
indexId: d7a51fdab4190cf3657df52951d53e5137a1ca4ff35a08796e7094bf4ba9398b60
---
# 通过修改训练脚本配置调优模式（TensorFlow 2.6）

#### 使用前须知

- 除了通过AOE_MODE环境变量配置调优模式之外，还可以通过修改训练脚本方式，配置调优模式。同时配置的情况下，通过修改训练脚本方式优先生效。
- TensorFlow 2.6中提供compat.v1模块用于兼容TensorFlow 1.x中的API，即可以在TensorFlow 2.6中使用1.x版本的API。在实际场景中，存在部分TensorFlow 2.6脚本以tf.compat.v1形式调用TensorFlow 1.x API的情况，该场景下的调优步骤请参考  通过修改训练脚本配置调优模式（TensorFlow 1.15）
。


#### 操作步骤

1. 修改训练脚本，通过如下参数使能AOE调优。
**表1 相关参数解释**

| 参数 | 说明 |
| --- | --- |
| aoe\_config.aoe\_mode | 必选参数。通过AOE工具进行调优的调优模式。 1：子图调优。 2：算子调优。 4：梯度切分调优。 在数据并行的场景下，使用allreduce对梯度进行聚合，梯度的切分方式与分布式训练性能强相关，切分不合理会导致反向计算结束后存在较长的通信拖尾时间，影响集群训练的性能和线性度。用户可以通过集合通信的梯度切分接口（set\_split\_strategy\_by\_idx或set\_split\_strategy\_by\_size）进行人工调优，但难度较高。因此，可以通过工具实现搜索切分策略，通过在实际环境预跑采集性能数据，搜索不同的切分策略，理论评估出最优策略输出给用户，用户拿到最优策略后通过set\_split\_strategy\_by\_idx接口设置到该网络中。 说明： 通过修改训练脚本和AOE\_MODE环境变量都可配置调优模式，同时配置的情况下，通过修改训练脚本方式优先生效。 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 场景下，AOE\_MODE取值仅支持2和4。 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 场景下，AOE\_MODE取值仅支持2。 配置示例： npu.global\_options().aoe\_config.aoe\_mode="1" |
| aoe\_config.work\_path | 可选参数。AOE工具调优工作目录，存放调优配置文件和调优结果文件，默认生成在训练当前目录下。 该参数类型为字符串，指定的目录需要在启动训练的环境上（容器或Host侧）提前创建且确保安装时配置的运行用户具有读写权限，支持配置绝对路径或相对路径（相对执行命令行时的当前路径）。 绝对路径配置以“/”开头，例如：/home/HwHiAiUser/output。 相对路径配置直接以目录名开始，例如：output。 配置示例： npu.global\_options().aoe\_config.work\_path = "/home/HwHiAiUser/output" |
| aoe\_config.aoe\_config\_file | 可选参数。 通过配置文件可以实现如下功能： 指定算子名称或者算子类型，对指定的算子进行调优。支持指定的算子范围请参见算子列表。对于不在算子列表范围内的算子，不支持调优。该参数使用的场景举例如下： 在对网络进行Profiling性能分析后，可通过此参数指定对某个性能较低的算子进行调优。 可配置为经过GE/FE处理过的适配AI处理器的网络模型中的节点的OP Name/OP Type（此OP Name/OP Type可从Profiling调优数据中获取，详细可参见《性能调优工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/Profiling/atlasprofiling\_16\_0144.html)》）。 配置不同的模式调优，包括高性能模式和正常模式。 指定调优功能特性开关，当前包括算子深度调优和算子format调优。 配置示例： npu.global\_options().aoe\_config.aoe\_config\_file="/home/HwHiAiUser/cfg/tuning\_config.cfg" 文件后缀不局限于.cfg格式，文件内容须为json格式的文本，文件个数只支持单个。 /home/HwHiAiUser/cfg/tuning\_config.cfg中配置的是需要进行调优的算子信息、调优模式、指定的调优功能。路径和.cfg文件的名字请根据实际情况修改。tuning\_config.cfg包括的内容格式如下。 { "tune\_ops\_name":["bert/embeddings/addbert/embeddings/add\_1","loss/MatMul"], "tune\_ops\_type":["Add", "Mul"] "tune\_optimization\_level":"O1", "feature":["deeper\_opat,op\_format"] } tune\_ops\_name：指定的算子名称，当前实现是支持全字匹配，可以指定一个，也可以指定多个，指定多个时需要用英文逗号分隔。 tune\_ops\_type：指定的算子类型，当前实现是支持全字匹配，可以指定一个，也可以指定多个，指定多个时需要用英文逗号分隔。如果有融合算子包括了该算子类型，则该融合算子也会被调优。 tune\_optimization\_level：调优模式，取值为O1表示高性能调优模式，取值为O2表示正常模式。更多介绍请参考\-\-tune\_optimization\_level feature：调优功能特性开关，支持多个功能，用英文逗号分割。当前支持如下： deeper\_opat：算子深度调优。取值为deeper\_opat，表示开启算子深度调优，aoe\_config.aoe\_mode需要配置为2。更多介绍请参见\-\-Fdeeper\_opat。 op\_format：算子format调优。aoe\_config.aoe\_mode需要配置为2，更多介绍请参见\-\-Fop\_format。 说明： 如上配置文件的内容必须放在"{}"中，tune\_ops\_type、tune\_ops\_name和feature的配置内容必须放在"[]"中。 tune\_ops\_type和tune\_ops\_name可以同时存在，同时存在时取并集，也可以只存在某一个。 |


  代码示例： 1 2 3 4 import npu_device as npu npu.global_options().aoe_config.aoe_mode="1" npu.global_options().aoe_config.work_path = "/home/HwHiAiUser/output" npu.open().as_default()

2. 执行训练。
