本节介绍如何基于迁移好的TensorFlow训练脚本,在单Device上执行训练。如果没有进行模型迁移,您也可以从https://gitee.com/ascend/modelzoo获取已经迁移适配好的训练脚本,直接体验训练过程。
一个Device对应执行一个训练进程,当前不支持多进程在同一个Device上进行训练。
需要注意,此种场景下,若通过ranktable文件方式配置资源信息,分布式环境变量“RANK_ID”固定配置为“0”, “RANK_SIZE”固定配置为“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 # 添加当前脚本所在路径到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。
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 |
环境异常导致初始化问题或图执行问题 |
对于初始化异常,优先排查当前运行环境配置是否正确,当前环境是否有他人抢占。 |