本节介绍如何基于迁移好的TensorFlow训练脚本,在裸机环境的多个Device上执行训练。
使用前须知:
{ "server_count":"1", "server_list": [ { "device":[ { "device_id":"0", "device_ip":"192.168.1.8", "rank_id":"0" }, { "device_id":"1", "device_ip":"192.168.1.9", // 两个Device需要处于同一网段,0卡和1卡为同一网段 "rank_id":"1" } ], "server_id":"10.0.0.10" } ], "status":"completed", "version":"1.0" }
配置文件的详细介绍请参考准备昇腾AI处理器资源配置文件。
用户也可以在此处配置全量的昇腾AI处理器资源信息,后续训练进程启动时仅使用其中的指定的几个昇腾AI处理器资源。
在多个Device上进行分布式训练时,需要依次拉起所有训练进程,下面以单机两个Device的训练场景举例介绍如何拉起各训练进程。
用户可以在不同的shell窗口依次拉起不同的训练进程。
安装CANN软件后,使用CANN运行用户编译、运行时,需要以CANN运行用户登录环境,执行. ${install_path}/set_env.sh命令设置环境变量。并进行如下配置:
# 请依据实际在下列场景中选择一个训练依赖包安装路径的环境变量设置(以HwHiAiUser安装用户为例)。 # 场景一:昇腾设备安装部署开发套件包Ascend-cann-toolkit(此时开发环境可进行训练任务)。 . /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh # 场景二:昇腾设备安装部署软件包Ascend-cann-nnae。 . /home/HwHiAiUser/Ascend/nnae/set_env.sh # tfplugin包依赖。 . /home/HwHiAiUser/Ascend/tfplugin/set_env.sh # 若运行环境中存在多个python3版本时,需要在环境变量中配置python的安装路径。如下配置以安装python3.7.5为例,可根据实际修改。 export PATH=/usr/local/python3.7.5/bin:$PATH export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH # 当前脚本所在路径,例如: export PYTHONPATH=/home/test:$PYTHONPATH export JOB_ID=10086 export ASCEND_DEVICE_ID=0 export RANK_ID=0 export RANK_SIZE=2 export RANK_TABLE_FILE=/home/test/rank_table_2p.json python3 /home/xxx.py
安装CANN软件后,使用CANN运行用户编译、运行时,需要以CANN运行用户登录环境,执行. ${install_path}/set_env.sh命令设置环境变量。并进行如下配置:
export PYTHONPATH=/home/test:$PYTHONPATH
export JOB_ID=10086
export ASCEND_DEVICE_ID=1
export RANK_ID=1
export RANK_SIZE=2
export RANK_TABLE_FILE=/home/test/rank_table_2p.json
python3 /home/xxx.py
不同的训练脚本打印结果不同,若执行分布式训练的每个Device出现类似如下打印信息,说明训练任务已经正常结束。
当开启环境变量DUMP_GE_GRAPH时,会生成GE的dump图文件。
export DUMP_GE_GRAPH=2
在dump下来的图文件目录下,搜索到包含HcomBroadcast和HcomAllReduce算子,代表正常插入了NPU间通信的HCCL算子。