ubuntu18.04安装pytorch、cuda、cudnn和miniconda

目录

0. 前言

1. nvidia驱动安装及卸载

1.1 安装

1.2 卸载

2. cuda-10.2安装验证及卸载

2.1 安装

2.2 验证

2.3 卸载

3. cudnn安装及验证

3.1 安装

3.2 验证

4. miniconda安装验证及卸载

4.1 安装

4.2 验证

4.3 卸载

5. pytorch安装验证及卸载相关

5.1 安装

5.2 验证

5.3 卸载

6. 其他问题

6.1 import torch失败

6.2 torch.cuda.is_available()返回值为false


0. 前言

我也不知道有没有装好,稍微记录一下安装步骤。提前说一下踩坑经历:

①一开始看别人的教程装了cuda11.4,后来担心太新了有问题,就卸载了cuda11.4并重装了cuda10.2;

②miniconda3安装的时候看别人的教程,误打误撞把miniconda3装到了管理员环境下(sudo su),千辛万苦卸载之后重新安装到普通环境里;

③cudnn安装顺利,没涉及到卸载;

④pytorch安装官网的命令有几个依赖怎么都装不上(应该是我没有梯子的缘故),没办法去清华镜像下载tar包;

⑤安装后import torch报错,后来按某篇博客的说法卸载pytorch重装之后又好了,最后import成功,但是torch.cuda.is_available()是false,发现是驱动和ubuntu内核不匹配,然后重装了nvidia的驱动。

总结一下:

  1. nvidia驱动版本470.103.01
  2. cuda版本10.2
  3. cudnn版本7.6.5
  4. pytorch版本1.10.1
  5. miniconda版本py37_4.8.3(应该是支持创建3.7及之前的所有python环境)

这里面最重要的是nvidia驱动,流程应该是先确定内核支持的nvidia驱动,再确定驱动支持的cuda版本,再根据cuda版本确定cudnn,再由cuda、cudnn、python版本共同确定pytorch,miniconda只要支持py3即可。

我安装的顺序导致我绕了很多弯路,本来想让读者也走走这些弯路,毕竟能够增加理解,但是考虑到大家时间宝贵,还是提前说明正确的方法。

驱动和cuda的匹配关系参见

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.htmlhttps://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html截取其中2个表格如下

ubuntu18.04安装pytorch、cuda、cudnn和miniconda_第1张图片

ubuntu18.04安装pytorch、cuda、cudnn和miniconda_第2张图片

1. nvidia驱动安装及卸载

1.1 安装

在命令行输入ubuntu-drivers devices,选择一个适合版本,我选的是470

ubuntu18.04安装pytorch、cuda、cudnn和miniconda_第3张图片

输入sudo apt install nvidia-driver-470安装nvidia驱动

1.2 卸载

输入sudo apt-get purge nvidia*卸载nvidia驱动

2. cuda-10.2安装验证及卸载

2.1 安装

CUDA Toolkit Archive | NVIDIA Developerhttps://developer.nvidia.cn/cuda-toolkit-archiveubuntu18.04安装pytorch、cuda、cudnn和miniconda_第4张图片

 我选择的是10.2这个版本

ubuntu18.04安装pytorch、cuda、cudnn和miniconda_第5张图片

 安装命令如下

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

2.2 验证

终端输入,有如下显示说明cuda安装成功

nvcc -V

 

2.3 卸载

ubuntu18.04安装pytorch、cuda、cudnn和miniconda_第6张图片

最后一行,查看针对linux的安装指导。进去后ctrl+f搜索uninstalll,第一个就是

ubuntu18.04安装pytorch、cuda、cudnn和miniconda_第7张图片

同样是最后一行(因为我用的是deb的安装方式),这里以卸载cuda10.2为例

sudo apt-get --purge remove cuda-10.2

使用上述nvcc -V方法验证cuda是否卸载成功,如果仍有相关显示则输入

sudo apt autoremove

最后再验证一遍

3. cudnn安装及验证

3.1 安装

cudnn需要匹配cuda的版本

cuDNN Archive | NVIDIA Developerhttps://developer.nvidia.com/rdp/cudnn-archiveubuntu18.04安装pytorch、cuda、cudnn和miniconda_第8张图片

我选择的是7.6.5版本,需要下载三个文件:

