--auto_tune_mode
功能说明
设置算子的自动调优模式:控制TBE算子编译时,是否对算子进行调优,以便在昇腾AI处理器上寻找最好的性能配置。
关于Auto Tune工具的原理,支持调优的算子以及详细使用请参见《CANN 开发工具指南》中的“Auto Tune工具使用指南”章节。
关联参数
该参数不能与--op_bank_path参数同时使用。
参数取值
参数值:
- GA(Genetic Algorithm):遗传算法,用于设置Cube算子的调优性能。
- RL(Reinforcement Learning):强化学习,用于设置Vector算子的调优性能。
参数值格式:支持配置多种模式,多种模式放在双引号中,中间用英文逗号分隔,例如"RL,GA"。
推荐配置及收益
使用ATC工具进行模型转换时,如果使能该参数,则模型转换时间会比不使能长(通常一个算子大约需要20分钟左右,具体时间和网络模型大小相关),但使用转换后的离线模型进行推理,性能会优于不调优的离线模型。
示例
--auto_tune_mode="RL,GA"
- GA调优:
- 内置知识库以及cost model路径:
${INSTALL_DIR}/opp/data/tiling/<soc_version>/built-in/:负责存储常用shape调优后的知识库和cost model,如果网络模型中某个shape没有命中内置知识库,则会发起调优。
- 自定义知识库默认路径:
${HOME}/ascend/latest/data/aoe/custom/op/<soc_version>/cube:用于存放调优过程中生成的知识库。如果该路径已经有知识库,则对该知识库进行追加;如果当前路径没有知识库,则新建知识库。该路径安装完CANN软件包后默认不存在,会在首次执行调优时自动创建。
该路径为默认路径,用户也可以通过设置“TUNE_BANK_PATH”环境变量,指定调优后自定义知识库的存储路径。
- 内置知识库以及cost model路径:
- RL调优:
- 内置知识库路径:
${INSTALL_DIR}/opp/data/rl/<soc_version>/built-in/:负责存储常用shape调优后的知识库。
- 自定义知识库默认路径:
${HOME}/ascend/latest/data/aoe/custom/op/<soc_version>/vector:用于存放调优过程中调优性能优于built-in或built-in中没有的知识库。该路径安装完CANN软件包后默认不存在,会在首次执行调优时自动创建。
该路径为默认路径,用户也可以通过设置“TUNE_BANK_PATH”环境变量,指定调优后自定义知识库的存储路径。
- 内置知识库路径:
支持的芯片型号
Atlas 200/300/500 推理产品
Atlas 训练系列产品
使用约束
- 环境变量设置:
使用该功能时,只支持带NPU设备的安装场景,详细介绍请参见《CANN 软件安装指南》>常见部署场景推荐。
CANN软件包安装完成后,请以CANN软件包运行用户,执行如下命令使环境变量生效:source ${INSTALL_DIR}/bin/setenv.bash
- 指定调优后自定义知识库的存储路径:
若配置此环境变量,则:
- GA调优后的策略存储在配置路径的<soc_version>/ga目录下,调优脚本会自动在配置的TUNE_BANK_PATH路径下创建<soc_version>/ga两级目录。
例如TUNE_BANK_PATH=/home/username/custom_tune_bank,则GA调优后的最优策略存入/home/username/custom_tune_bank/<soc_version>/ga目录中。
- RL调优后的策略存储在配置路径的<soc_version>/rl目录下,调优脚本会自动在配置的TUNE_BANK_PATH路径下创建<soc_version>/rl两级目录。
例如TUNE_BANK_PATH=/home/username/custom_tune_bank,则RL调优后的最优策略存入/home/username/custom_tune_bank/<soc_version>/rl目录中。
路径支持绝对路径或相对于执行Auto Tune工具所在路径的相对路径,配置的路径需要为已存在的目录,且执行用户具有读、写、可执行权限。
若调优时指定了自定义知识库路径,后续进行模型转换时,若想直接使用指定的自定义知识库,也需要配置上此环境变量。
例如指定调优后自定义知识库存储路径为/home/username/custom_tune_bank/<soc_version>/ga,则使用ATC工具进行模型转换前需要配置如下环境变量(该场景下用户无需再次开启Auto Tune功能):
export TUNE_BANK_PATH=/home/username/custom_tune_bank
- GA调优后的策略存储在配置路径的<soc_version>/ga目录下,调优脚本会自动在配置的TUNE_BANK_PATH路径下创建<soc_version>/ga两级目录。
- 强制调优:
- 指定层调优:使用ATC工具进行Auto Tune在线调优时(基于DUMP数据离线调优不支持该场景),可以通过设置如下环境变量,对指定层进行调优。
export TUNE_OPS_NAME=conv_layers/Pad_1
某些场景下,例如在对网络进行Profiling性能分析后,发现某个算子性能较低,则可以通过设置上述环境变量,对性能较低的算子单独进行调优。
OPS_NAME配置为网络模型中需要调优的节点的name,可配置为原始网络模型中的OP Name或者配置为经过GE/FE处理过的适配昇腾AI处理器的网络模型中的节点的OP Name(此OP Name可从Profiling调优数据中获取,详细可参见《CANN 开发工具指南》中的“Profiling工具使用指南”章节)。若指定多个节点,则使用英文逗号分隔。
如果指定算子已经调优过,即在custom路径已经有调优过的知识库,用户想重新发起该算子的调优,则需要同时设置如下两个环境变量:
export REPEAT_TUNE=True export TUNE_OPS_NAME=conv_layers/Pad_1
- 开启Auto Tune时,由于上板评估需要申请内存,内存占用相比ATC工具要大,额外的内存占用大小与同时使用的device设备数有关,可近似估算为:2*device数量*输入数据大小。如果内存超过ATC运行内存大小,则会导致调优失败。
- 使用Auto Tune工具进行GA模式调优时,需要独占Device资源,不可以进行使用Device资源的其他操作,请将其他进程停止后,重新进行调优,否则将会出现未知异常(例如 run.o.failed)。如果Host有编译业务执行,则会影响调优时长。
- 当前在同一个开发环境上允许开启多个ATC进程同时调优,多进程并行在一定范围内会提升调优效率,但由于资源的限制,达到一定峰值后调优效率会随着进程数的增多下降,ATC进程数配置建议满足如下规则:
- ATC进程数 * TE_PARALLEL_COMPILER * 2 < Host侧CPU核数。 其中TE_PARALLEL_COMPILER代表算子并行编译进程数。
- TBE算子并行编译场景下(即TE_PARALLEL_COMPILER>1),建议一个ATC进程对应一个Device。