下面介绍如何通过工具迁移ResNet50网络。
git clone -b r1.13.0 https://github.com/tensorflow/models.git
假设原始模型下载到了/root/models目录下,用户可以在/root/models/official/resnet/下查看到下载到的ResNet50原始脚本:
参考https://github.com/tensorflow/models/blob/r1.13.0/official/resnet/README.md的使用说明,下载数据集,具体操作为:
cd /root/models/official/resnet/
python cifar10_download_and_extract.py
export PYTHONPATH="$PYTHONPATH:/root/models"
数据集模型默认下载到/tmp/cifar10_data路径下。
pip3 install pandas
pip3 install xlrd==1.2.0
pip3 install openpyxl
pip3 install tkintertable
pip3 install google_pasta
cd <tfplugin安装目录>/tfplugin/latest/python/site-packages/npu_bridge/convert_tf2npu/
python3 main.py -i /root/models/official/resnet/ -o /root/models/official/ -r /root/models/official/
python3 main.py -i /root/models/official/resnet/ -o /root/models/official/ -r /root/models/official/ -d tf_strategy
其中“-d”代表原始脚本使用的分布式策略,“tf_strategy”表示原始脚本使用的是tf.distribute.Strategy分布式策略。
迁移后脚本存放在/root/models/official/resnet_npu_***目录下。
执行训练前,需要将resnet_npu_xxx目录脚本拷贝替换到resnet目录下,从而保证脚本能正常执行,例如:
{ "server_count":"1", "server_list": [ { "device":[ { "device_id":"0", "device_ip":"192.168.1.8", "rank_id":"0" } ], "server_id":"10.0.0.10" } ], "status":"completed", "version":"1.0" }
配置文件的详细介绍请参考准备资源配置文件。
安装CANN软件后,使用CANN运行用户编译、运行时,需要以CANN运行用户登录环境,执行. ${install_path}/set_env.sh命令设置环境变量。除此之外,还需进行如下配置:
# 请依据实际在下列场景中选择一个训练依赖包安装路径的环境变量设置(以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="$PYTHONPATH:/root/models" export JOB_ID=10086 # 训练任务ID,用户自定义,仅支持大小写字母,数字,中划线,下划线。不建议使用以0开始的纯数字 export ASCEND_DEVICE_ID=0 # 指定昇腾AI处理器的逻辑ID,单P训练也可不配置,默认为0,在0卡执行训练 export RANK_ID=0 # 指定训练进程在集合通信进程组中对应的rank标识序号,单P训练固定配置为0 export RANK_SIZE=1 # 指定当前训练进程对应的Device在本集群大小,单P训练固定配置为1 export RANK_TABLE_FILE=/root/rank_table_1p.json # 如果用户原始训练脚本中使用了HCCL相关接口,需要配置,否则无需配置。
python3 /root/models/official/resnet/cifar10_main.py
{ "server_count":"1", "server_list": [ { "device":[ { "device_id":"0", "device_ip":"192.168.1.8", "rank_id":"0" }, { "device_id":"1", "device_ip":"192.168.1.9", // 两个Device需要处于同一网段,0卡和1卡为同一网段 "rank_id":"1" } ], "server_id":"10.0.0.10" } ], "status":"completed", "version":"1.0" }
配置文件的详细介绍请参考准备资源配置文件。
拉起训练进程0:
export JOB_ID=10086 export ASCEND_DEVICE_ID=0 export RANK_ID=0 export RANK_SIZE=2 export RANK_TABLE_FILE=/root/rank_table_2p.json python3 /root/models/official/resnet/cifar10_main.py
# 请依据实际在下列场景中选择一个训练依赖包安装路径的环境变量设置(以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=/root/models:$PYTHONPATH export JOB_ID=10086 export ASCEND_DEVICE_ID=0 export RANK_ID=0 export RANK_SIZE=2 export RANK_TABLE_FILE=/root/rank_table_2p.json python3 /root/models/official/resnet/cifar10_main.py
拉起训练进程1:
export PYTHONPATH=/root/models:$PYTHONPATH
export JOB_ID=10086
export ASCEND_DEVICE_ID=1
export RANK_ID=1
export RANK_SIZE=2
export RANK_TABLE_FILE=/root/rank_table_2p.json
python3 /root/models/official/resnet/cifar10_main.py
最终会在tmp/cifar10_model下生成checkpoint文件。