使用 CUDA 11.2 和 cuDNN 8.1-8.2(CUDA 460 驱动程序)设置 tensorflow-GPU Conda 环境

使用 CUDA 11.2 和 cuDNN 8.1-8.2(CUDA 460 驱动程序)设置 tensorflow-GPU Conda 环境

我正在尝试为 tensorflow-GPU 创建一个 conda 环境。我有一台 GeForce RTX 3080,运行 Ubuntu 21.04,安装了 CUDA 460 驱动程序(安全启动已禁用)。我尝试使用 conda 安装 cudatoolkit,但使用 conda 可用的最新版本是 11.0,它仅支持最高 CUDA 驱动程序 450。我在网上找不到任何关于如何将新的 CUDA 版本安装到 conda 环境中的信息,只能在全局环境中使用sudo或 .run 文件(我想远离它)。我假设我使用pip install cudatoolkit=11.2或类似的东西,但我不确定。

任何帮助都将不胜感激,因为我刚接触 Linux,还不是一个终端忍者。

谢谢

答案1

更新(2021 年 8 月 30 日):Esri conda 频道有一个tensorflow-gpu似乎开箱即用的软件包。可以使用以下方式安装:

conda install -c esri tensorflow-gpu

如果这不起作用,看看下面的内容是否有帮助。

我有一个 Linux Mint 20.1 系统(基于 Ubuntu 20.04 LTS),配备 GeForce RTX 3080(驱动程序版本 460.80),在 conda 环境中尝试运行 Tensorflow 时遇到了很多问题。

问题似乎是目前没有正确打包 Tensorflow 2.4+、CUDA 11+ 和 CuDNN 8+ 的 conda 环境,而这些是在此较新的 GPU 架构上运行所必需的(更多信息这里)。如果您使用conda install -c anaconda tensorflow-gpu​,它将默认安装 TF v2.2、cudatoolkit 10.x 和 cudnn 7.x。如果您尝试强制使用较新的版本,tensorflow-gpu=2.4​它将只安装较旧的不兼容 cudatoolkit 10.x/cudnn 7.x 库或根本不安装它们。

可能有很多不同的方法可以做到这一点,但经过多次反复尝试后,我发现以下方法有效:

步骤1:创建一个conda环境并将cudatoolkit和cudnn安装到其中。

conda create -n tf_gpu_env -c conda-forge cudatoolkit cudnn python=3.8

在撰写本文时,这将在这个新环境中安装 cudatoolkit 11.2、cudnn 8.2 和 python 3.8.10。我使用了 conda-forge 通道,但想象anacondanvidia通道也可以工作。

第2步:使用以下命令激活环境并安装 tensorflow-gpupip 不是 conda。从 conda 安装要么需要很长时间,因为 conda 会在出错之前尝试解决冲突,要么会强制将 cudatoolkit 和 cudnn 降级到旧版本。

conda activate tf_gpu_env​
pip install tensorflow-gpu

截至撰写本文时,这将安装 Tensorflow-gpu 2.5.0

步骤3:检查 Tensorflow 是否正常工作并使用 GPU。确保已激活新环境并在终端中启动 Python 会话。我使用以下语句进行检查。

>>> import tensorflow as tf 

应该返回一条消息说它已成功打开libcudart

>>> tf.config.list_physical_devices('GPU')

应该返回一条长消息,表明它成功打开了一堆 cuda 库,更重要的是,末尾有一个列表,其中有一个命名元组,表明它找到了 GPU(例如[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')])。如果返回一个空列表,则 Tensorflow 未使用 GPU。

tf.constant最后,使用或创建一些随机张量tf.random。这个检查非常重要。Tensorflow 仍然可以识别你的 GPU即使 cuda 库不兼容并在输入上述两个命令时返回类似的消息,表明一切正常。但是,如果它正常工作,则以下命令(或类似命令)应立即执行并返回张量:

>>> tf.random.uniform([4, 4, 4, 4])

如果出现问题,在得到答案之前会有一个非常长的延迟(尽管后续调用可能会很快)。如果你尝试运行实际模型,在运行第一个 epoch 之前会有一个持续数分钟或近一个小时的延迟,并且还有不可预测的行为(例如获取nan某些网络(如 CNN)的值),情况会更糟。

最后,有几点需要注意:

  • conda install在此环境中运行或时要小心conda update,并在按下回车键之前仔细检查软件包计划。例如,如果您使用 conda 安装tensorflow-probability,它也可能tensorflow-base作为依赖项安装,从而可以覆盖tensorflow-gpu
  • 您还可以安装其他版本的 Tensorflow 和 cuda 库。例如,您也可以在上面的安装命令中使用cudatoolkit=11.0, cudnn=8.0, (pip 的双等号)来使用 TF 2.4.1、cudatoolkit 11.0 和 cudnn 8.0。tensorflow-gpu==2.4.1

相关内容