【问题标题】:Why is GeForce GTX 1080 Ti slower than Quadro K1200 on training a RNN model?为什么 GeForce GTX 1080 Ti 在训练 RNN 模型时比 Quadro K1200 慢?
【发布时间】:2018-01-13 01:56:21
【问题描述】:

问题类型:回归

输入:序列长度从 14 到 39 不等,每个序列点是一个 4 元素向量。

输出:标量

神经网络:3 层 Bi-LSTM(隐藏向量大小:200),后跟 2 个全连接层

批量大小:30

每个 epoch 的样本数:~7,000

TensorFlow 版本:tf-nightly-gpu 1.6.0-dev20180112

CUDA 版本:9.0

CuDNN 版本:7

两个 GPU 的详细信息

GPU 0: 名称:GeForce GTX 1080 Ti 主要:6 次要:1 memoryClockRate(GHz):1.582 总内存:11.00GiB 免费内存:10.72GiB

device_placement_log_0.txt

nvidia-smi 运行期间(仅使用 1080 Ti):

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 385.69                 Driver Version: 385.69                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 108... WDDM  | 00000000:02:00.0 Off |                  N/A |
| 20%   37C    P2    58W / 250W |  10750MiB / 11264MiB |     10%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Quadro K1200       WDDM  | 00000000:03:00.0  On |                  N/A |
| 39%   35C    P8     1W /  31W |    751MiB /  4096MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+

GPU 1: 名称:Quadro K1200 主要:5 次要:0 memoryClockRate(GHz):1.0325 总内存:4.00GiB 免费内存:3.44GiB

device_placement_log_1.txt

nvidia-smi 在运行期间(仅使用 K1200):

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 385.69                 Driver Version: 385.69                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 108... WDDM  | 00000000:02:00.0 Off |                  N/A |
| 20%   29C    P8     8W / 250W |    136MiB / 11264MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Quadro K1200       WDDM  | 00000000:03:00.0  On |                  N/A |
| 39%   42C    P0     6W /  31W |   3689MiB /  4096MiB |     23%      Default |
+-------------------------------+----------------------+----------------------+

花费 1 个 epoch 的时间

仅 GPU 0(设置环境变量“CUDA_VISIBLE_DEVICES”=0):~60 分钟

仅限 GPU 1(设置环境变量“CUDA_VISIBLE_DEVICES”=1):~45 分钟

设置环境。变种在两次测试中都变为“TF_MIN_GPU_MULTIPROCESSOR_COUNT=4”。

为什么更好的 GPU(GeForce GTX 1080 Ti)在训练我的神经网络时会变慢?

提前致谢。


更新

使用CNN model 对 MNIST 数据集进行的另一组测试显示了相同的模式:

训练 17 个 epoch 所花费的时间:

GPU 0 (1080 Ti):~59 分钟

GPU 1 (K1200):约 45 分钟

【问题讨论】:

  • 其中一个 GPU 是否也用于图形处理?
  • @AlexandrePassos,是的,Quadro K1200 用于图形处理(两个显示器,分辨率:1920x1200 和 1280x1024)。除了训练模型之外,GeForce GTX 1080 Ti 没有用于图形或活动。
  • 两种选择之一:(1) TF 决定哪个 GPU 为 0,哪个 GPU 与 nvidia 不同(查看 tf 启动日志以了解它的决定)或 (2) 这个特定的模型在 CPU 上比在 GPU 上更快(默认情况下,tf 不会在 quadro k1200 上运行,因为它没有足够的计算能力)。您可以记录设备放置以查看吗?
  • 您能否log the op device placement 确认当您使用较慢的 GPU 时实际使用的是 GPU?
  • 你能告诉我们如果你在两个 GPU 的计算过程中运行 nvidia-smi 会发生什么吗?

标签: tensorflow lstm


【解决方案1】:

官方tensorflow document有“允许GPU内存增长”部分介绍了两个会话选项来控制GPU内存分配。我分别尝试了它们来训练我的 RNN 模型(仅使用 GeForce GTX 1080 Ti):

  • config.gpu_options.allow_growth = True
  • config.gpu_options.per_process_gpu_memory_fraction = 0.05

他们都将训练时间从原来的每个 epoch 约 60 分钟缩短到了每个 epoch 约 42 分钟。我仍然不明白为什么这有帮助。如果你能解释它,我会接受它作为答案。谢谢。

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 2020-03-11
    • 2017-09-14
    • 2016-08-11
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    相关资源
    最近更新 更多