Tensorflow未在GPU上运行

时间:2017-06-29 15:17:17

标签: tensorflow keras nvidia cudnn

我已经花了相当多的时间在堆栈溢出上寻找答案,但找不到任何东西

大家好,

我正在使用Keras运行Tensorflow。 我90%肯定我安装了Tensorflow GPU,有没有办法检查我做了哪个安装?

我试图从Jupyter笔记本上运行一些CNN模型,我注意到Keras在CPU上运行模型(已检查任务管理器,CPU为100%)。

我尝试从tensorflow网站运行此代码:

# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))

这就是我得到的:

MatMul: (MatMul): /job:localhost/replica:0/task:0/cpu:0
2017-06-29 17:09:38.783183: I c:\tf_jenkins\home\workspace\release-win\m\windows\py\35\tensorflow\core\common_runtime\simple_placer.cc:847] MatMul: (MatMul)/job:localhost/replica:0/task:0/cpu:0
b: (Const): /job:localhost/replica:0/task:0/cpu:0
2017-06-29 17:09:38.784779: I c:\tf_jenkins\home\workspace\release-win\m\windows\py\35\tensorflow\core\common_runtime\simple_placer.cc:847] b: (Const)/job:localhost/replica:0/task:0/cpu:0
a: (Const): /job:localhost/replica:0/task:0/cpu:0
2017-06-29 17:09:38.786128: I c:\tf_jenkins\home\workspace\release-win\m\windows\py\35\tensorflow\core\common_runtime\simple_placer.cc:847] a: (Const)/job:localhost/replica:0/task:0/cpu:0
[[ 22.  28.]
 [ 49.  64.]]

对我来说,显示我正在运行我的CPU,出于某种原因。

我有一个GTX1050(驱动程序版本382.53),我安装了CUDA和Cudnn,并且没有任何问题安装了tensorflow。我也安装了Visual Studio 2015,因为它被列为兼容版本。

我记得CUDA提到了一些关于安装了不兼容的驱动程序的问题,但是如果我没记错的话,CUDA应该已经安装了自己的驱动程序。

修改 我运行了这些命令来列出可用的设备

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

这就是我得到的

[name: "/cpu:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 14922788031522107450
]

和很多像这样的警告

2017-06-29 17:32:45.401429: W c:\tf_jenkins\home\workspace\release-win\m\windows\py\35\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE instructions, but these are available on your machine and could speed up CPU computations.

修改2

试着跑步

pip3 install --upgrade tensorflow-gpu

我得到了

Requirement already up-to-date: tensorflow-gpu in c:\users\goofynose\appdata\local\programs\python\python35\lib\site-packages
Requirement already up-to-date: markdown==2.2.0 in c:\users\goofynose\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: html5lib==0.9999999 in c:\users\goofynose\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: werkzeug>=0.11.10 in c:\users\goofynose\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: wheel>=0.26 in c:\users\goofynose\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: bleach==1.5.0 in c:\users\goofynose\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: six>=1.10.0 in c:\users\goofynose\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: protobuf>=3.2.0 in c:\users\goofynose\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: backports.weakref==1.0rc1 in c:\users\goofynose\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: numpy>=1.11.0 in c:\users\goofynose\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: setuptools in c:\users\goofynose\appdata\local\programs\python\python35\lib\site-packages (from protobuf>=3.2.0->tensorflow-gpu)

解决: 检查注释的解决方案。 感谢所有帮助过的人!

我是新手,所以非常感谢任何帮助! 谢谢。

5 个答案:

答案 0 :(得分:16)

要检查TensorFlow可用的设备,您可以使用它并查看GPU卡是否可用:

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

编辑 此外,如果您使用TensorFlow Cuda版本,您应该会看到这种日志:

I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so.*.* locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so.*.*  locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so.*.*  locally

答案 1 :(得分:8)

这可能听起来很愚蠢,但请尝试重启。它帮助我和GitHub中的其他人。

答案 2 :(得分:5)

即使在通过pip正确安装tensorflow-gpu之后,我仍然无法获得GPU支持。我的问题是我安装了tensorflow 1.5和CUDA 9.1(默认版本Nvidia指示你),而预编译的tensorflow 1.5适用于CUDA版本< = 9.0。这是nvidia网站上的下载页面,以获得正确的CUDA 9.0:

https://developer.nvidia.com/cuda-90-download-archive

还要确保将cuDNN更新为与CUDA 9.0兼容的版本 https://developer.nvidia.com/cudnn https://developer.nvidia.com/rdp/cudnn-download

答案 3 :(得分:0)

对我来说,以下是有效的。

我使用了 conda 环境,因为 python 环境意味着设置 LD_LIBRARY_PATH 并手动安装 Cuda,这又是一团糟。

在提到的 blog 中,他已经在 conda 中安装了 cudatoolkitcudann,然后安装了 tensorflow-gpu,从而解决了问题。

P.S,据我所知,cudatoolkit and cudann 在让您的代码在 tensorflow-gpu 上运行方面发挥着巨大的作用。

答案 4 :(得分:0)

如果您碰巧使用 Anaconda 来管理您的环境 => 卸载所有现有版本的 tensorflow

pip uninstall tensorflow
pip3 uninstall tensorflow

使用 conda 安装 tensorflow-gpu

conda install tensorflow-gpu

如果您不介意从一个新环境开始,那么最简单的方法是不用

conda create --name tf_gpu tensorflow-gpu 

创建一个名为 tf_gpu 并安装了 tensorflow gpu 的新 conda 环境