下载
中文
注册

启动单卡训练

我们暂时略过了分布式训练脚本适配(兼容单卡)的分布式适配,来初步验证下单卡迁移的结果。

首先,我们需要确定启动脚本的参数,为了以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上训练完成。