执行训练
通过环境变量方式配置好参与分布式训练的资源信息后,可参考本节启动训练进程,执行训练。
前提条件
- 已了解使用前须知。
- 已准备好迁移好的TensorFlow训练脚本和对应数据集。
- 已在每个参与训练的Device上完成资源信息环境变量的配置,请参考通过环境变量配置资源信息。
- 多Device上执行训练时,请确保不同Device上执行的模型相同,否则业务会执行失败,详细可参见多Device上执行模型不同导致应用程序出错。
单机多卡场景
多Device上执行训练时,需要依次在每个参与训练的Device上启动训练进程。
假设只有一个AI Server节点,节点上有8个Device,开发者可以构造启动脚本循环启动每个Device上的训练进程。
- 构造启动脚本,假设命名为tf_start_8p.sh,示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# 请依据实际在下列场景中选择一个进行训练依赖包安装路径的环境变量设置。具体如下(以HwHiAiUser安装用户为例): # 场景一:昇腾设备安装部署开发套件包Ascend-cann-toolkit(此时开发环境可进行训练任务)。 . /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh # 场景二:昇腾设备安装部署软件包Ascend-cann-nnae。 . /home/HwHiAiUser/Ascend/nnae/set_env.sh # TF Adapter Python库,其中${TFPLUGIN_INSTALL_PATH}为TF Adapter软件包安装路径。 export PYTHONPATH=${TFPLUGIN_INSTALL_PATH}:$PYTHONPATH export JOB_ID=10087 # 用户自定义,指定任务ID,可以包含大小写字母、数字、中划线或下划线 for((CURRENT_DEVICE=0;CURRENT_DEVICE<8;CURRENT_DEVICE++)); do export ASCEND_DEVICE_ID=${CURRENT_DEVICE} # 执行训练脚本,训练脚本路径、名称及其他输入参数请根据实际情况替换 nohup python3 /home/test/main.py > /home/test/train_$ASCEND_DEVICE_ID.log 2>&1 & done
(可选)训练进程启动前,您还可以配置如下辅助功能的环境变量。- 为了后续方便定位问题,启动训练脚本前用户也可以通过环境变量使能Dump计算图。
1 2
export DUMP_GE_GRAPH=2 # 1:全量dump;2:不含有权重等数据的基本版dump;3:只显示节点关系的精简版dump export DUMP_GRAPH_PATH=/home/dumpgraph # 通过该环境变量指定dump图文件存储路径
训练任务启动后,会在${DUMP_GRAPH_PATH}/pid_${pid}_deviceid_${deviceid}路径下生成若干dump图文件,包括后缀为“.pbtxt”和“.txt”的dump文件。由于dump的数据文件较多且文件都较大,若非问题定位需要,可以不生成dump图。
- 若开发者期望程序编译运行过程中产生的文件落盘到归一目录,可通过环境变量ASCEND_CACHE_PATH与ASCEND_WORK_PATH分别设置共享文件的存储路径与进程独享文件的存储路径。
1 2
export ASCEND_CACHE_PATH=/repo/task001/cache export ASCEND_WORK_PATH=/repo/task001/172.16.1.12_01_03
关于环境变量ASCEND_CACHE_PATH与ASCEND_WORK_PATH的使用约束以及落盘文件说明,可参见《环境变量参考》中的“安装配置相关”章节。
- 配置此环境变量前,请使用env命令查询ASCEND_CACHE_PATH与ASCEND_WORK_PATH环境变量是否已存在,建议系统各功能使用统一的规划路径。
- 为了后续方便定位问题,启动训练脚本前用户也可以通过环境变量使能Dump计算图。
- 执行脚本,启动训练进程。
1
bash tf_start_8p.sh
多机多卡场景
多Device上执行训练时,需要依次在每个参与训练的Device上启动训练进程。
假设参与分布式训练的AI Server节点数量为2,每个AI Server节点有8个Device,开发者可以参见如下步骤构造启动脚本,循环启动每个Device上的训练进程。
- 构造启动脚本,假设命名为tf_start_16p.sh,示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
# 请依据实际在下列场景中选择一个进行训练依赖包安装路径的环境变量设置。具体如下(以HwHiAiUser安装用户为例): # 场景一:昇腾设备安装部署开发套件包Ascend-cann-toolkit(此时开发环境可进行训练任务)。 . /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh # 场景二:昇腾设备安装部署软件包Ascend-cann-nnae。 . /home/HwHiAiUser/Ascend/nnae/set_env.sh # TF Adapter Python库,其中${TFPLUGIN_INSTALL_PATH}为TF Adapter软件包安装路径。 export PYTHONPATH=${TFPLUGIN_INSTALL_PATH}:$PYTHONPATH # 获取输入参数 for para in $* do if [[ $para == --server_index* ]];then server_index=`echo ${para#*=}` elif [[ $para == --devices_num* ]];then devices_num=`echo ${para#*=}` fi done rank_size=${devices_num} linux_num=$servers_num export JOB_ID=10087 # 用户自定义,指定任务ID,可以包含大小写字母、数字、中划线或下划线 for((CURRENT_DEVICE=$((rank_size*server_index));CURRENT_DEVICE<$((((server_index+1))*rank_size));CURRENT_DEVICE++)); do export ASCEND_DEVICE_ID=`expr ${CURRENT_DEVICE} - $((rank_size*server_index))` # 执行训练脚本,训练脚本路径、名称及其他输入参数请根据实际情况替换 nohup python3 /home/test/main.py > /home/test/train_$ASCEND_DEVICE_ID.log 2>&1 & done
(可选)训练进程启动前,您还可以配置如下辅助功能的环境变量。- 为了后续方便定位问题,启动训练脚本前用户也可以通过环境变量使能Dump计算图。
1 2
export DUMP_GE_GRAPH=2 # 1:全量dump;2:不含有权重等数据的基本版dump;3:只显示节点关系的精简版dump export DUMP_GRAPH_PATH=/home/dumpgraph # 通过该环境变量指定dump图文件存储路径
训练任务启动后,会在${DUMP_GRAPH_PATH}/pid_${pid}_deviceid_${deviceid}路径下生成若干dump图文件,包括后缀为“.pbtxt”和“.txt”的dump文件。由于dump的数据文件较多且文件都较大,若非问题定位需要,可以不生成dump图。
- 若开发者期望程序编译运行过程中产生的文件落盘到归一目录,可通过环境变量ASCEND_CACHE_PATH与ASCEND_WORK_PATH分别设置共享文件的存储路径与进程独享文件的存储路径。
1 2
export ASCEND_CACHE_PATH=/repo/task001/cache export ASCEND_WORK_PATH=/repo/task001/172.16.1.12_01_03
关于环境变量ASCEND_CACHE_PATH与ASCEND_WORK_PATH的使用约束以及落盘文件说明,可参见《环境变量参考》中的“安装配置相关”章节。
- 配置此环境变量前,请使用env命令查询ASCEND_CACHE_PATH与ASCEND_WORK_PATH环境变量是否已存在,建议系统各功能使用统一的规划路径。
- 为了后续方便定位问题,启动训练脚本前用户也可以通过环境变量使能Dump计算图。
- 执行脚本,启动训练进程。
1 2 3 4
# 启动节点0上的训练进程 bash tf_start_16p.sh --server_index=0 --devices_num=8 # 启动节点1上的训练进程 bash tf_start_16p.sh --server_index=1 --devices_num=8
父主题: 训练执行(环境变量方式设置资源信息)