执行训练

通过环境变量方式配置好参与分布式训练的资源信息后,可参考本节拉起训练进程,执行训练。

前提条件

单机多卡场景

多Device上执行训练时,需要依次在每个参与训练的Device上拉起训练进程。

假设只有一个AI Server节点,节点上有8个Device,开发者可以构造启动脚本循环拉起每个Device上的训练进程。

  1. 构造启动脚本,假设命名为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}_${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环境变量是否已存在,建议系统各功能使用统一的规划路径。

  2. 执行启动脚本,拉起训练进程。

    1
    bash tf_start_8p.sh
    

多机多卡场景

多Device上执行训练时,需要依次在每个参与训练的Device上拉起训练进程。

假设参与分布式训练的AI Server节点数量为2,每个AI Server节点有8个Device,开发者可以参见如下步骤构造启动脚本,循环拉起每个Device上的训练进程。

  1. 构造启动脚本,假设命名为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}_${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环境变量是否已存在,建议系统各功能使用统一的规划路径。

  2. 执行启动脚本,拉起训练进程。

    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