飞桨框架ROCm版训练示例

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

ResNet50训练示例

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

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

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

第二步:运行训练

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

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

  1. # CUDA 结果为 CUDA 10.1 + 4卡V100 训练
  2. 2021-03-24 01:16:08,548 - INFO - The best top1 acc 0.76332, in epoch: 118
  3. # ROCm 结果为 ROCm 4.0.1 + 4卡DCU 训练
  4. 2021-04-07 10:26:31,651 - INFO - The best top1 acc 0.76308, in epoch: 109

YoloV3训练示例

第一步:下载 YoloV3 代码

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

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

第二步:准备 VOC 数据集

  1. cd PaddleDetection/dataset/voc
  2. python download_voc.py
  3. python create_list.py

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

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

  1. # 修改 configs/yolov3/_base_/optimizer_270e.yml
  2. base_lr: 0.0005
  3. # 修改 configs/yolov3/_base_/yolov3_reader.yml
  4. worker_num: 1

第四步:运行训练

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

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

  1. # CUDA 结果为 CUDA 10.1 + 4卡V100 训练
  2. [03/23 05:26:17] ppdet.metrics.metrics INFO: mAP(0.50, 11point) = 82.59%
  3. # ROCm 结果为 ROCm 4.0.1 + 4卡DCU 训练
  4. [03/28 16:02:52] ppdet.metrics.metrics INFO: mAP(0.50, 11point) = 83.02%