执行训练
通过ranktable文件配置好参与分布式训练的资源信息后,可参考本节拉起训练进程,执行训练。
前提条件
- 已了解使用前须知。
- 已准备好迁移好的TensorFlow训练脚本和对应数据集。
- 已准备好昇腾AI处理器资源信息配置文件,请参考准备ranktable资源配置文件。
在多Device上执行训练
在多个Device上进行分布式训练时,需要依次在每个Device上拉起所有训练进程(用户可以在不同的shell窗口依次拉起不同的训练进程),下面以单机两个Device的训练场景举例介绍如何拉起各训练进程。
请确保不同Device上执行的模型相同,否则业务会执行失败,详细可参见多Device上执行模型不同导致应用程序出错。
- 拉起训练进程0。
- 配置启动训练进程依赖的环境变量。
# 请依据实际在下列场景中选择一个进行训练依赖包安装路径的环境变量设置。具体如下(以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 RANK_ID=0 export RANK_SIZE=2 export RANK_TABLE_FILE=/home/test/rank_table_2p.json
拉起训练进程前,需要对集群参数进行配置,其中集群参数相关的环境变量说明如下:
- RANK_SIZE:参与分布式训练的Device数量。
- RANK_ID:当前Device在集群中的唯一索引,需要与资源配置文件中的索引一致。
- RANK_TABLE_FILE:资源配置文件路径。
- (可选)配置辅助功能环境变量。
- 为了后续方便定位问题,拉起训练脚本前用户也可以通过环境变量使能Dump计算图。
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分别设置共享文件的存储路径与进程独享文件的存储路径。
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。
- 配置启动训练进程依赖的环境变量。
# 请依据实际在下列场景中选择一个进行训练依赖包安装路径的环境变量设置。具体如下(以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 RANK_ID=1 export RANK_SIZE=2 export RANK_TABLE_FILE=/home/test/rank_table_2p.json
拉起训练进程前,需要对集群参数进行配置,其中集群参数相关的环境变量说明如下:
- RANK_SIZE:参与分布式训练的Device数量。
- RANK_ID:当前Device在集群中的唯一索引,需要与资源配置文件中的索引一致。
- RANK_TABLE_FILE:资源配置文件路径。
- (可选)配置辅助功能环境变量。
- 为了后续方便定位问题,拉起训练脚本前用户也可以通过环境变量使能Dump计算图。
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分别设置共享文件的存储路径与进程独享文件的存储路径。
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计算图。
- 执行训练脚本拉起训练进程,例如:
- 除了以上方式,您还可以通过自定义启动脚本通过循环方式依次拉起多个训练进程,具体样例请参考链接。
- 若训练所在系统环境需要升级gcc(例如CentOS、Debian和BClinux系统),则此处动态库查找路径需要添加“${install_path}/lib64”,其中“{install_path}”为gcc升级安装路径。请参见安装7.3.0版本gcc。
- 配置启动训练进程依赖的环境变量。