飞桨框架ROCm版训练示例

使用海光CPU/DCU进行训练与使用Intel CPU/Nvidia GPU训练相同,当前Paddle ROCm版本完全兼容Paddle CUDA版本的API,直接使用原有的GPU训练命令和参数即可。

ResNet50训练示例

第一步:下载 ResNet50 代码,并准备 ImageNet1k 数据集

cd path_to_clone_PaddleClas
git clone https://github.com/PaddlePaddle/PaddleClas.git

也可以访问PaddleClas的 Github Repo 直接下载源码。请根据数据说明文档准备ImageNet1k数据集。

第二步:运行训练

export HIP_VISIBLE_DEVICES=0,1,2,3

cd PaddleClas/
python -m paddle.distributed.launch --gpus="0,1,2,3" tools/train.py -c ./ppcls/configs/ImageNet/ResNet/ResNet50.yaml

第三步:获取4卡训练得到的 Best Top1 Accuracy 结果如下

# CUDA 结果为 CUDA 10.1 + 4卡V100 训练
2021-03-24 01:16:08,548 - INFO - The best top1 acc 0.76332, in epoch: 118

# ROCm 结果为 ROCm 4.0.1 + 4卡DCU 训练
2021-04-07 10:26:31,651 - INFO - The best top1 acc 0.76308, in epoch: 109

YoloV3训练示例

第一步:下载 YoloV3 代码

cd path_to_clone_PaddleDetection
git clone https://github.com/PaddlePaddle/PaddleDetection.git

也可以访问PaddleDetection的 Github Repo 直接下载源码。

第二步:准备 VOC 数据集

cd PaddleDetection/dataset/voc
python download_voc.py
python create_list.py

第三步:修改config文件的参数

模型Config文件 configs/yolov3/yolov3_darknet53_270e_voc.yml 中的默认参数为8卡设计,使用DCU单机4卡训练需要修改参数如下:

# 修改 configs/yolov3/_base_/optimizer_270e.yml
base_lr: 0.0005

# 修改 configs/yolov3/_base_/yolov3_reader.yml
worker_num: 1

第四步:运行训练

export HIP_VISIBLE_DEVICES=0,1,2,3

cd PaddleDetection/
python -m paddle.distributed.launch --gpus 0,1,2,3 tools/train.py -c configs/yolov3/yolov3_darknet53_270e_voc.yml --eval

第五步:获取4卡训练得到的 mAP 结果如下

# CUDA 结果为 CUDA 10.1 + 4卡V100 训练
[03/23 05:26:17] ppdet.metrics.metrics INFO: mAP(0.50, 11point) = 82.59%

# ROCm 结果为 ROCm 4.0.1 + 4卡DCU 训练
[03/28 16:02:52] ppdet.metrics.metrics INFO: mAP(0.50, 11point) = 83.02%