开始学习 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 高性能版。
采用了 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 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:
文章目录前言硬件环境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=