本节介绍TensorFlow训练场景下,如何进行梯度调优,包括调优前须知、配置环境变量、调优命令和注意事项。
CANN组合包提供进程级环境变量设置脚本,供用户在进程中引用,以自动完成环境变量设置。执行命令参考如下,以下示例均为root或非root用户默认安装路径,请以实际安装路径为准。
# 以root用户安装toolkit包 . /usr/local/Ascend/ascend-toolkit/set_env.sh # 以非root用户安装toolkit包 . ${HOME}/Ascend/ascend-toolkit/set_env.sh
#用于设置python3.7.5库文件路径 export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH #如果用户环境存在多个python3版本,则指定使用python3.7.5版本 export PATH=/usr/local/python3.7.5/bin:$PATH
Python3.7.5安装路径请根据实际情况进行替换,您也可以将以上命令写入~/.bashrc文件中,然后执行source ~/.bashrc命令使其立即生效。
# 调优模式,指定为4:GDAT调优,必选配置 export AOE_MODE=4 # 指定调优后自定义知识库的存储路径,可选配置 export TUNE_BANK_PATH=/home/HwHiAiUser/custom_tune_bank
环境变量 |
说明 |
可选/必选 |
---|---|---|
AOE_MODE |
调优模式,支持取值为4(GDAT调优)。 |
必选 |
TUNE_BANK_PATH |
可通过此环境变量指定调优后自定义知识库的存储路径。
设置的存储路径必须为绝对路径或相对于执行AOE调优引擎所在路径的相对路径,配置的路径需要为已存在的目录,且执行用户具有读、写、可执行权限。若配置的TUNE_BANK_PATH路径不存在或用户无权限,则调优进程会报错并退出。
说明:
在多用户共享知识库场景下,共享知识库的用户需要设置TUNE_BANK_PATH为同一路径,并且对配置的路径具有读、写权限。 若调优时自定义了知识库路径,后续进行模型转换时,若想直接使用自定义知识库,也需要配置上此环境变量。 |
可选 |
用户可将设置环境变量的命令写入自定义脚本,方便后续执行。
可检查脚本中是否存在以下两种设置方法中任意一项:
from npu_bridge.hccl import hccl_ops from npu_bridge.npu_init import * if get_npu_rank_size() > 0: result = hccl_ops.allreduce(tensor, "sum")
from npu_bridge.estimator.npu.npu_optimizer import NPUOtimizer from npu_bridge.npu_init import * #定义优化器 optimizer = LAMBOptimizer(......) optimizer = NPUOptimizer(optimizer,is_distributed=true)
以Resnet50_HC在device 0上为例,命令修改方式如下。
“for((RANK_ID_n=$RANK_ID_START;RANK_ID_n<$((RANK_SIZE+RANK_ID_START));RANK_ID_n++))”
修改为:
for((RANK_ID_n=$RANK_ID_START;RANK_ID_n<$((1+RANK_ID_START));RANK_ID_n++))
# TFAdapter开启调优 in tune mode, training graph handled by tools # 工具启动调优 Aoe tuning graph.
生成的自定义知识库,会存储到TUNE_BANK_PATH环境变量中指定的路径。若不设置此配置选项,默认存储到${HOME}/Ascend/latest/data/aoe/custom/graph/${soc_version}目录下。如何使用调优后的自定义知识库请参见如何使用调优后的自定义知识库。
Use fusion library value
from hccl.split.api import set_split_strategy_by_idx set_split_strategy_by_idx([118,159,160])