文章目录
- 前言
- 硬件环境
- Tensorflow 版本
- 基准测试脚本
- 基准数据来源
- 测试方法
- 测试结果
- 结论
前言
开始学习 Tensorflow,但是又不想投资一台专用的 GPU 工作站。我现在使用的主力电脑是:Thinkpad X1 Carbon,计划购置 eGPU 来加速 Tensorflow。
购置之前做了一些功课,发现对 eGPU 的游戏性能测试很多,但是缺乏准确的 Tensorflow Benchmarks 数据。只能摸着石头过河,根据网上资料进行推断,最终购买了 Gigabyte AORUS RTX 2070 Gaming Box。
安装好 Tensorflow-gpu 1.12 后,做了一个比较完整的 Tensorflow Benchmarks,看看 eGPU 在深度学习加速中,能否和内置 GPU 一战。
硬件环境
Thinkpad X1 Carbon 6th (2018) + Gigabyte AORUS RTX 2070 Gaming Box
CPU:Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz (4核8线程)
Memory:16.0 GB @ 2133MHz
Storage:Samsung 512GB SSD
GPU 0:Intel(R) UHD Graphics 620
GPU 1:NVIDIA GeForce RTX 2070 @ 8GB(AORUS RTX 2070 Gaming Box @ H2D)
OS:Windows 10 Version 1809
Tips:
- RTX 2070 Gaming Box 官方提供了两个版本的 firmware。出厂为:F1.0 标准版;为提高计算能力,更新为:H2D 高性能版。
Tensorflow 版本
采用了 Anaconda 编译版本,运行在 Anaconda 工作环境中。
Tensorflow GPU 版本及 CUDA、cuDNN 版本:
(base) C:\Users\administrator>conda list "tensorflow-gpu|CUDA|cuDNN" --name tf-gpu
# packages in environment at C:\Users\administrator\Anaconda3\envs\tf-gpu:
#
# Name Version Build Channel
cudatoolkit 9.0 1
cudnn 7.3.1 cuda9.0_0
tensorflow-gpu 1.12.0 h0d30ee6_0
基准测试脚本
- 采用了 Tensorflow 官方基准测试脚本(Github - A benchmark framework for Tensorflow)。
注意!
- 测试脚本的 master branch 对应 Tensorflow latest nightly version,与 release version 并不兼容。因此,需要 clone 对应版本的 branch。例如:我 clone 的是 cnn_tf_v1.12_compatible。
- Anaconda 包含了 git 软件包,用指令:
conda install git
来安装。
- 使用 git 命令,直接从 Github 上将 benchmarks 脚本 clone 回来。
git clone --single-branch --branch cnn_tf_v1.12_compatible https://github.com/tensorflow/benchmarks.git
基准数据来源
我没有其它的 GPU/TPU 用于性能对比,因此采用了网上的数据,引用了以下基准测试结果:
- 基准 | Tensorflow
- 机器人之家 - TensorFlow GPU基准测试:2080 Ti vs V100 vs 1080 Ti vs Titan V
- 知乎 - 3A平台上搭建机器学习平台(二)Benchmarks测试
测试方法
- 所有模型都在合成数据集上进行训练,这能将GPU性能与CPU预处理性能有效隔离开来。
- 对每个模型进行3次训练实验。测量每秒处理的图像数量,然后在3次实验中取平均值。
- 测试命令:
python tf_cnn_benchmarks.py --num_gpus=1 --variable_update=parameter_server --model=<model_name> --batch_size=<batch_size>
实验中使用的 model_name 和 batch_size:
Model Name | Batch Size |
---|---|
resnet50 | 64 |
resnet152 | 32 |
inception3 | 64 |
vgg16 | 64 |
alexnet | 512 |
测试结果
模型 / GPU | 2070 eGPU | 1080-Ti | 2080 | 2080-Ti | Vega 64 | V100 |
---|---|---|---|---|---|---|
ResNet-50 | 176.93 | 203.99 (86.7%) | 209.89 (84.3%) | 286.05 (61.9%) | 190.58 (92.8%) | 386.63 (45.8%) |
ResNet-152 | 62.22 | 82.83 (75.1%) | 82.78 (75.2%) | 110.24 (56.4%) | 68.71 (90.6%) | 131.69 (47.2%) |
Inception v3 | 113.24 | 130.2 (87.0%) | 141.9 (79.8%) | 189.31 (59.8%) | 103.82 (109.1%) | 242.7 (46.7%) |
VGG16 | 110.23 | 133.16 (82.8%) | 123.01 (89.6%) | 169.28 (65.1%) | 101.95 (108.1%) | 233 (47.3%) |
AlexNet | 2258.94 | 2720.59 (83.0%) | 2567.38 (88.0%) | 3550.11 (63.6%) | 1573.01 (143.6%) | 4707.67 (48.0%) |
单位:image/sec;百分比:2070 性能 / 当前 GPU 性能。
从测试结果来看:
- AORUS RTX 2070 Gaming Box 大约是 2080/1080-Ti 的 83% 性能,2080-Ti 的 61.5% 性能,V100 的 47% 性能,比 Vega 64 略好。
- 从 userbenchmark.com 的测试来看,RTX 2070 的游戏性能大约是 GTX 1080-Ti 的 86%。也就是说,eGPU 由于 Thunderbolt 3 的带宽限制,引起的性能下降约为 4%,完全在可接受的范围。
- 由于 eGPU 的价格远远高于同型号内置 GPU(约高出¥2000 左右),因此性价比无法与内置 GPU 相比。
- 但从另一方面看,内置 GPU 需购置一整套系统来维持运作。一套 RTX 2070 的主机约 ¥9500,这个价格又远远超过 eGPU 的价格了。
结论
- eGPU 在性能上和内置 GPU 相当,损失约 4% 的性能。
- 价格可以接受,性价比远超 GPU 主机。
- 兼顾了性能和可移动性。
- 通常 eGPU 扩展坞自带了 PD 充电功能,可直接给笔记本供电。
- 噪声远小于 GPU 主机(办公室的 GPU 工作站实在是太吵,只好搬到机房去,在家不可能使用这么吵的主机)。
- 用于深度学习入门及应用研究,同时又不打算购置一台 GPU 主机的用户,eGPU 是最佳选择!
Tips:
- 选购 eGPU 可以参考 Best eGPU Enclosures Reviewed – External GPU Buyer’s Guide 2019。
- 从性能、功能、便携、稳定性、价格多方面综合衡量,AORUS RTX 2070 Gaming Box 是最佳选择之一。