2

我正在使用 GeForce RTX 2060 构建深度学习平台。

我想使用与tensorflow 2.0 不兼容的 baselines-stable 。

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

尝试从 Nvidia 下载 CUDA,Ubuntu 20.04 的选项不适用于 CUDA 10.0。

搜索 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 的动机。

我看到了一些可能的线索,表明可以从支持 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 从源代码编译 tensorflow(呵呵)
  • 我是否应该安装旧版本的 Ubuntu 并希望我不会过快过时。

鉴于这种情况,有没有办法在 Ubuntu 20.04.1 上运行具有 gpu 支持的 tensorflow 1.15?

4

2 回答 2

0

由于这也困扰着我,我找到了一个我认为比使用 docker 容器更通用的工作解决方案。

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

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

  1. Cuda 10.0(与 tf 1.15 一起使用)。我很难找到这个版本,因为它在 Ubuntu 20.04 上没有正式可用。我解决了 Ubuntu 18.04 版本,但它工作正常。
    在此处存档工具包
    此处为 Ubuntu 的最终工具包(因为很明显没有 20.04 版本可用)。

我选择 runfile 作为方法,导致 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*
  1. 到目前为止,尽管已安装系统并没有意识到 cuda 10.0 的存在。因此,对它的所有调用都将失败,就好像不存在一样。我们应该更新cuda 10.0的相关系统环境。系统范围内的一种方法(还有其他方法)是创建(不存在) a /etc/profile.d/cuda.sh,它将包含对LD_LIBRARY_PATH变量的更新。它应该包含以下内容:
    export 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 支持的python 版本以 3.7 结尾,因此应安装旧版本。这意味着必须有一个虚拟环境(因为使用系统 python 从来都不是一个好主意)。
    例如,可以使用包含旧(和新版本 python)的存储库来安装 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

它在其中创建了一个新venv的 Python 3.7。

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

于 2021-06-07T08:40:18.123 回答
0

我继续使用docker 方法。无论如何,Tensorflow 文档似乎都在朝着这个方向发展。使用 docker 只需要安装 Nvidia 驱动程序。您确实需要在 docker 中安装nvidia 支持才能正常工作。

  • 这包含带有 Tensorflow 版本的 CUDA 环境,因此我可以在需要不同 CUDA 版本的同一台计算机上使用 1.15 和最新的 2.x 版本的 Tensorflow。
  • 除了 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
于 2020-08-09T17:48:55.310 回答