执行单Device训练
概述
本节介绍如何基于迁移好的TensorFlow训练脚本,在单Device上执行训练。如果没有进行模型迁移,您也可以从https://gitee.com/ascend/modelzoo获取已经迁移适配好的训练脚本,直接体验训练过程。
一个Device对应执行一个训练进程,当前不支持多进程在同一个Device上进行训练。
前提条件
- 已根据环境准备章节准备好包含1个可用的昇腾AI处理器的基础软硬件环境,或者包含TensorFlow相关模块的Ascend基础镜像。
- 已准备迁移好的TensorFlow训练脚本和对应数据集。
- 如果训练脚本中使用了HCCL集合通信接口,执行训练前需要配置Device资源信息。可以通过配置文件(ranktable文件)的方式或者环境变量的方式进行配置,由于是单Device训练,所以仅配置当前一个Device资源即可,然后启动训练进程,本章节不对此场景的执行步骤展开介绍,详细可参考执行分布式训练。
需要注意,此种场景下,若通过ranktable文件方式配置资源信息,分布式环境变量“RANK_ID”固定配置为“0”, “RANK_SIZE”固定配置为“1”即可。
在单Device上执行训练
- 配置启动训练进程依赖的环境变量。除此之外,还需进行如下配置:
# 请依据实际在下列场景中选择一个进行训练依赖包安装路径的环境变量设置。具体如下(以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 # 添加当前脚本所在路径到PYTHONPATH,例如: export PYTHONPATH="$PYTHONPATH:/root/models" export JOB_ID=10086 # 训练任务ID,用户自定义,仅支持大小写字母,数字,中划线,下划线。不建议使用以0开始的纯数字 export ASCEND_DEVICE_ID=0 # 指定昇腾AI处理器的逻辑ID,单卡训练也可不配置,默认为0,在0卡执行训练
若训练所在系统环境需要升级gcc(例如CentOS、Debian和BClinux系统),则“LD_LIBRARY_PATH”配置项处动态库查找路径需要添加“${install_path}/lib64”,其中“{install_path}”为gcc升级安装路径。请参见5。
- (可选)为了后续方便定位问题,拉起训练脚本前用户也可以通过环境变量使能Dump计算图。
export DUMP_GE_GRAPH = 2 # 1:全量dump;2:不含有权重等数据的基本版dump;3:只显示节点关系的精简版dump export DUMP_GRAPH_PATH = /home/dumpgraph # 默认dump图生成在脚本执行目录,可以通过该环境变量指定dump路径
训练任务启动后,会在DUMP_GRAPH_PATH指定的路径下生成若干dump图文件,包括”.pbtxt”和“.txt”dump文件。由于dump的数据文件较多且文件都较大,若非问题定位需要,可以不生成dump图。
- 执行训练脚本拉起训练进程,例如:
python3 /home/xxx.py
检查执行结果
问题定位
如果运行失败,通过日志分析并定位问题。
Host侧日志路径:$HOME/ascend/log/run/plog/plog-pid_*.log,$HOME为Host侧用户根目录。
Device侧日志路径:$HOME/ascend/log/run/device-id/device-pid_*.log。
[Level] ModuleName(PID,PName):DateTimeMS [FileName:LineNumber]LogContent
一般通过ERROR级别的日志,识别问题产生模块,根据具体日志内容判定问题产生原因。
ModuleName |
出错流程 |
解决思路 |
---|---|---|
系统类报错 |
环境与版本配套错误 |
系统类报错,优先排查版本配套与系统安装是否正确。 |
GE |
GE图编译或校验问题 |
校验类报错,通常会给出明确的错误原因,此时需要针对性地修改网络脚本,以满足相关要求。 |
RUNTIME |
环境异常导致初始化问题或图执行问题 |
对于初始化异常,优先排查当前运行环境配置是否正确,当前环境是否有他人抢占。 |