TensorFlow 不会在 GPU 上运行

标签 tensorflow gpu

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

但现在看来,tensorflow 根本没有使用 GPU。它仍在使用 CPU 进行训练。我做了一些搜索,找到了这个问题的一些答案,但它们似乎都不起作用。

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

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



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

最佳答案

tensorflow 无法检测到 GPU 的问题可能是由于以下原因之一。

  • 系统中只安装了 tensorflow CPU 版本。
  • 系统中安装了tensorflow CPU和GPU版本,但是Python环境优先选择CPU版本而不是GPU版本。

  • 在继续解决问题之前,我们假设安装的环境是 AWS Deep Learning AMI安装了 CUDA 8.0 和 tensorflow 1.4.1 版。这个假设来自评论中的讨论。
    为了解决这个问题,我们进行如下操作:
  • 通过从 OS 终端执行以下命令来检查已安装的 tensorflow 版本。

  • pip freeze | grep tensorflow


  • 如果只安装了 CPU 版本,则删除它并通过执行以下命令安装 GPU 版本。

  • pip uninstall tensorflow

    pip install tensorflow-gpu==1.4.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: cannot open shared object file: No such file or directory


    可以通过安装正确版本的 NVIDIA cuDNN 库来修复它。 TensorFlow 1.4.1 版本依赖于 cuDNN 6.0 版本和 CUDA 8,因此我们从 cuDNN 存档页面 (Download Link) 下载相应版本。我们必须登录 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 身份运行.
  • 关于TensorFlow 不会在 GPU 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53913628/

    相关文章:

    cuda - 了解 "nvidia-smi topo -m"输出

    c - OpenAcc 复制输入和复制输出时出错

    python - 使用 Tensorflow 计算 MNIST 图像的熵

    c - instrA 在 CPU 上比 instrB 快,但在 GPU 上反之亦然?

    cuda - 来自 CUDA 代码的 100% GPU 使用率导致屏幕延迟

    tensorflow - 使用 Tensorflow 对象检测 api 对训练数据集进行洗牌

    pytorch - 如何将 AMD GPU 用于 fastai/pytorch?

    linux - 无法在 GPU 上运行 tensorflow

    tensorflow - 如何在tensorboard中看到更多的评估步骤

    python - TensorFlow 放置算法