如何检查keras / tensorflow是否正在使用cuDNN?

时间:2018-02-01 15:37:40

标签: tensorflow keras cudnn

我已经安装了CUDA和cuDNN,但是最后一个没有用,在theano中提供了很多错误消息。现在我在Keras / Tensorflow中训练中等大小的深度网络,没有收到任何cuDNN错误消息。如何检查cuDNN现在是否正在使用?

2 个答案:

答案 0 :(得分:6)

tl; dr:如果tensorflow-gpu有效,则使用CuDNN。

TensorFlow的预构建二进制文件(至少从版本1.3开始)链接到CuDNN库。如果缺少CuDNN,则会显示一条错误消息ImportError: Could not find 'cudnn64_7.dll'. TensorFlow requires that this DLL be installed...

根据TensorFlow install documentation for version 1.5,即使您从源代码构建,也必须安装CuDNN 才能支持GPU。对于CuDNN无法使用的情况,TensorFlow代码中仍有很多回退 - 据我所知,它在以前的版本中曾经是可选的。

Here are two lines from the TensorFlow source that explicitly tell and force that CuDNN is required for gpu acceleration

为了使用GPU(和CuDNN),需要安装特殊的TensorFlow GPU版本。确保已安装的python包是tensorflow-gpu而不仅仅是tensorflow

如果你不使用anaconda,你可以列出包含“tensorflow”和conda list tensorflow(或只是pip list)的软件包,但要确保你已经激活了正确的环境。

当您使用GPU支持运行脚本时,它们将以如下方式启动:

Using TensorFlow backend.

2018- ... C:\tf_jenkins\...\gpu\gpu_device.cc:1105] Found device 0 with properties:
name: GeForce GTX 1080 major: 6 minor: 1 memoryClockRate(GHz): 1.7845

要测试它,只需输入控制台:

import tensorflow as tf
tf.Session()

要检查你是否从python环境中“看到”CuDNN并验证了正确的PATH变量,你可以试试这个:

import ctypes
ctypes.WinDLL("cudnn64_7.dll") # use the file name of your cudnn version here.

答案 1 :(得分:1)

您可能还需要研究GPU优化的Keras图层。

  • CuDNNLSTM
  • CuDNNGRU

它们明显更快: https://keras.io/layers/recurrent/#cudnnlstm

从LSTM到CuDNNLSTM Keras层,我们看到了10倍的改进。

注意: 我们还发现计算机上的VMS(虚拟内存)使用率增加了10倍。因此,需要权衡考虑。