cuDNN Runtime Library for Ubuntu18.04 (Deb)

cuDNN Developer Library for Ubuntu18.04 (Deb)

cuDNN Code Samples and User Guide for Ubuntu18.04 (Deb)

ubuntu18.04安装pytorch、cuda、cudnn和miniconda_第9张图片

 下载完成后进入下载所在目录,再进入终端,输入如下3条命令安装上述3个文件

sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.2_amd64.deb
sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.2_amd64.deb
sudo dpkg -i libcudnn7-doc_7.6.5.32-1+cuda10.2_amd64.deb

3.2 验证

ubuntu18.04安装pytorch、cuda、cudnn和miniconda_第10张图片

cd /usr/src/
ls

可以看见有一个cudnn_samples_v7的文件夹

再依次输入

cd cudnn_samples_v7/mnistCUDNN
sudo make clean
sudo make
sudo ./mnistCUDNN

可以看到测试程序正在运行ubuntu18.04安装pytorch、cuda、cudnn和miniconda_第11张图片

最后结果如下

ubuntu18.04安装pytorch、cuda、cudnn和miniconda_第12张图片

4. miniconda安装验证及卸载

4.1 安装

Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirrorhttps://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?C=M&O=A我找的版本是Miniconda3-py37_4.8.3-Linux-x86_64.sh

下载完成后,在Downloads文件夹里进入终端,输入

bash Miniconda3-py37_4.8.3-Linux-x86_64.sh

中间问你是否选择是否接受什么的都选择yes,这里需要留意默认的安装路径以备日后卸载

安装完成后关闭终端,重新打开

输入如下命令让conda接管默认python

conda config --set auto_activate_base true

4.2 验证

安装完毕后重启终端,可以看到用户名@计算机名前出现了(base)

4.3 卸载

由于一开始我看了他的教程,用的./来运行安装程序,显示没权限,sudo也没用

ubuntu下miniconda安装_alex1801的博客-CSDN博客_ubuntu安装minicondahttps://blog.csdn.net/weixin_34910922/article/details/118161554我就直接sudo su进入root了,然后把miniconda装到root里了,root里的默认安装路径又和一般的不一样,导致我花了很多时间找安装路径

这里说下通用的卸载方法

默认安装路径是/home/用户名/miniconda3

首先用rm -rf /home/用户名/miniconda3/删除该文件夹里的所有文件,再输入

vim .bashrc

一般是在最末尾,注释掉环境变量(这里是我误装在root下的miniconda的注释环境变量的示意,root下的.bashrc和普通环境下的.bashrc里面的内容是不一样的)

ubuntu18.04安装pytorch、cuda、cudnn和miniconda_第13张图片

 保存后使用source .bashrc重新激活环境变量文件,重启终端后验证是否存在base

(误装在root里的需要进root看base是否还在)

5. pytorch安装验证及卸载相关

5.1 安装

还是去清华源Index of /anaconda/cloud/pytorch/linux-64/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirrorhttps://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/这里我选择的是pytorch-1.10.1-py3.6_cuda10.2_cudnn7.6.5_0.tar.bz2

一般来说miniconda装完之后,要新建一个python环境,然后把pytorch装在指定的环境里,这里我从简了(我是把pytorch装在base里,然后新建了一个python3.6的环境,不建议大家采用)

上述文件下载完之后,进入Downloads目录打开终端输入

conda install pytorch-1.10.1-py3.6_cuda10.2_cudnn7.6.5_0.tar.bz2

5.2 验证

安装完成后终端输入python后再依次输入,如果能import成功,并且torch.cuda.is_available()的返回值是true说明pytorch安装成功

import torch
torch.cuda.is_available()

5.3 卸载

卸载pytorch(我也不知道下面哪个指令是对的,我是在history里看的历史指令)

conda uninstall pytorch
conda remove pytorch

6. 其他问题

6.1 import torch失败

我在第一步import torch时出现了报错信息如下

OSError: libmkl_intel_lp64.so: cannot open shared object file: No such file or directory
这时需要先卸载pytorch,再重新用

conda install pytorch-1.10.1-py3.6_cuda10.2_cudnn7.6.5_0.tar.bz2

命令安装,就可以成功import torch了

6.2 torch.cuda.is_available()返回值为false

