此处给出了基于 Paddle 框架实现的 DeepLabV3P 任务的训练性能详细测试报告,包括执行环境、Paddle 版本、环境搭建、复现脚本、测试结果和测试日志。
相同环境下,其他深度学习框架的 DeepLabV3P 训练性能数据测试流程,请参考:OtherReports。
我们统一使用了 吞吐能力 作为衡量性能的数据指标。吞吐能力 是业界公认的、最主流的框架性能考核指标,它直接体现了框架训练的速度。
DeepLabV3P 模型是图像分割领域极具代表性的模型。在测试性能时,我们以 samples/sec 作为训练期间的吞吐性能。在其它框架中,默认也均采用相同的计算方式。
测试中,我们选择如下3个维度,测试吞吐性能:
-
卡数
本次测试关注1卡、8卡、32卡情况下,模型训练的吞吐性能。选择的物理机是单机8卡配置。 因此,1卡、8卡测试在单机下完成。32卡在4台机器下完成。
-
训练精度
FP32/AMP/FP16 是业界框架常用的精度训练模式,也是衡量框架性能的混合精度量化训练的重要维度。 本次测试分别对 FP32/AMP/FP16 精度模式进行了测试。
-
BatchSize
本次测试,结合各框架具体情况,BatchSize(max_tokens)选用如下:
参数 PaddlePaddle NGC PyTorch FP32 2 2 AMP 4 4
-
单机(单卡、8卡)
- 系统:CentOS release 6.3 (Final)
- GPU:Tesla V100-SXM2-32GB * 8
- CPU:Intel(R) Xeon(R) Gold 6271C CPU @ 2.60GHz * 48
- Driver Version: 450.80.02
- 内存:502 GB
-
多机(32卡)
- 系统:CentOS release 6.3 (Final)
- GPU:Tesla V100-SXM2-32GB * 8
- CPU:Intel(R) Xeon(R) Gold 6271C CPU @ 2.60GHz * 48
- Driver Version: 450.80.02
- 内存:502 GB
- 镜像版本:
paddlepaddle/paddle-benchmark:cuda11.0-cudnn8-runtime-ubuntu16.04-gcc82
- Paddle 版本:
develop
- 模型代码:PaddleSeg
- CUDA 版本:
11.0
- cuDnn 版本:
8.0.5
各深度学习框架在公开的 Github 仓库中给出了详细的docker镜像和构建脚本,具体搭建流程请参考:此处。
如下是 Paddle 测试环境的具体搭建流程:
-
拉取代码
git clone https://github.com/PaddlePaddle/PaddleSeg.git cd PaddleSeg && git checkout 1f49e5cda6f65e8d483d8e42b739f93feb7d4639
-
构建镜像
# 拉取镜像 docker pull paddlepaddle/paddle-benchmark:cuda11.0-cudnn8-runtime-ubuntu16.04-gcc82 # 创建并进入容器 nvidia-docker run --name=test_transformer_paddle -it \ --net=host \ --shm-size=1g \ --ulimit memlock=-1 \ --ulimit stack=67108864 \ -e NVIDIA_VISIBLE_DEVICES=all \ -v $PWD:/workspace/models \ paddlepaddle/paddle-benchmark:cuda11.0-cudnn8-runtime-ubuntu16.04-gcc82 /bin/bash
-
安装依赖
# 安装 PaddleSeg 中依赖库 pip install -r requirements.txt pip install paddleseg
-
准备数据
DeepLabV3P 模型是基于 Cityscapes 数据集 进行的训练的。
# 下载cityscapes
wget https://paddleseg.bj.bcebos.com/dataset/cityscapes.tar
# 解压数据集
tar -xzvf cityscapes.tar
# 放到 data/ 目录下
mv cityscapes PaddleSeg/data/
DeepLabV3P测试参考测试方法。 根据测试的精度,需要调整命令行参数。
精度 | batch_size | fp16 |
---|---|---|
FP32 | 4 | NO |
AMP | 4 | YES |
-
训练吞吐率(samples/sec)如下:
卡数 FP32(BS=4) AMP(BS=4) 1 6.13 15.41 8 44.39 96.03 32 176 373.76
-
说明:
- 同等执行环境下测试
- 单位:
samples/sec
- BatchSize FP32、AMP下均选择 4
-
FP32测试
参数 PaddlePaddle NGC PyTorch GPU=1,BS=4 6.13 4.25 GPU=8,BS=4 44.39 25.65 GPU=32,BS=4 176 60.95 -
AMP测试
参数 PaddlePaddle NGC PyTorch GPU=1,BS=4 15.41 7.76 GPU=8,BS=4 96.03 41.31 GPU=32,BS=4 373.76 203.2