前言
开始学习 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)
OS:Windows 10 Version 1809
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 上 clone 回来。
git clone --single-branch --branch cnn_tf_v1.12_compatible https://github.com/tensorflow/benchmarks.git
Benchmarks 对比数据
我没有更多的 GPU/TPU 用于性能对比,因此采用了网上的数据,引用以下基准测试结果:
- 基准 | Tensorflow
- 机器人之家 - TensorFlow GPU基准测试:2080 Ti vs V100 vs 1080 Ti vs Titan V
- 知乎 - 3A平台上搭建机器学习平台(二)Benchmarks测试
测试方法
- 所有模型都在合成数据集上进行训练,这能将GPU性能与CPU预处理性能有效隔离开来。
- 对每个模型进行3次训练实验。测量每秒处理的图像数量,然后在3次实验中取平均值。
实验中使用的 batch size
模型 | Batch Size |
---|---|
ResNet-50 | 64 |
ResNet-152 | 32 |
Inceptionv3 | 64 |
VGG16 | 64 |
AlexNet | 512 |
测试结果对比
模型 / GPU | 2070 eGPU | 2080 | 2080-Ti | 1080-Ti | Vega 64 | V100 |
---|---|---|---|---|---|---|
ResNet-50 | 170.96 | 209.89 (81.5%) | 286.05 (59.8%) | 203.99 (83.8%) | 190.58 (89.7%) | 386.63 (44.2%) |
ResNet-152 | 56.89 | 82.78 (68.7%) | 110.24 (51.6%) | 82.83 (68.7%) | 68.71 (82.8%) | 131.69 (43.2%) |
Inception v3 | 107.42 | 141.9 (75.7%) | 189.31 (56.7%) | 130.2 (82.5%) | 103.82 (103.5%) | 242.7 (44.3%) |
VGG16 | 106.36 | 123.01 (86.5%) | 169.28 (62.8%) | 133.16 (79.9%) | 101.95 (104.3%) | 233 (45.6%) |
AlexNet | 2228.37 | 2567.38 (86.8%) | 3550.11 (62.8%) | 2720.59 (81.9%) | 1573.01 (141.7%) | 4707.67 (47.3%) |
单位:image/sec;百分比:2070 性能 / 当前 GPU 性能。
从测试结果来看:
- AORUS RTX 2070 Gaming Box 大约是 2080/1080-Ti 的 80% 性能,比 Vega 64 略好。
- 从 userbenchmark.com 的测试来看,RTX 2070 的游戏性能大约是 GTX 1080-Ti 的 86%。也就是说,eGPU 由于 Thunderbolt 3 的带宽限制,引起的性能下降约为 10%,完全在可接受的范围。
- 由于 eGPU 的价格远远高于内置 GPU,因此性价比无法与内置 GPU 相比。
- 但从另一方面看,内置 GPU 需购置一整套系统来维持运作。一套 1080-Ti 的主机约 ¥9000,这个价格又远远超过 eGPU 的价格了。
结论
- eGPU 在性能上和内置 GPU 相当
- 价格可以接受,性价比远超 GPU 主机
- 兼顾了性能和可移动性
- 通常 eGPU 扩展坞自带了 PD 充电功能,可直接给笔记本供电
- 噪声远小于 GPU 主机(办公室的 GPU 工作站实在是太吵,只好搬到机房去了,在家不可能使用这么吵的主机。)
- 用于深度学习入门及应用研究,同时又不打算购置一台 GPU 主机的用户,eGPU 是最佳选择!
Tips:
- 选购 eGPU 可以参考 Best eGPU Enclosures Reviewed – External GPU Buyer’s Guide 2019。
- 从性能、功能、便携、稳定性、价格多方面综合衡量,AORUS RTX 2070 Gaming Box 是最佳选择之一。