Tensorflow不会在GPU上运行

A L*_*ard 6 gpu tensorflow cudnn

我是AWS和Tensorflow的新手,上周我通过Udacity的机器学习课程了解CNN.现在我需要使用GPU的AWS实例.我使用源代码(CUDA 8,Ubuntu)启动了深度学习AMI的p2.xlarge实例(这是他们推荐的)

但是现在看来,tensorflow根本就没有使用GPU.它仍在使用CPU进行培训.我做了一些搜索,我找到了一些问题的答案,但似乎都没有.

<code> nvidia-smi </ code>给出以下输出:

当我运行Jupyter笔记本时,它仍然使用CPU

我该怎么做才能让它在GPU而不是CPU上运行?

T.Z*_*T.Z 9

张量流不检测GPU的问题可能是由于以下原因之一.

  1. 系统中仅安装了tensorflow CPU版本.
  2. tensorflow CPU和GPU版本都安装在系统中,但Python环境更喜欢CPU版本而不是GPU版本.

在继续解决问题之前,我们假设安装的环境是安装了CUDA 8.0和tensorflow版本1.4.1 的AWS Deep Learning AMI.这个假设来自评论中的讨论.

为了解决这个问题,我们按如下方式进行:

  1. 通过从OS终端执行以下命令,检查已安装的tensorflow版本.

pip冻结| grep tensorflow

  1. 如果仅安装了CPU版本,则将其删除并通过执行以下命令安装GPU版本.

pip uninstall tensorflow

pip install tensorflow-gpu == 1.4.1

  1. 如果同时安装了CPU和GPU版本,则删除它们,并仅安装GPU版本.

pip uninstall tensorflow

pip uninstall tensorflow-gpu

pip install tensorflow-gpu == 1.4.1

此时,如果tensorflow的所有依赖关系都已正确安装,则tensorflow GPU版本应该可以正常工作.此阶段的常见错误(如OP所遇到的)是缺少cuDNN库,当将tensorflow导入python模块时可能导致跟随错误

ImportError:libcudnn.so.6:无法打开共享对象文件:没有这样的文件或目录

可以通过安装正确版本的NVIDIA cuDNN库来修复它.Tensorflow版本1.4.1依赖于cuDNN版本6.0和CUDA 8,因此我们从cuDNN存档页面(下载链接)下载相应的版本.我们必须登录NVIDIA开发者帐户才能下载文件,因此无法使用命令行工具(如wget或)下载它curl.一种可能的解决方案是在主机系统上下载文件并使用scp它将其复制到AWS上.

复制到AWS后,使用以下命令解压缩文件:

tar -xzvf cudnn-8.0-linux-x64-v6.0.tgz

解压缩的目录应具有类似于CUDA工具包安装目录的结构.假设CUDA工具包安装在目录中/usr/local/cuda,我们可以通过将下载的存档中的文件复制到CUDA Toolkit安装目录的相应文件夹中,然后ldconfig按照以下链接器更新命令来安装cuDNN :

cp cuda/include/*/usr/local/cuda/include

cp cuda/lib64/*/usr/local/cuda/lib64

LDCONFIG

在此之后,我们应该能够将tensorflow GPU版本导入到我们的python模块中.

一些注意事项:

  • 如果我们使用Python3,pip应该替换为pip3.
  • 根据不同的用户权限,命令pip,cpldconfig可能需要运行的sudo.