CUDA 和 CuDNN 版本与 Tensorflow2.4.1 冲突

CUDA and CuDNN version conflict against Tensorflow2.4.1

我希望有人给你的TF2.4.1环境配RTX 30X0。 更具体地说,我想知道 nvidia 驱动程序、CUDA 和 CuDNN 版本。毕竟还有TF2.4.1的安装方式。

我正在努力将 tensorflow2.4.1 安装到我的 PC 中,如下所示。 OS : Ubuntu 20.04(版本无所谓) CPU:锐龙 5600X 显卡:RTX 3070

根据以下站点,我知道 TF2.4.1 的要求是 CUDA11.0 w/ CuDNN8.0.4。

https://www.tensorflow.org/install/gpu

但是,NVIDIA 驱动程序版本 457 是 RTX 3070 的第一个版本,当前最新版本是 Ver.460。因此,我在终端上安装了版本 460 和 'nvidia-smi' returns。 (如您所知,CUDA 11.2 版未随此驱动程序一起安装。)

| NVIDIA-SMI 460.73.01 驱动程序版本:460.73.01 CUDA 版本:11.2 |

下面来自 NVIDIA 站点的支持矩阵表明 CUDA 11.0 适用于驱动程序版本 450。这意味着它不能是 RTX 3070 的那个。对于 RTX 3070,我认为 CUDA 11.2 或更高版本是那个,因为它支持 Ver.460。

https://docs.nvidia.com/deeplearning/cudnn/support-matrix/index.html

安装CUDA11.2 w/ CuDNN8.1.0后,我通过pip将tensorflow安装到pyenv。但是,TF 在 CPU 上运行。我通过返回“[]”的“tf.config.list_physical_devices('GPU')”确认 如我所料。 只要TF2.4.1对NVIDIA环境的限制有效,你说我这台PC上是不是不能制作TF环境?

我在 Ubuntu 的全新安装中尝试了很多模式。有一次安装ver.450失败,出现DPKG错误,不过我会再试一次。

我和你一样 ubuntu 20.4。但是为了让 tensorflow 能够很好地看到 GPU,最终对我有用的是: 张量流-GPU 2.2.0 库达10.1 cudnn 7.6 并且都带有版本为 460.73.01

的 NVIDIA 驱动器

谢谢大家。我发现我的问题已解决,如下所示。

安装Ubuntu20.04后,安装最新的NVIDIA驱动。 (也许不需要,因为它会随 CUDA 安装自动安装。)

sudo ubuntu-drivers devices
sudo apt-get install --no-install-recommends nvidia-driver-460
nvidia-smi
sudo reboot

安装TF2.4.1需要的CUDA11.0。 这次我引用了 runfile[local] 而不是之前失败的 deb[local] 。 https://developer.nvidia.com/cuda-11.0-update1-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=2004&target_type=runfilelocal

sudo apt update
wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_linux.run
sudo sh cuda_11.0.3_450.51.06_linux.run

*WARNING ‘找到驱动程序的现有包管理器安装。’ 出现在上面一行,我中止了它。改为在下面完成。

sudo sh ./cuda_11.0.3_450.51.06_linux.run --toolkit --silent –-override

确认usr/local/cuda-11.0/bin是否存在并编辑bashrc.

sudo vim ~/.bashrc

将以下两行添加到 bashrc。

export PATH=/usr/local/cuda-11.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

重新加载 bashrc

source ~/.bashrc

安装 CuDNN。提前下载皮重库。 https://developer.nvidia.com/rdp/cudnn-archive

cd Downloads
tar -xzvf cudnn-11.0-linux-x64-v8.0.4.30.tgz
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
sudo apt update

按照 https://www.tensorflow.org/install/pip?hl=ja 的指示安装 TF2.4.1。

sudo apt install python3-dev python3-pip python3-venv
cd Documents/ML/tf-test1
python3 -m venv test1
source test1/bin/activate
pip install --upgrade pip
pip list
pip install --upgrade tensorflow

检查TF是否安装正确

import tensorflow as tf
print(tf.__version__)
print(tf.config.list_physical_devices('GPU'))
print(tf.test.gpu_device_name())

当我执行我的 CNN 模型时,‘无法获得卷积算法。这可能是因为 cuDNN 未能初始化’发生为 fit()。然后我像往常一样在下面做了。

export TF_FORCE_GPU_ALLOW_GROWTH=true

然后整理出来。