我正在尝试为 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 通道,但想象anaconda
和nvidia
通道也可以工作。
第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