启动单卡训练
我们暂时略过了分布式训练脚本适配(兼容单卡)的分布式适配,来初步验证下单卡迁移的结果。
首先,我们需要确定启动脚本的参数,为了以CPU单卡形式启动脚本,我们传入distribution_strategy的策略为one_device。
在启动前,我们需要按照official/vision/image_classification/resnet/README.md中的说明,将models路径设置到PYTHONPATH中,例如当前所在目录是/path/to/models,则应当设置环境变量:
1 | export PYTHONPATH=$PYTHONPATH:/path/to/models |
训练中,我们通常每次循环下沉执行一个epoch数据的训练,steps_per_loop值则应当设置为样本总数除以batch大小的结果,为了快速验证功能,我们假定样本总数为64,训练的batch大小为2,同时跳过eval过程。所以此时steps_per_loop的大小为64/2=32,因此我们需要设置环境变量export NPU_LOOP_SIZE=32。最终我们的启动参数如下(其中/path/to/imagenet_TF/需要替换为您的数据集路径),需要注意的是,通常您应当以epoch为单位组织训练,这里入参中写入train_steps是为了使训练尽快结束进行基本的功能验证。
cd official/vision/image_classification/resnet/ export PYTHONPATH=$PYTHONPATH:/path/to/models export NPU_LOOP_SIZE=32 python3 resnet_ctl_imagenet_main.py \ --data_dir=/path/to/imagenet_TF/ \ --train_steps=128 \ --distribution_strategy=one_device \ --use_tf_while_loop=true \ --steps_per_loop=32 \ --batch_size=2 \ --epochs_between_evals=1 \ --skip_eval
执行该命令后,脚本在NPU上训练完成。
父主题: 手工迁移与训练