diff --git a/README.md b/README.md new file mode 100644 index 0000000000..374e429178 --- /dev/null +++ b/README.md @@ -0,0 +1,704 @@ +# PaddlePaddle Benchmark + +我们对PaddlePaddle的最新版本[v1.5.0](https://github.com/PaddlePaddle/Paddle/tree/v1.5.0),在训练性能和显存占用方面进行了基准测试。 + +## 目录 +* [测试环境](#测试环境) +* [智能视觉(PaddleCV)](#PaddleCV) + * [SE-ResNeXt50](#SE-ResNeXt50) + * [Mask-RCNN](#Mask-RCNN) + * [YOLOv3](#YOLOv3) + * [DeepLab V3+](#deepLab-v3) + * [Cycle-GAN](#Cycle-GAN) +* [智能文本处理(PaddleNLP)](#PaddleNLP) + * [PaddingRNN](#PaddingRNN) + * [BERT](#BERT) + * [Transformer](#Transformer) +* [强化学习(PARL)](#PARL) + * [DDPG](#DDPG) + +## 测试环境 +- 测试对象 + - 本次测试[PaddlePaddle v1.5.0](https://github.com/PaddlePaddle/Paddle/tree/v1.5.0),具体commit是:`401c03fc20478f5cc067440422fc3a7b306d0e32` + - 基准测试程序[benchmark](https://github.com/PaddlePaddle/benchmark),具体commit是:`3c34ed6b166f6b77e759b4c54e8854652ad3d776` + + +- Docker镜像 + - Paddle编译镜像 + - CUDA 9.0,`paddlepaddle/paddle_manylinux_devel:cuda9.0_cudnn7` + - CUDA 10.0,`paddlepaddle/paddle_manylinux_devel:cuda10.0_cudnn7` + - Paddle测试镜像 + - CUDA 9.0,`paddlepaddle/paddle:latest-gpu-cuda9.0-cudnn7` + - CUDA 10.0,`paddlepaddle/paddle:latest-gpu-cuda10.0-cudnn7` + - TensorFlow测试镜像 + - CUDA 9.0,`tensorflow/tensorflow:1.12.0-gpu` + - CUDA 10.0,`tensorflow/tensorflow:1.14.0-gpu` + - PyTorch + - CUDA 9.0, + - CUDA 10.0, + +- GPU服务器参数 + - GPU型号:Nvidia Tesla V100-SXM2,显存16 GB + - CPU型号:Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz,38核 + - Driver Version: 418.39 + - CUDA Version:9.0.176,10.0.130 + - NCCL Version:2.4.2 + - cuDNN Version:7.4.2.24,7.5.0.56 + + 注意:测试所用GPU服务器为虚拟机,跟相同配置的物理机测试结果可能会有一定的差别。 + +- CPU服务器参数 + - CPU型号:Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz,24核 + - 指令集:AVX2 + +## PaddleCV + +| 方向 | 模型 | Paddle | TensorFlow | PyTorch | MXNet | 数据集 | batch_size(单卡) | +|---|---|---|---|---|---|---|---| +| 图像分类 | SE-ResNeXt50 | [PaddleCV/image_classification](https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/image_classification) | - | [SENet-PyTorch](https://github.com/miraclewkf/SENet-PyTorch) | - | ILSVRC2012 | 32 | +| 目标检测 | Mask-RCNN | [PaddleCV/rcnn](https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/rcnn) | - | [maskrcnn-benchmark](https://github.com/facebookresearch/maskrcnn-benchmark) | - | COCO17 | 1 | +| 目标检测 | YOLOv3 | [PaddleCV/yolov3](https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/yolov3) | - | - | [gluon-cv](https://github.com/dmlc/gluon-cv/tree/master/scripts/detection/yolo) | COCO17 | 8 | +| 图像分割 | DeepLab V3+ | [PaddleCV/deeplabv3+](https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/deeplabv3%2B) | [tensorflow/models](https://github.com/tensorflow/models/tree/master/research/deeplab) | - | - | cityscape | 2 | +| 图像生成 | Cycle-GAN | [PaddleCV/PaddleGAN](https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/PaddleGAN/cycle_gan) | [CycleGAN](https://github.com/hardikbansal/CycleGAN) | - | - | horse2zebra | 1 | + +### SE-ResNeXt50 +SE-ResNeXt50模型单卡训练速度与PyTorch**持平**,八卡训练速度和显存占用都**优于**PyTorch。 + +- 训练速度(单位:images/s) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0PyTorch 1.1.0Paddle 1.5.0PyTorch 1.1.0
1 GPU168.334163.130168.478163.294
8 GPUs (单进程)843.348595.274836.357573.732
8 GPUs (多进程)----
+ +- 显存占用 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0PyTorch 1.1.0Paddle 1.5.0PyTorch 1.1.0
单卡显存占用5515 MiB5677 MiB5535 MiB5695 MiB
单卡最大batch_size112112112112
+ +### Mask-RCNN +Mask-RCNN模型训练速度和显存占用都**优于**PyTorch。 + +- 训练速度(单位:images/s) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0PyTorch 1.1.0Paddle 1.5.0PyTorch 1.1.0
1 GPU3.8113.2403.780-
8 GPUs (单进程)18.707-18.505-
8 GPUs (多进程)23.01421.86423.199-
+ +- 显存占用 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0PyTorch 1.1.0Paddle 1.5.0PyTorch 1.1.0
单卡显存占用3871 MiB4548 MiB3907 MiB-
单卡最大batch_size555-
+ +### YOLOv3 +YOLOv3模型训练速度和显存占用都**优于**MXNet。 + +- 训练速度(单位:images/s) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0MXNetPaddle 1.5.0MXNet
1 GPU29.90118.57830.59117.001
8 GPUs (单进程)58.17535.57457.99733.755
8 GPUs (多进程)99.530-104.553-
+ +- 显存占用 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0MXNetPaddle 1.5.0MXNet
单卡显存占用10583 MiB14304 MiB10599 MiB9842 MiB
单卡最大batch_size14141414
+ +### DeepLab V3+ +Deep Lab V3+模型训练速度和显存占用都**优于**TensorFlow。 + +- 训练速度(单位:images/s) + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
1 GPU13.6956.414.2616.309
8 GPUs (单进程)59.72116.50858.02416.427
+ +- 显存占用 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
单卡显存占用5163 MiB8934 MiB5167 MiB8927 MiB
单卡最大batch_size9797
+ +### Cycle-GAN +Cycle-GAN模型不支持多卡训练,其单卡训练速度和显存占用都**优于**TensorFlow。 + +- 训练速度(单位:images/s) + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
1 GPU7.5136.4527.5916.823
+ +- 显存占用 + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
单卡显存占用2479 MiB5094 MiB2499 MiB5089 MiB
+ +## PaddleNLP + +| 方向 | 模型 | Paddle | TensorFlow | PyTorch | 数据集 | batch_size(单卡) | +|---|---|---|---|---|---|---| +| 语言模型 | PaddingRNN | [PaddleNLP/language_model](https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/language_model) | [benchmark/PaddingRNN/lstm_tf](https://github.com/PaddlePaddle/benchmark/tree/master/PaddingRNN/lstm_tf) | - | PTB文本数据集 | 20 | +| 语义表示 | BERT | [LARK](https://github.com/PaddlePaddle/LARK) | [google-research/bert](https://github.com/google-research/bert) | - | XNLI | 32 | +| 机器翻译 | Transformer | [PaddleNLP/neural_machine_translation/transformer](https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/neural_machine_translation/transformer) | [tensor2tensor](https://github.com/tensorflow/tensor2tensor) | - | En-de | 4096 | + +### PaddingRNN +TensorFlow的PaddingRNN开源模型多卡训练失败,故只测试单卡训练的情况。 +PaddleRNN模型在static模式下,单卡训练速度和显存占用都**差于**TensorFlow。 + +- 训练速度(单位:steps/s) + + + + + + + + + + + + + + + + + + + + + + +
static模式
small模型
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
1 GPU61.20873.99163.40072.406
+ + + + + + + + + + + + + + + + + + + + + + +
static模式
large模型
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
1 GPU17.47918.52917.10717.914
+ +- 显存占用 + + + + + + + + + + + + + + + + + + + + + + +
static模式
small模型
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
单卡显存占用660 MiB660 MiB657 MiB647 MiB
+ + + + + + + + + + + + + + + + + + + + + + +
static模式
large模型
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
单卡显存占用6089 MiB5858 MiB6083 MiB8711 MiB
+ +### BERT +TensorFlow的BERT开源模型暂无多卡实现。 +BERT模型单卡训练速度和显存占用都优于TensorFlow。 + +- 训练速度(单位:steps/s) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
1 GPU4.0443.4204.003-
8 GPUs (单进程)1.803-1.817-
8 GPUs (多进程)3.114-3.089-
+ +- 显存占用 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
单卡显存占用6551 MiB15430 MiB6545 MiB-
单卡最大batch_size998492169984-
+ +### Transformer +Transformer模型单卡训练速度与TensorFlow**持平**;多卡训练速度和显存占用**优于**TensorFlow。 + +- 训练速度(单位:steps/s) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
1 GPU4.8654.7504.8834.721
8 GPUs (单进程)4.2272.3024.3552.520
8 GPUs (多进程)4.445-4.460-
+ +- 显存占用 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
单卡显存占用7137 MiB8948 MiB7147 MiB8711 MiB
单卡最大batch_size12000111441200011144
+ +## PARL + +| 方向 | 模型 | Paddle | TensorFlow | PyTorch | 数据集 | batch_size(单卡) | +|---|---|---|---|---|---|---| +| 强化学习 | DDPG Deep Explore | [benchmark/DDPG_Deep_Explore/Fluid_version](https://github.com/PaddlePaddle/benchmark/tree/master/DDPG_Deep_Explore/Fluid_version) | [benchmark/DDPG_Deep_Explore/TF_version](https://github.com/PaddlePaddle/benchmark/tree/master/DDPG_Deep_Explore/TF_version) | - | 测试数据 | 100 | + +### DDPG +DDPG模型不支持多卡训练,其训练速度与竞品持平,显存占用**优于**TensorFlow。 + +- 训练速度(单位:epoch/s) + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
1 GPU1.6151.6061.578-
+ +- 显存占用 + + + + + + + + + + + + + + + + + + + + + +
CUDA 9.0CUDA 10.0
Paddle 1.5.0TensorFlow 1.12.0Paddle 1.5.0TensorFlow 1.14.0
单卡显存占用563 MiB630 MiB557 MiB-
\ No newline at end of file