迁移完成后
- 如果启用了distributed参数,迁移后需要根据Device指定的设备完成运行多卡脚本的特定操作。
- Device指定Ascend设备。
- 参见配置分布式环境变量配置生成的多卡环境的组网信息文件。
- 将run_distributed_ascend.sh文件中的“please input your shell script here”语句替换成模型原来的训练Python脚本执行命令。
#!/bin/bash echo "==============================================================================================================" echo "Please run the script as: " echo "bash run_distributed_ascend.sh RANK_TABLE_FILE RANK_SIZE RANK_START DEVICE_START" echo "For example: bash run_distributed_ascend.sh /path/rank_table.json 8 0 0" echo "It is better to use the absolute path." echo "==============================================================================================================" execute_path=$(pwd) echo "${execute_path}" export RANK_TABLE_FILE=$1 export RANK_SIZE=$2 RANK_START=$3 DEVICE_START=$4 for((i=0;i<RANK_SIZE;i++)); do export RANK_ID=$((i+RANK_START)) export DEVICE_ID=$((i+DEVICE_START)) rm -rf "${execute_path}"/device_$RANK_ID mkdir "${execute_path}"/device_$RANK_ID cd "${execute_path}"/device_$RANK_ID || exit "please input your shell script here" > train$RANK_ID.log 2>&1 & done
表1 参数说明 参数
说明
RANK_TABLE_FILE
多卡环境的组网信息文件。
RANK_SIZE
昇腾AI处理器的数量。
RANK_START
指定调用昇腾AI处理器的逻辑起始ID,当前仅支持单机多卡,填0即可。
DEVICE_START
指定调用昇腾AI处理器的物理起始ID。
该脚本会在工程路径下创建device_{RANK_ID}目录,在该目录内去执行网络脚本,所以替换训练Python脚本执行命令时要注意训练Python脚本相对路径的变化。
- 执行run_distributed_ascend.sh脚本以启动用户原工程。以8卡环境为例,命令如下。
bash run_distributed_ascend.sh RANK_TABLE_FILE RANK_SIZE RANK_START DEVICE_START
- Device指定Ascend设备。
- 如果启用了graph参数,需要把训练脚本中WithLossCell类的construct函数修改为只包括模型的前向计算和loss计算,具体修改请参见迁移后脚本中的“Transplant advice”。
- 由于转换后的脚本与原始脚本框架不一致,迁移后的脚本在调试运行过程中可能会由于MindSpore框架的某些限制而抛出异常,导致进程终止,该类异常需要用户根据异常信息进一步调试解决。
- 分析迁移后可以参考《MindStudio 用户指南》的“模型训练”章节进行训练。
父主题: X2MindSpore