Ubuntu 18.04 LTS 安装多版本可切换CUDA及相应的cudnn pytorch tensorflow(Miniconda环境)

0 一些推荐版本

各软件经常会出现版本适配问题,这里贴一下别人验证过的版本:

2022【超详细】搭建深度学习环境与配置 tensorflow2.7+keras2.7+CUDA11.6+cuDNN 对应版本_cuda11.6对应的cudnn_霍灵渊的博客-CSDN博客

python3.7.0+CUDA11.6.0+cuDNN8.3.2+tensorflow2.7.0+Keras2.7.0
python3.7.0+CUDA11.3.1+cuDNN8.2.1+tensorflow2.7.0+Keras2.7.0
python3.7.0+CUDA10.1.2+cuDNN7.6.5+tensorflow2.2.0+keras 2.3.1

如果你想自己找合适的适配版本,可以先到tensorflow或pytorch上看一下需要的对应版本,按他需要的安装比较合适。

Build from source  |  TensorFlow (google.cn)

Previous PyTorch Versions | PyTorch

本文的安装示例为:

python 3.8+CUDA11.3+CUDA10.2+cuDNN8.5.0+tensorflow2.10
 

1 安装多版本可切换CUDA(以cuda 11.3与10.2为例)

1.1 从官网下载所需版本的cuda安装包(可直接跳到1.2,该节仅是为了介绍下载网站及卸载原有cuda方式)

        https://developer.nvidia.com/cuda-toolkit-archive

        选择所需版本使用wget+url下载即可(若要多版本cuda安装,Installer Type选择为runfile(因为使用deb文件进行安装的话,可能会将已经安装的显卡驱动给替换掉)

        cuda与driver对应表在下面这个连接的 CUDA Driver 选项卡下:

CUDA 12.2 Release Notes — cuda-toolkit-release-notes 12.2 documentation (nvidia.com)

卸载原有CUDA:

1. apt方式:

         sudo apt --purge remove cuda-11.4

         sudo apt autoremove

         sudo apt autoclean

         sudo rm -rf /usr/local/cuda-11.4/

2. cuda自带卸载脚本

        cd /usr/local/cuda-xx.x/bin/
        sudo ./cuda-uninstaller
        sudo rm -rf /usr/local/cuda-xx.x

1.2 安装cuda

        选择下载时下面附带了安装方式:

wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.run

sudo chmod +x cuda_11.3.1_465.19.01_linux.run

使用

sudo ./cuda_11.3.1_465.19.01_linux.run

进行cuda安装程序。若执行后光标停住不动请等待。

若第1步提示Existing package manager installation of the driver found. It is strongly recommended that you remove this before continuing.选择continue,同意协议后,在下一步中使用回车键去除driver项,之后选择install。

完成后应该有如下显示: 

1.3 设置环境变量

vim ~/.bashrc

# cuda
export LD_LIBRARY_PATH=/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin

使用

source ~/.bashrc

应用环境变量

1.4 测试cuda是否已安装

nvcc -V

 import torch

print('CUDA版本:', torch.version.cuda)
print('Pytorch版本:', torch.__version__)
print('显卡是否可用:', '可用' if (torch.cuda.is_available()) else '不可用')
print('显卡数量:', torch.cuda.device_count())
print('是否支持BF16数字格式:', '支持' if (torch.cuda.is_bf16_supported()) else '不支持')
print('当前显卡型号:', torch.cuda.get_device_name())
print('当前显卡的CUDA算力:', torch.cuda.get_device_capability())
print('当前显卡的总显存:', torch.cuda.get_device_properties(0).total_memory / 1024 / 1024 / 1024, 'GB')
print('是否支持TensorCore:', '支持' if (torch.cuda.get_device_properties(0).major >= 7) else '不支持')
print('当前显卡的显存使用率:', torch.cuda.memory_allocated(0) / torch.cuda.get_device_properties(0).total_memory * 100,  '%')

2 安装cuDNN

历史版本cuDNN链接:

库DNN 存档 |英伟达开发者 (nvidia.com)

官方安装文档如下:

安装指南 - NVIDIA 文档

2.1 安装cudnn(本地安装)

下载cudnn 8.5.0 for 11.x (x86_64版本)

cuDNN Archive | NVIDIA Developer

直接使用wget下载并不可行,应该是因为下载cudnn需要登陆的原因

使用本地安装,需要提前下载好.deb包后放置到Ubuntu系统中,然后使用

1.3.2. Debian 本地安装

对其进行安装

官方文档对Ubuntu只写了apt网络安装方式,不过Ubuntu是基于Debian系统,因此可以使用Debian本地安装方式

解压.deb包

 sudo dpkg -i cudnn-local-repo-ubuntu1804-8.5.0.96_1.0-1_amd64.deb

添加gpg密钥

上一个命令执行完后会提示复制gpg密钥文件,复制提示的命令即可

类似这样

sudo cp /var/cudnn-local-repo-ubuntu1804-8.5.0.96/cudnn-local-7B49EDBC-keyring.gpg /usr/share/keyrings/

更新库:

sudo apt-get update

安装cudnn

sudo apt-get install libcudnn8=8.5.0.96-1+cuda11.7
sudo apt-get install libcudnn8-dev=8.5.0.96-1+cuda11.7
sudo apt-get install libcudnn8-samples=8.5.0.96-1+cuda11.7

此处虽然我是cuda 11.3,但我安装的时候选的11.7,是因为8.5版本无11.3的版本,执行会报错,但cudnn一般是支持11.x整个系列,所以都可以使用

找到相应版本的方式:

        输入

        sudo apt-get install libcudnn8=8.5

        后,按两次Tab键就会提示可安装版本

 安装完成后,跳转至本文2.3部分,测试安装是否成功

2.2 安装cudnn(网络安装,建议本地安装,网络安装这里官方文档有些问题)

2.2.1 添加网络存储库

        使用官方安装指南中3.10.3 的第2部分添加网络存储库:

        1. Introduction — cuda-installation-guide-linux 12.2 documentation

        $distro/$arch需替换为ubuntu1804/x86_64(以ubuntu 18.04 x64 为例)

示例:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-keyring_1.1-1_all.deb

sudo dpkg -i cuda-keyring_1.1-1_all.deb

2.2.2 安装 cuDNN 示例:

        使用官方安装指南中

        1.3.4.1. Ubuntu/Debian 网络安装 

        的第二部分进行安装

示例:

sudo apt-get install libcudnn8=8.2.0.53-1+cuda11.3
sudo apt-get install libcudnn8-dev=8.2.0.53-1+cuda11.3
sudo apt-get install libcudnn8-samples=8.2.0.53-1+cuda11.3

但是我在安装时会在第三句报错,通过

apt list -a libcudnn-samples

查看,发现samples包并没有8.9之外的版本,既然如此,我决定放弃这种安装方式,使用本地安装方式

实际如果执行到这步也可以手动从

https://developer.nvidia.com/compute/machine-learning/cudnn/secure/8.2.0.53/11.3_04222021/Ubuntu18_04-x64/libcudnn8-samples_8.2.0.53-1+cuda11.3_amd64.deb

下载samples包,但感觉既然如此,还不如直接使用本地安装的方式,就remove掉之前的包使用本地安装的方式了。

2.3 测试是否成功安装

sudo apt-get install libfreeimage3 libfreeimage-dev

cp -r /usr/src/cudnn_samples_v8/ $HOME
cd $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make
./mnistCUDNN

应该会获得如下结果: 

运行环境测试:

import torch
from torch.backends import cudnn 

print(cudnn.is_available()) # 若正常返回True
a = torch.tensor(1.)
print(cudnn.is_acceptable(a.cuda()))  # 若正常返回True

3 多版本环境安装

3.1 安装多版本cuda环境

        将1.2部分重新执行一遍,版本改为另一个所需要的版本(执行过程中会提示已有symlink是否更新,更新即可)

        而后使用

cd /usr/local/

ls -l

        查看该目录,可以看到有两个版本的cuda

3.2 安装多版本cudnn环境

        执行3.3部分,切换cuda至10.2版本

        将2.1部分重新执行一遍,版本改为另一个所需要的版本

        执行2.3 部分再次测试cuda 10.2上的cudnn是否安装完成

3.3 切换cuda版本

        如果需要切换版本,则执行如下步骤,10.2更换为你需要的版本

sudo cd /usr/local/
sudo rm -rf cuda  # 删除原有的软链接
sudo ln -s /usr/local/cuda-10.2 /usr/local/cuda  # 将cuda-10.2链接到cuda下

 使用

nvcc -V

查看现在使用的cuda版本,可以看到现在使用的是10.2了

3.4 多版本tensorflow和pytorch

此处只需要使用conda建立不同虚拟环境即可实现版本切换,后续也就不再赘述

4 Tensorflow(以tensorflow2.10为例)

Tensorflow版本对应表:

Build from source  |  TensorFlow (google.cn)

直接使用

conda install tensorflow-gpu

安装即可,conda会自动选择合适的版本

如果出现如下报错:

        EnvironmentNotWritableError: The current user does not have write permissions to the target environment.

        environment location: conda的路径

则执行如下命令:

        sudo chmod -R 777 conda路径

如果需要指定版本(以2.10.0为例):

conda install tensorflow-gpu==2.10.0

测试方法:

import tensorflow as tf

print(tf.__version__)  # 查看tensorflow版本
print(tf.__path__)  # 查看tensorflow安装路径

a = tf.test.is_built_with_cuda()  # 判断tensorflow与CUDA连接是否可以用
b = tf.test.is_gpu_available(
    cuda_only=False,
    min_cuda_compute_capability=None
)  # 判断GPU是否可以用

print(a)  # 显示True表示CUDA可用
print(b)  # 显示True表示GPU可用

# 查看驱动名称
if tf.test.gpu_device_name():
    print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
else:
    print("Please install GPU version of TF")

 注:重装tensorflow或者修改版本时,需要将protobuf也一同重装,版本不匹配会导致不可用

5 pyTorch

pyTorch先前版本列表(包含安装命令及版本对应)

Previous PyTorch Versions | PyTorch

链接里包含了各版本各系统的安装方法及对应版本

示例(以Linux pyTorch 1.12.1为例):

# CUDA 11.3
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch

Reference:

NVIDIA驱动、CUDA、cuDNN、Torch、Tensorflow对应版本一文搞明白_nvidia驱动对应的cuda版本-CSDN博客

Ubuntu22.04安装CUDA、cudnn详细步骤_ubuntu安装cuda和cudnn_takedachia的博客-CSDN博客 Ubuntu20.04系统下安装cudnn8.2.1详细过程及遇到的问题与解决(已安装cuda11.3,不同版本类似)_qq_43453738的博客-CSDN博客2022【超详细】搭建深度学习环境与配置 tensorflow2.7+keras2.7+CUDA11.6+cuDNN 对应版本_cuda11.6对应的cudnn_霍灵渊的博客-CSDN博客

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值