执行单Device训练
本节介绍如何基于迁移好的TensorFlow训练脚本,在单Device上执行训练。
如果没有进行模型迁移,您也可以从https://gitee.com/ascend/modelzoo获取已经迁移适配好的训练脚本,直接体验训练过程。
一个Device对应执行一个训练进程,当前不支持多进程在同一个Device上进行训练。
前提条件
在单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升级安装路径。请参见安装7.3.0版本gcc。
- (可选)配置辅助功能环境变量。
- 为了后续方便定位问题,拉起训练脚本前用户也可以通过环境变量使能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计算图。
- 执行训练脚本拉起训练进程,例如:
python3 /home/xxx.py
检查执行结果
问题定位
如果运行失败,通过日志分析并定位问题。
在Host侧运行应用程序产生的运行日志路径:$HOME/ascend/log/run/plog/plog-pid_*.log。
在Device侧运行应用程序产生的运行日志路径:$HOME/ascend/log/run/device-id/device-pid_*.log。
$HOME为Host侧用户根目录。
一般通过ERROR级别的日志,识别问题产生模块,根据具体日志内容判定问题产生原因。
ModuleName |
出错流程 |
解决思路 |
---|---|---|
系统类报错 |
环境与版本配套错误 |
系统类报错,优先排查版本配套与系统安装是否正确。 |
GE |
GE图编译或校验问题 |
校验类报错,通常会给出明确的错误原因,此时需要针对性地修改网络脚本,以满足相关要求。 |
RUNTIME |
环境异常导致初始化问题或图执行问题 |
对于初始化异常,优先排查当前运行环境配置是否正确,当前环境是否有其他进程占用。 |