在 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 上安装 Tensorflow GPU / CUDA