准备数据集并上传到运行环境的目录下,例如:/home/data/resnet50/imagenet。
source ${Pytorch安装目录}/env.sh #PyTorch环境变量
CANN_INSTALL_PATH_CONF='/etc/Ascend/ascend_cann_install.info' if [ -f $CANN_INSTALL_PATH_CONF ]; then CANN_INSTALL_PATH=$(cat $CANN_INSTALL_PATH_CONF | grep Install_Path | cut -d "=" -f 2) else CANN_INSTALL_PATH="/usr/local/Ascend" fi if [ -d ${CANN_INSTALL_PATH}/ascend-toolkit/latest ]; then source ${CANN_INSTALL_PATH}/ascend-toolkit/set_env.sh else source ${CANN_INSTALL_PATH}/nnae/set_env.sh fi #将Host日志输出到串口,0-关闭/1-开启 export ASCEND_SLOG_PRINT_TO_STDOUT=0 #设置默认日志级别,0-debug/1-info/2-warning/3-error/4-null export ASCEND_GLOBAL_LOG_LEVEL=3 #设置Event日志开启标志,0-关闭/1-开启 export ASCEND_GLOBAL_EVENT_ENABLE=0 #多机多卡训练时,自动获取IP环境变量 export HCCL_IF_IP=$(hostname -I |awk '{print $1}') #设置device侧日志登记为error msnpureport -g error -d 0 msnpureport -g error -d 1 msnpureport -g error -d 2 msnpureport -g error -d 3 msnpureport -g error -d 4 msnpureport -g error -d 5 msnpureport -g error -d 6 msnpureport -g error -d 7 #关闭device侧Event日志 msnpureport -e disable #export SCALAR_TO_HOST_MEM=1 ulimit -SHn 512000 path_lib=$(python3.7 -c """ import sys import re result='' for index in range(len(sys.path)): match_sit = re.search('-packages', sys.path[index]) if match_sit is not None: match_lib = re.search('lib', sys.path[index]) if match_lib is not None: end=match_lib.span()[1] result += sys.path[index][0:end] + ':' result+=sys.path[index] + '/torch/lib:' print(result)""" ) echo ${path_lib} export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib/:${path_lib}:$LD_LIBRARY_PATH
source env_npu.sh
python3 main.py /home/data/resnet50/imagenet --batch-size 128 \ # 训练批次大小,请尽量设置为处理器核数的倍数以更好的发挥性能 --lr 0.1 \ # 学习率 --epochs 90 \ # 训练迭代轮数 --arch resnet50 \ # 模型架构 --world-size 1 \ --rank 0 \ --workers 40 \ # 加载数据进程数 --momentum 0.9 \ # 动量 --weight-decay 1e-4 \ # 权重衰减 --gpu 0 # device号, 这里参数名称仍为gpu, 但迁移完成后实际训练设备已在代码中定义为npu
python3 main.py /home/data/resnet50/imagenet --workers 160 \ # 加载数据进程数 --lr 0.8 \ # 学习率 --arch resnet50 \ # 模型架构 --dist-url 'tcp://127.0.0.1:**' \ # **为端口号,请根据实际选择一个闲置端口填写 --dist-backend 'hccl' \ # 通信方式 --multiprocessing-distributed \ # 使用多卡训练 --world-size 1 \ --batch-size 2048 \ # 训练批次大小,请尽量设置为处理器核数的倍数以更好的发挥性能 --epochs 90 \ # 训练迭代轮数 --rank 0 \ --amp # 开启amp混合精度