为什么GeForce GTX 1080 Ti在训练RNN模型时比Quadro K1200慢?

时间:2018-01-13 01:56:21

标签: tensorflow lstm

问题类型:回归

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

输出:标量

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

批量大小:30

每个时期的样本数量:~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 totalMemory:11.00GiB freeMemory:10.72GiB enter image description here

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 major:5 minor:0 memoryClockRate(GHz):1.0325 totalMemory:4.00GiB freeMemory:3.44GiB enter image description here

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个纪元的时间

仅限GPU 0(设置环境var" CUDA_VISIBLE_DEVICES" = 0):〜60分钟

仅限GPU 1(设置环境var" CUDA_VISIBLE_DEVICES" = 1):〜45分钟

设置环境变种。到" TF_MIN_GPU_MULTIPROCESSOR_COUNT = 4"在两次测试中。

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

提前致谢。

更新

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

培训17个时代的时间:

GPU 0(1080 Ti):约59分钟

GPU 1(K1200):约45分钟

1 个答案:

答案 0 :(得分:0)

官方tensorflow document的章节为“#34;允许GPU内存增长"引入两个会话选项来控制GPU内存分配。我分别尝试了它们来训练我的RNN模型(仅使用GeForce GTX 1080 Ti):

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

两者都将训练时间从原来的每个时期约60分钟缩短到每个时期约42分钟。我仍然不明白为什么这会有所帮助。如果你能解释一下,我会接受这个答案。感谢。