我们对PaddlePaddle的最新版本v1.5.0,在训练性能和显存占用方面进行了基准测试。
SE-ResNeXt50模型单卡训练速度与PyTorch持平,八卡训练速度和显存占用都优于PyTorch。
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
PyTorch 1.1.0 |
Paddle 1.5.0 |
PyTorch 1.1.0 |
1 GPU |
168.334 |
163.130 |
168.478 |
163.294 |
8 GPUs (单进程) |
843.348 |
595.274 |
836.357 |
573.732 |
8 GPUs (多进程) |
- |
- |
- |
- |
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
PyTorch 1.1.0 |
Paddle 1.5.0 |
PyTorch 1.1.0 |
单卡显存占用 |
5515 MiB |
5677 MiB |
5535 MiB |
5695 MiB |
单卡最大batch_size |
112 |
112 |
112 |
112 |
Mask-RCNN模型训练速度和显存占用都优于PyTorch。
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
PyTorch 1.1.0 |
Paddle 1.5.0 |
PyTorch 1.1.0 |
1 GPU |
3.811 |
3.240 |
3.780 |
- |
8 GPUs (单进程) |
18.707 |
- |
18.505 |
- |
8 GPUs (多进程) |
23.014 |
21.864 |
23.199 |
- |
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
PyTorch 1.1.0 |
Paddle 1.5.0 |
PyTorch 1.1.0 |
单卡显存占用 |
3871 MiB |
4548 MiB |
3907 MiB |
- |
单卡最大batch_size |
5 |
5 |
5 |
- |
YOLOv3模型训练速度和显存占用都优于MXNet。
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
MXNet |
Paddle 1.5.0 |
MXNet |
1 GPU |
29.901 |
18.578 |
30.591 |
17.001 |
8 GPUs (单进程) |
58.175 |
35.574 |
57.997 |
33.755 |
8 GPUs (多进程) |
99.530 |
- |
104.553 |
- |
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
MXNet |
Paddle 1.5.0 |
MXNet |
单卡显存占用 |
10583 MiB |
14304 MiB |
10599 MiB |
9842 MiB |
单卡最大batch_size |
14 |
14 |
14 |
14 |
Deep Lab V3+模型训练速度和显存占用都优于TensorFlow。
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
1 GPU |
13.695 |
6.4 |
14.261 |
6.309 |
8 GPUs (单进程) |
59.721 |
16.508 |
58.024 |
16.427 |
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
单卡显存占用 |
5163 MiB |
8934 MiB |
5167 MiB |
8927 MiB |
单卡最大batch_size |
9 |
7 |
9 |
7 |
Cycle-GAN模型不支持多卡训练,其单卡训练速度和显存占用都优于TensorFlow。
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
1 GPU |
7.513 |
6.452 |
7.591 |
6.823 |
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
单卡显存占用 |
2479 MiB |
5094 MiB |
2499 MiB |
5089 MiB |
TensorFlow的PaddingRNN开源模型多卡训练失败,故只测试单卡训练的情况。
PaddleRNN模型在static模式下,单卡训练速度和显存占用都差于TensorFlow。
static模式 small模型 |
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
1 GPU |
61.208 |
73.991 |
63.400 |
72.406 |
static模式 large模型 |
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
1 GPU |
17.479 |
18.529 |
17.107 |
17.914 |
static模式 small模型 |
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
单卡显存占用 |
660 MiB |
660 MiB |
657 MiB |
647 MiB |
static模式 large模型 |
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
单卡显存占用 |
6089 MiB |
5858 MiB |
6083 MiB |
8711 MiB |
TensorFlow的BERT开源模型暂无多卡实现。
BERT模型单卡训练速度和显存占用都优于TensorFlow。
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
1 GPU |
4.044 |
3.420 |
4.003 |
- |
8 GPUs (单进程) |
1.803 |
- |
1.817 |
- |
8 GPUs (多进程) |
3.114 |
- |
3.089 |
- |
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
单卡显存占用 |
6551 MiB |
15430 MiB |
6545 MiB |
- |
单卡最大batch_size |
9984 |
9216 |
9984 |
- |
Transformer模型单卡训练速度与TensorFlow持平;多卡训练速度和显存占用优于TensorFlow。
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
1 GPU |
4.865 |
4.750 |
4.883 |
4.721 |
8 GPUs (单进程) |
4.227 |
2.302 |
4.355 |
2.520 |
8 GPUs (多进程) |
4.445 |
- |
4.460 |
- |
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
单卡显存占用 |
7137 MiB |
8948 MiB |
7147 MiB |
8711 MiB |
单卡最大batch_size |
12000 |
11144 |
12000 |
11144 |
DDPG模型不支持多卡训练,其训练速度与竞品持平,显存占用优于TensorFlow。
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
1 GPU |
1.615 |
1.606 |
1.578 |
- |
|
CUDA 9.0 |
CUDA 10.0 |
|
Paddle 1.5.0 |
TensorFlow 1.12.0 |
Paddle 1.5.0 |
TensorFlow 1.14.0 |
单卡显存占用 |
563 MiB |
630 MiB |
557 MiB |
- |