开始学习 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

基准测试脚本

  • 测试脚本的 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 用于性能对比,因此采用了网上的数据,引用了以下基准测试结果:

  • 所有模型都在合成数据集上进行训练,这能将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 NameBatch Size
resnet5064
resnet15232
inception364
vgg1664
alexnet512
模型 / GPU2070 eGPU1080-Ti20802080-TiVega 64V100
ResNet-50176.93203.99 (86.7%)209.89 (84.3%)286.05 (61.9%)190.58 (92.8%)386.63 (45.8%)
ResNet-15262.2282.83 (75.1%)82.78 (75.2%)110.24 (56.4%)68.71 (90.6%)131.69 (47.2%)
Inception v3113.24130.2 (87.0%)141.9 (79.8%)189.31 (59.8%)103.82 (109.1%)242.7 (46.7%)
VGG16110.23133.16 (82.8%)123.01 (89.6%)169.28 (65.1%)101.95 (108.1%)233 (47.3%)
AlexNet2258.942720.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:

文章目录前言硬件环境Tensorflow 版本测试脚本Benchmarks 对比数据测试方法#测试结果对比结论前言开始学习 Tensorflow,但是又不想投资一台专用的 GPU 工作站。我现在使用的主力电脑是:Thinkpad X1 Carbon,计划购置 eGPU 来加速 Tensorflow。购置之前做了一些功课,发现对 eGPU 的游戏性能测试很多,但是缺乏准确的 Tensorfl... V:\configstartup.bat 内容如下:(与其说是心得,不如说是自己配置后体验的效果,来翻译一下下面英文会给显卡带来什么样的表现) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Template: %DRV%:\config\startup.tpl. “::”=comment. call=runs batch files ::::::::::::::::::: with tf.device('/cpu:0'): cpu_a = tf.random.normal([10000, 1000]) cpu_b = tf.random.normal([1000, 2000]) print(cpu_a.device, cpu_b.device) with tf.device('/gpu:0'): gpu_a = tf.random.normal([10000, 1000]) gpu_. gpu_available = tf.test.is_gpu_available() print('tensorflow version:',tensorflow_version, '\tGPU available:', gpu_available) a = tf.constant([1.0, 2.0], name=