这里我的情况比较特殊,首先在终端输入nvidia-smi无法正常显示,出现如下报错信息

NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running

但是终端输入nvcc -V显示cuda安装成功,cudnn验证时说找不到设备,也进一步说明nvidia驱动有问题。

针对这个报错信息,网上很多博客都是用的下面这个方法

NVIDIA驱动失效简单解决方案:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver._AI 菌的博客-CSDN博客前言: 以下方法,不需要重装驱动,简单快捷。适用于Ubuntu系统下,之前已经安装过驱动,但驱动失效的问题。如果此方法仍然无法解决问题,可参考Ubuntu下安装nvidia显卡驱动,重装驱动。前段时间刚装了驱动:Ubuntu下安装nvidia显卡驱动但是最近准备用GPU跑模型时,提示cuda 不存在。前段时间刚装的驱动,怎么会不存在呢?第一步,打开终端,先用nvidia-smi查看一下,发现如下报错:NVIDIA-SMI has failed because it couldn't com.https://blog.csdn.net/wjinjie/article/details/108997692但是在我这并不奏效,查阅资料后发现大概率是ubuntu内核版本和nvidia驱动版本不匹配,需要重装驱动。

用第一节的方法卸载后重装新的驱动。在终端用nvidia-smi验证nvidia驱动是否安装成功,再进入python重新查看torch.cuda.is_available()的返回值,发现为true,大功告成。

7. 后续

我在安装miniconda之前安装了py3.7,并且将py3.7设置为默认python版本。当我在miniconda py3.6的环境里想要安装一个包的时候,首先用conda install失败,用pip install会安装到py3.7而非当前虚拟环境,于是卸载conda,卸载py3.7。但是py3.7一卸载系统就出问题了,重启后进不了图形界面。重装了desk后,系统又给我自动安装了py3.7。

ubuntu系统只会携带py2.7用于系统用途,多出来的py3.7一旦卸载就会失去图形界面,一旦安装图形界面就会安装py3.7。无奈只能重装系统。

重装系统后,我按照本篇博客所说的,先装nvidia驱动,再装cuda,结果失败了:首先安装nvidia 470的驱动,接着安装cuda的时候会自动安装440的驱动,覆盖了我之前的驱动。卸载440驱动,再装470驱动又会导致nvidia-smi和nvcc -V报错。

找了一圈,要下载.sh版的cuda,在安装的时候不选择安装驱动(.deb版的cuda会自动安装驱动无法选择)。至此cuda安装完毕,nvcc -V显示正常。但是nvidia-smi和nvcc -V中的cuda版本却不一致2,nvidia-smi中的cuda版本是11.4,nvcc -V中的cuda版本是10.2。卸载cuda11.4却提示没有安装过cuda11.4,猜测这里的cuda11.4可能是驱动470内置的,看网上有人说是正常的我就没管了。

思考:重装系统前,nvidia-smi和nvcc -V中的cuda版本是一致的。复盘之前的安装流程,我先装了470的驱动,此时输入nvidia-smi发现cuda版本是11.4,于是去官网下载了cuda11.4.deb,安装完成后发现版本太高,于是卸载了cuda11.4,安装了cuda10.2,此时cuda10.2.deb内置的驱动440也自动替换了我原先的驱动470。后来因为内核版本不支持驱动440,导致torch.cuda.is_available()返回值为false,然后卸载了驱动440,重新安装了驱动470。最后使得nvidia-smi和nvcc -V中的cuda版本一致。两次安装cuda的区别可能就在于我第一次安装时先安装了cuda11.4,卸载的时候将驱动470内置的cuda11.4也卸载掉了

安装完nvidia驱动和cuda后,我又安装了cudnn和miniconda,然后在miniconda中新建了一个py3.6的虚拟环境,切换到虚拟环境中安装pytorch,按照我这篇博客的流程,我安装pytorch又失败了,试了网上的所有方法都没用。无奈只能conda install pytorch安装默认版本,在此之前我将conda的下载链接替换为了清华镜像。

pytorch安装的过程中,我看见他给我安装了一个cudatoolkit10.1,心想着我已经安装了cuda10.2了,这两者会不会冲突。最后安装完毕,试了下目前为止一切正常。

你可能感兴趣的:(深度学习,python,cuda,nvidia,miniconda,pytorch)