文档
注册

通过修改训练脚本配置调优模式(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训练系列产品场景下,不支持子图调优。

    配置示例:

    1
    npu.global_options().aoe_config.aoe_mode="1"
    

    aoe_config.work_path

    可选参数。AOE工具调优工作目录,存放调优配置文件和调优结果文件,默认生成在训练当前目录下。

    该参数类型为字符串,指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。

    • 绝对路径配置以“/”开头,例如:/home/HwHiAiUser/output。
    • 相对路径配置直接以目录名开始,例如:output。

    配置示例:

    1
    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调优数据中获取,详细可参见性能分析工具使用指南)。

    • 配置不同的模式调优,包括高性能模式和正常模式。
    • 指定调优功能特性开关,当前包括算子深度调优和算子format调优。

    配置示例:

    1
    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包括的内容格式如下。

    1
    2
    3
    4
    5
    6
    {
           "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. 执行训练。
搜索结果
找到“0”个结果

当前产品无相关内容

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