在 Ubuntu 上安装 Tensorflow GPU / CUDA

Posted

技术标签:

【中文标题】在 Ubuntu 上安装 Tensorflow GPU / CUDA【英文标题】:Tensorflow GPU / CUDA installation on Ubuntu 【发布时间】:2019-06-04 09:49:29 【问题描述】:

我已经设置了一个 Ubuntu 18.04 并尝试使用 Python 使 Tensorflow 2.2 GPU 工作(我有一个 Nvidia/CUDA 显卡)。 即使在阅读了文档https://www.tensorflow.org/install/gpu#linux_setup 之后,它还是失败了(有关它如何失败的详细信息,请参见下文)。

问题:您能否提供一个规范的“待办事项”列表(起点:新安装的 Ubuntu 服务器),说明如何通过几个步骤安装 tensorflow-gpu 并使其工作?

注意事项:

我已经阅读了许多类似的论坛帖子,并且我认为拥有一个规范的“待办事项”(从全新的 Ubuntu 安装到拥有 tensorflow-gpu 工作)会很有趣,只需几个步骤/bash 命令

我使用的documentation参与了

  export LD_LIBRARY_PATH...

  # Add NVIDIA package repository
  sudo apt-key adv --fetch-keys http://developer.download...
  ...
  # Install CUDA and tools. Include optional NCCL 2.x
  sudo apt install cuda9.0 cuda...

即使经过大量的试验和错误(我不会在这里复制/粘贴所有不同的错误,会太长),然后在最后:

  import tensorflow

总是失败。一些原因包括`ImportError:libcublas.so.9.0:无法打开共享对象文件:没有这样的文件或目录。我已经阅读了相关问题here,或者这个very long (!) Github issue。

经过反复试验,import tensorflow 可以工作,但它不使用 GPU(另请参阅 Tensorflow not running on GPU)。

【问题讨论】:

此外,无数人在许多 Github 问题、论坛帖子、SO 帖子中都或多或少地提出相同的问题,并且对这个问题有一个规范的答案(一劳永逸)真的很有趣。 对我来说看起来像是一个典型的包管理器问题。 Stack Overflow 是一个编程和开发问题的网站。对于这个问题,您可能应该使用Stack Exchange network 上的另一个站点。如果您觉得这个问题很切题,请查看How to create a Minimal, Complete, and Verifiable example。 【参考方案1】:

嗯,我也面临同样的问题。首先要做的是查找,需要哪个Tensorflow版本。在你的情况下Tensorflow 2.2。需要CUDA 10.1。正确的 cuDNN 版本也很重要。在您的情况下,它将是cuDNN 7.4。另外一点是安装的python版本。我会推荐Python 3.5-3.8。如果其中一个不匹配,则几乎不可能完全兼容。

所以,如果你想要一份检查清单,就去吧:

    通过安装 nvidia-cuda-toolkit 来安装 CUDA 10.1。 安装与 CUDA 10.1 兼容的 cuDNN 版本。 导出 CUDA 环境变量。 如果未安装 Bazel,系统会询问您。 使用 pip 安装 TensorFlow 2.2。我强烈推荐使用虚拟环境。

您可以找到Tensorflow和CUDA的兼容性检查列表here

您可以找到 CUDA 工具包here

终于得到正确版本的cuDNNhere

就是这样。

【讨论】:

【参考方案2】:

在将 Google Cloud Platform 用于两个涉及深度学习的项目时,我也遇到了这个问题。他们只为服务器提供新安装的 Ubuntu 操作系统。根据我的经验,我建议执行以下步骤:

查找当前 Tensorflow 版本支持的 cuda 和 cuDNN 版本on the Tensorflow page。 从Nvidias cuda page 检索到的 deb 包中安装目标 cuda 版本并注意更新的 cuda 版本可能无法工作!这将自动安装相应的 Nvidia 驱动程序。 从this page 安装目标 cuDNN 版本并再次注意更新的 cuDNN 版本可能无法正常工作。 使用 pip 安装 tensorflow-gpu。

这应该可以。您的问题可能是您使用的 cuda 版本比当前 Tensorflow 版本的目标更新。

【讨论】:

【参考方案3】:

要安装tensorflow-gpu,官网提供的指南对于初学者来说非常繁琐,我们可以做这些简单的步骤:

注意:在此之前必须安装 NVIDIA 驱动(您可以使用命令 nvidia-smi 进行验证)。

    安装 Anaconda https://www.anaconda.com/distribution/? 使用命令“conda create -n envname”创建虚拟环境 然后使用命令“conda activate envname”激活环境 最后使用命令“conda install tensorflow-gpu”安装 tensorflow

使用给定的代码

import tensorflow as tf
      if tf.test.gpu_device_name():
           print('Default GPU Device'.format(tf.test.gpu_device_name()))
      else:
           print("not using gpu")

您可以在下面给出的链接上找到教程 https://www.pugetsystems.com/labs/hpc/Install-TensorFlow-with-GPU-Support-the-Easy-Way-on-Ubuntu-18-04-without-installing-CUDA-1170/?

【讨论】:

谢谢,Anaconda 是一个特定的发行版,这个问题是针对标准的官方 Python 发行版。【参考方案4】:

我建议首先使用nvidia-smi 命令检查 GPU 的可用性。

我也遇到过同样的问题,我可以通过使用 docker 容器解决它,您可以使用 Install Docker Engine on Ubuntu 安装 docker 或使用 Digital Ocean 指南(我用过这个)How To Install and Use Docker on Ubuntu 18.04

之后就很简单了,根据需求运行以下命令

NV_GPU='0' nvidia-docker run --runtime=nvidia -it -v /path/to/folder:/path/to/folder/for/docker/container nvcr.io/nvidia/tensorflow:17.11

NV_GPU='0' nvidia-docker run --runtime=nvidia -it -v /storage/research/:/storage/research/ nvcr.io/nvidia/tensorflow:20.12-tf2-py3

这里的'0'代表GPU编号,如果你想使用多个GPU只需使用'0,1,2'等等......

希望这能解决问题。

【讨论】:

以上是关于在 Ubuntu 上安装 Tensorflow GPU / CUDA的主要内容,如果未能解决你的问题,请参考以下文章

在 ubuntu 的 gpu 上安装 tensorflow

怎么在ubuntu 16.04 上安装tensorflow

在 Ubuntu 上安装 Tensorflow GPU / CUDA

Ubuntu上安装TensorFlow(python2.7版)

在linux/ubuntu上安装Tensorflow

尝试安装 Tensorflow 时,Ubuntu 上的“设备上没有剩余空间”