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

Oli*_*ver 3 nvidia cuda conda tensorflow gpu-driver

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

任何帮助将不胜感激,因为我是 Linux 新手,而且我还不是终端忍者。

谢谢

tso*_*oud 6

更新 (08/30/21):Esri conda 通道有一个tensorflow-gpu开箱即用的软件包似乎可以正常工作。可以使用以下方式安装:

\n
conda install -c esri tensorflow-gpu\n
Run Code Online (Sandbox Code Playgroud)\n

如果这不起作用,请查看以下内容是否有帮助。

\n

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

\n

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

\n

可能有很多不同的方法可以做到这一点,但经过多次尝试和错误后,以下是对我有用的方法:

\n

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

\n
conda create -n tf_gpu_env -c conda-forge cudatoolkit cudnn python=3.8\n
Run Code Online (Sandbox Code Playgroud)\n

截至撰写本文时,这会将 cudatoolkit 11.2、cudnn 8.2 和 python 3.8.10 安装到这个新环境中。我使用了 conda-forge 频道,但想象anaconda一下nvidia频道也可以工作。

\n

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

\n
conda activate tf_gpu_env\xe2\x80\x8b\npip install tensorflow-gpu\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n
>>> import tensorflow as tf \n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
>>> tf.config.list_physical_devices(\'GPU\')\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n
>>> tf.random.uniform([4, 4, 4, 4])\n
Run Code Online (Sandbox Code Playgroud)\n

如果事情不正常,在您得到答案之前将会有很长的延迟(尽管后续呼叫可能很快)。如果您尝试在运行第一个 epoch 之前运行延迟持续几分钟或几乎一个小时的实际模型,并且除了不可预测的行为(例如获取nanCNN 等某些网络的值)之外,情况会更糟。

\n

最后,有几点注意事项:

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