我可以在Ubuntu 20.04.1 LTS上安装具有GPU支持的Tenserflow 1.15吗?

时间:2020-07-30 23:40:37

标签: tensorflow ubuntu stable-baselines

我正在使用GeForce RTX 2060构建深度学习装备。

我想使用尚未与tensorflow 2.0兼容的baselines-stable

根据herehere,tensorflow-gpu-1.15仅被列为与CUDA 10.0兼容,而不与CUDA 10.1兼容。

尝试从Nvidia option for Ubuntu 20.04 is not available for CUDA 10.0.

下载CUDA

搜索apt-cache也不会导致CUDA 10.0。

$ sudo apt-cache policy nvidia-cuda-toolkit
[sudo] password for lansford: 
nvidia-cuda-toolkit:
  Installed: (none)
  Candidate: 10.1.243-3
  Version table:
     10.1.243-3 500
        500 http://us.archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages

我非常希望不必使用旧版本的Ubuntu重新安装操作系统。但是,尝试强化学习是购买此PC的动机。

我看到一些possible clues,可能会在支持cuda 10.1的情况下从源代码构建tensorflow-gpu-1.15。我还看到了一个随机评论,即tensorflow-gpu-1.15将在tf 1.15下自动运行,但我不想在安装完成之前发出错误的信号,走。卸载并不总是那么简单。

  • 我应该安装CUDA 10.1并用1.15指住它吗。
  • 我应该为较旧的Ubuntu版本下载CUDA 10.0的安装,看看是否仍可以安装
  • 我应该尝试根据CUDA 10.1从源代码编译张量流(heh heh heh)
  • 我应该安装旧版本的Ubuntu,并希望我不会过时。

鉴于这种情况,是否可以在Ubuntu 20.04.1上运行带有gpu支持的tensorflow 1.15?

2 个答案:

答案 0 :(得分:0)

我继续前进,并选择了docker approach。无论如何,Tensorflow文档似乎都朝着这个方向发展。使用docker仅需要安装Nvidia驱动程序。您确实需要在docker中安装nvidia support才能使其正常工作。

  • 其中包含具有Tensorflow版本的CUDA环境,因此我可以在同一台计算机上使用1.15和Tensorflow的最新2.x版本,这需要不同的CUDA版本。
  • 除了docker之外,它不会安装任何东西来使计算机混乱并难以撤回。
  • 当库变得可用而无需从源代码编译时,我仍然可以在将来的某个时候在计算机上本地安装Tensorflow。

这是启动jupyter并将当前目录从我的计算机挂载到/tf/bob的命令,该命令显示在jupyter中。

docker run -it --mount type=bind,source="$(pwd)",target=/tf/bob -u $(id -u):$(id -g) -p 8888:8888 tensorflow/tensorflow:1.15.2-gpu-py3-jupyter

答案 1 :(得分:0)

因为这也困扰着我,所以我找到了一个可行的解决方案,我认为它比使用 docker 容器更通用。

主要思想来自here(不向他人索取功劳)。

要为 Ubuntu 20.04 和 tensorflow 1.15 制定一个可行的解决方案,需要:

  1. Cuda 10.0(适用于 tf 1.15)。 我在找到这个版本时遇到了一些麻烦,因为它没有正式用于 Ubuntu 20.04。我决定使用 Ubuntu 18.04 版本,但效果很好。
    Archive toolkits here
    Final toolkit for Ubuntu here(因为很明显没有 20.04 版本可用)。

我选择了运行文件作为方法,这导致 1 个主运行文件和 1 个补丁运行文件可用:

cuda_10.0.130_410.48_linux.run
cuda_10.0.130.1_linux.run

可以使用提供的说明安全地安装工具包,没有风险,因为每个版本在系统中分配不同的文件夹(通常为 /usr/local/cuda-10.0/)。

  1. cuda 10.0对应的cudnn 我以前安装过这个,但下载它也不难。我使用的版本是cudnn-10.0-linux-x64-v7.6.5.32.tgz
    Cudnn 基本上只是在正确的位置复制文件(实际上并不安装任何东西)。因此,提取压缩文件并复制到文件夹就足够了:

    $ sudo cp cuda/include/cudnn.h /usr/local/cuda-10.0/include
    $ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64
    $ sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h /usr/local/cuda-10.0/lib64/libcudnn*

  2. 到目前为止,虽然安装了系统,但系统并不知道 cuda 10.0.0 的存在。因此,对它的所有调用都将失败,就好像不存在一样。我们应该更新cuda 10.0的相关系统环境。系统范围内的一种方法(还有其他方法)是创建(不存在)一个 /etc/profile.d/cuda.sh,它将包含对 LD_LIBRARY_PATH 变量的更新。它应该包含以下内容:

    导出 LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda-11.3/lib64:/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH

这个命令通常会完成工作:
$ sudo sh -c 'echo export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda-11.3/lib64:/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH > /etc/profile.d /cuda.sh'

我认为这需要重新启动才能进行评估。不管怎样,这样系统会在:
中搜索相关的so文件 a) /usr/local/cuda/lib64(默认符号链接),它会失败
b) 与后者几乎相同 /usr/local/cuda-11.3/lib64 并且也失败但它也会搜索
c) /usr/local/cuda-10.0/lib64 会成功。

  1. cuda 10.0 的 supported versions of python 以 3.7 结尾,因此应安装旧版本。这意味着必须有一个虚拟环境(因为搞乱系统 python 从来都不是一个好主意)。
    例如,可以使用包含旧版本(和新版本 python)的 this repository 安装 python 3.7:

    sudo add-apt-repository ppa:deadsnakes/ppa
    sudo apt-get install python3.7

这只是将 python3.7 安装到系统中,它不会使其成为默认值。默认为上一个。

  1. 创建一个虚拟环境并添加所需的python作为默认解释器。对我来说这有效:

    virtualenv -p python3.7 ~/tensorflow_1-15

它创建了一个包含 python 3.7 的新 venv。

现在填充所有必需的模块,您就可以开始了。