Tensorflow将无法在GPU上运行

时间:2018-12-24 12:43:23

标签: tensorflow gpu cudnn

在AWS和Tensorflow方面,我是一名新手,并且上周我通过Udacity的机器学习课程学习了CNN。 现在,我需要使用GPU的AWS实例。我启动了带有源代码(CUDA 8,Ubuntu)的深度学习AMI的p2.xlarge实例(这是他们的建议)

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

<code>nvidia-smi</code> gives the following output:

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

如何使它在GPU而不是CPU上运行?

1 个答案:

答案 0 :(得分:8)

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

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

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

为解决该问题,我们进行如下操作:

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

点冻结| grep tensorflow

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

pip卸载tensorflow

     

pip install tensorflow-gpu == 1.4.1

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

pip卸载tensorflow

     

pip卸载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存档页面(Download Link)下载相应的版本。我们必须登录NVIDIA开发人员帐户才能下载文件,因此无法使用wgetcurl之类的命令行工具下载该文件。一种可能的解决方案是在主机系统上下载文件,然后使用scp将其复制到AWS上。

一旦复制到AWS,请使用以下命令提取文件:

  

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

提取的目录应具有与CUDA工具包安装目录相似的结构。假设CUDA工具包已安装在目录/usr/local/cuda中,我们可以通过以下方式安装cuDNN:将下载的档案中的文件复制到CUDA Toolkit安装目录的相应文件夹中,然后执行链接更新命令ldconfig,如下所示:

  

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

     

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

     

ldconfig

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

一些注意事项:

  • 如果我们使用的是Python3,应将pip替换为pip3
  • 取决于用户特权,命令pipcpldconfig可能需要以sudo身份运行。