---
title: 训练执行（通过rank table配置资源信息）
description: "开发者可以通过rank table文件配置参与集合通信的NPU资源信息，并在后续启动训练进程时指定使用的NPU资源。"
url: https://www.hiascend.com/document/detail/zh/TensorFlowCommercial/latest/migration/tfmigr1/tfmigr1_000031.html
sourcePath: /source/zh/TensorFlowCommercial/900/migration/tfmigr1/tfmigr1_000031.html
indexId: b6864e8ea66f43b417eaaa18f77dea691b8749f7d611fd2c32da1ce9f4f4b3b773
---
# 训练执行（通过rank table配置资源信息）

开发者可以通过rank table文件配置参与集合通信的NPU资源信息，并在后续启动训练进程时指定使用的NPU资源。

#### 前提条件

- 已了解  使用前须知
。
- 已准备好迁移成功的TensorFlow训练脚本和对应数据集。
- 多Device上执行训练时，请确保不同Device上执行的模型相同，否则业务会执行失败，详细可参见  多Device上执行模型不同导致应用程序出错
。


#### 准备rank table资源配置文件

rank table为JSON格式，记录了参与集合通信的所有NPU信息，开发者可以参见《HCCL集合通信库(https://www.hiascend.com/document/detail/zh/canncommercial/900/API/hcclug/hcclug_000001.html)》中的“相关参考 > 集群信息配置”章节准备rank table资源配置文件。


#### 单机多卡场景

多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 17 # 配置CANN软件环境变量，以root用户默认安装路径为例 source /usr/local/Ascend/cann/set_env.sh # TF Adapter Python库，其中${TFPLUGIN_INSTALL_PATH}为TF Adapter软件包安装路径 export PYTHONPATH=${TFPLUGIN_INSTALL_PATH}:$PYTHONPATH export RANK_SIZE=8 export RANK_TABLE_FILE=/home/test/rank_table_8p.json # rank table资源配置文件路径，请根据实际情况替换 export JOB_ID=10087 # 用户自定义，指定任务ID，可以包含大小写字母、数字、中划线或下划线 for((RANK_ID=0;RANK_ID<$((RANK_SIZE));RANK_ID++)); do export RANK_ID=$RANK_ID export ASCEND_DEVICE_ID=$RANK_ID # 执行训练脚本，训练脚本路径、名称及其他输入参数请根据实际情况替换 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的使用约束以及落盘文件说明，可参见《环境变量参考(https://www.hiascend.com/document/detail/zh/canncommercial/900/maintenref/envvar/envref_07_0001.html)》中的“安装配置相关”章节。

    配置这些环境变量前，请使用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 29 30 31 32 # 配置CANN软件环境变量，以root用户默认安装路径为例 source /usr/local/Ascend/cann/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#*=}` elif [[ $para == --servers_num* ]];then servers_num=`echo ${para#*=}` fi done rank_size=${devices_num} linux_num=$servers_num export RANK_SIZE=`awk 'BEGIN{printf "%.0f\n",'${devices_num}'*'${linux_num}'}'` export RANK_TABLE_FILE=/home/test/rank_table.json # rank table资源配置文件路径，请根据实际情况替换 export JOB_ID=10087 # 用户自定义，指定任务ID，可以包含大小写字母、数字、中划线或下划线 for((RANK_ID=$((rank_size*server_index));RANK_ID<$((((server_index+1))*rank_size));RANK_ID++)); do #设置环境变量 export RANK_ID=$RANK_ID export ASCEND_DEVICE_ID=`expr ${RANK_ID} - $((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的使用约束以及落盘文件说明，可参见《环境变量参考(https://www.hiascend.com/document/detail/zh/canncommercial/900/maintenref/envvar/envref_07_0001.html)》中的“安装配置相关”章节。

    配置这些环境变量前，请使用env命令查询ASCEND_CACHE_PATH与ASCEND_WORK_PATH环境变量是否已存在，建议系统各功能使用统一的规划路径。


2. 执行脚本，启动训练进程。
  1 2 3 4 # 启动节点0上的训练进程 bash tf_start_16p.sh --server_index=0 --devices_num=8 --servers_num=2 # 启动节点1上的训练进程 bash tf_start_16p.sh --server_index=1 --devices_num=8 --servers_num=2
