PnasNet5Large
该目录为在PnasNet5Large在ImageNet数据集上训练的脚本实现,主要参考 Cadene/pretrained-models.pytorch。
PnasNet5Large实现细节
相比于GPU,NPU实现做了以下修改:
- amp initialize添加combine_grad=True
- 修改了混合精度计算写法,见crossentropy.py
- 训练使用的learning rate由0.32改为0.4
- 取消zero pad操作,见pnasnet.py的line 93,96,141,144,195
依赖
- 安装 PyTorch (pytorch.org)
pip3 install -r requirements.txt注:pillow建议安装较新版本, 与之对应的torchvision版本如果无法直接安装,可使用源码安装对应的版本,源码参考链接: torchvision版本是0.6.0
- 下载ImageNet数据集, 下载地址: http://www.image-net.org/
- 然后使用该脚本将验证集的图片移动到带有标签的子文件夹中: valprep.sh
训练
通过运行 imagenet_fast.py 来使用ImageNet数据集训练模型,使用以下命令运行训练脚本:
# training 1p accuracy
bash ./test/train_full_1p.sh --data_path=real_data_path
# training 1p performance
bash ./test/train_performance_1p.sh --data_path=real_data_path
# training 8p accuracy
bash ./test/train_full_8p.sh --data_path=real_data_path
# training 8p performance
bash ./test/train_performance_8p.sh --data_path=real_data_path
# train 1p finetune
# 注意:需要根据实际情况将训练脚本train_finetune_1p.sh中的resume变量修改为checkpoint文件的具体路径
# 并且不能放到 ./test/output/0/ 这个目录下
bash ./test/train_finetune_1p.sh --data_path=real_data_path
# evaluate
# 注意:需要根据实际情况将训练脚本train_eval_8p.sh中的resume变量修改为checkpoint文件的具体路径
# 并且不能放到 ./test/output/0/ 这个目录下
bash ./test/train_eval_8p.sh --data_path=real_data_path
日志存储路径:
test/output/device_id/nohup.out # console log
test/output/devie_id/train_${device_id}.log # training detail log
test/output/devie_id/WideReesnet50_2_bs8192_8p_perf.log # 8p training performance result log
test/output/devie_id/WideReesnet50_2_bs8192_8p_acc.log # 8p training accuracy result log
PnasNet5Large1.5 训练结果
| Acc@1 | FPS | Npu_nums | Epochs | AMP_Type |
|---|---|---|---|---|
| - | 45 | 1 | 1(1000step) | O2 |
| 78.842 | 353 | 8 | 90 | O2 |
PnasNet5Large1.8 训练结果
| Acc@1 | FPS | Npu_nums | Epochs | AMP_Type |
|---|---|---|---|---|
| - | 69 | 1 | 1(1000step) | O2 |
| 79.625 | 353 | 8 | 90 | O2 |
公网地址说明
代码涉及公网地址参考 public_address_statement.md