[0]安装深度学习框架与Pytorch


1.错误操作流程

注:此文安装的是GPU版本

1.首先安装CUDA

  • 打开命令行,在命令行中输入nvcc -V ,发现结果为:

cube studio 前端镜像打包_cube studio 前端镜像打包

  • 进入NVIDIA控制面板:

cube studio 前端镜像打包_pytorch_02

  • 点击左下角的系统信息

cube studio 前端镜像打包_深度学习_03

  • 尽量将驱动器版本更新为最新:

cube studio 前端镜像打包_CUDA_04

  • 最高能够使用图中所标识的CUDA驱动器选择下载≤12.0版本的CUDA

cube studio 前端镜像打包_cube studio 前端镜像打包_05

下载链接

cube studio 前端镜像打包_深度学习_06

在更改完环境变量后,电脑未重启

cube studio 前端镜像打包_CUDA_07

2.安装cuDNN

  • 进入官网首先需要注册,填写个人相关信息,然后根据上一步安装CUDA版本的不同,选择安装包

cube studio 前端镜像打包_CUDA_08

这个安装包不大,很快,解压后将文件名更改为cudnn,

cube studio 前端镜像打包_CUDA_09

cube studio 前端镜像打包_cube studio 前端镜像打包_10

  • 然后将cudnn复制到CUDA的安装目录上,如果是自定义安装路径,就复制到自定义路径中

cube studio 前端镜像打包_cube studio 前端镜像打包_11

  • 配置环境变量
  • 由于CUDA安装系统自己添加的路径不用改变;
  • 由于安装了cuDNN,需要将cuDNNbin文件添加上上,我这样的是成功了的:

cube studio 前端镜像打包_CUDA_12

  • 最后打开命令行,在命令行中输入nvcc -V ,发现结果为:

cube studio 前端镜像打包_pytorch_13

3.安装Pytorch

  • 进入官网,反复尝试:
  • 更换版本号为11.811.111.3均不成功;
  • 尝试换成国内清华源,也出现Solving environment: failed with initial frozen solve. Retrying with flexible solve.问题;
  • 尝试指定各安装包的版本:

conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.6 -c pytorch——还是相同的错误;

  • 脑子灵机一动,想到已经安装了CUDA,所以cudatoolkit不需要指定安装了
  • 再次尝试conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1,抱错:
    PackagesNotFoundError: The following packages are not available from current channels:torchaudio==0.12.1
  • 于是推断是当前源中没有torchaudio==0.12.1
  • 最后决定,逐一安装pytorchtorchvisiontorchaudio
  • 意外之中——pytorchtorchvision成功安装但torchaudio安装失败;
  • 通过查看以下路径中是否存在torchaudio,最终是未搜索到(所以报错找不到该安装包);

cube studio 前端镜像打包_CUDA_14

  • 经过查询,需要运行命令conda install -c pytorch torchaudio才能够成功安装torchaudio;

4.验证

Anaconda Prompt中运行python,然后是:

import torch
torch.__version__
torch.cuda.is_available()

cube studio 前端镜像打包_CUDA_15

意料之外,竟然出错了,内心极度煎熬,开始找错

2.正确流程
  1. 经过上述操作错误后,开始上网搜索解决方案——博客,主要存在两种原因:
  1. 已安装的CUDA版本与pytorch版本不对应;
  2. 下载成了CPU版本的pytorch

针对原因1思考与解决:

  • 之前采用的conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 -c pytorch(与CUDA11.6匹配),但是提前安装的是CUDA11.8版本,于是将原来的CUDA11.8卸载,重新安装CUDA11.6(这次从官网下载的network版本的,证明比下载local版本的要快很多);
  • 在安装CUDA11.6的同时安装版本对应的cuDNN,不要忘记确认环境变量进行配置(博客);
  • 然后再次尝试torch.cuda.is_available(),还是False;
  • 这篇博客给了我很大启发,我是在Anaconda上新建虚拟环境然后搭建框架的
# 查看本机安装的CUDA版本
nvidia-smi
nvcc -V
# 强调在虚拟环境中要以nvcc -V查到的版本为主

这是我通过conda安装的cudatoolkit

cube studio 前端镜像打包_cube studio 前端镜像打包_16

可以看到,通过nvcc获得的Cuda版本为11.6

然而,通过nvidia获得的Cuda版本为12.0

cube studio 前端镜像打包_CUDA_17

  • 1.Nvidia提供的cudatoolkit与conda安装的cudatoolkit是不相同的,对于Pytorch类的深度学习框架,大多数使用GPU时只需要使用CUDA的动态链接库,并不需要重新进行编译,因此只要安装了cudatoolkit(系统存在与之兼容的Nvidia驱动)就可以运行
  • 2.nvidia显示的cuda版本只是pytorch安装时编译安装的版本,而anaconda为其安装的cudatoolkit中的cuda版本才是真正的pytorch运行版本
  • 3.从博客中学习到当本机中存在多个cuda版本时的调用执行顺序,默认cuda安装目录>自定义目录的cuda(nvcc)>通过conda安装的目录>未得到库文件目录则不使用cuda
  • 4.由于事先在本机默认位置安装了cuda,所以之后会调用安装的11.6的cuda,但我在虚拟环境中安装的是11.3版本的cuda,所以选择——将安装在本机上的cuda删除,只在虚拟环境中安装cudatoolkit
  • 最后,再次进行尝试torch.cuda.is_available(),还是False;
  • 突然,我记起来我还没有安装cuDNN:
  • 强烈推荐采用这个博客的方法,能够实现cudacuDNN的版本匹配
  • 也可以上这个网站一一对应下载正确的cuDNN

针对原因2思考与解决:

  • 当我感觉我已经排除了第1个原因后,执行conda list,竟然发现了了不得的东西:

cube studio 前端镜像打包_pytorch_18

为什么我的pytorch是cpu版本的???

几点说明:

  • 我全部采用的默认源——conda config --remove-key channels,并未采用镜像源;
  • 然后当时安装pytorch时采用的是命令conda install pytorch==1.12.1
  • 由下图可知是在网站上搜索pytorch==1.12.1手动搜索后发现只有cpu版本

cube studio 前端镜像打包_cube studio 前端镜像打包_19

cube studio 前端镜像打包_CUDA_20


cube studio 前端镜像打包_深度学习_21

  • pytorch官网上的安装命令为
# CUDA 11.3  
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
  • -c pytorch猜测是从pytorch上进行安装的,于是在删除原来的cpu版本的安装包后(pytorch torchvision):
conda uninstall pytorch
conda uninstall torchvision
  • 执行以下命令,从pytorch安装pytorchtorchvisiontorchaudio
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 -c pytorch

cube studio 前端镜像打包_pytorch_22

注:其中pytorch安装的速度较慢,若网络环境实在不好,需要在-c pytorch后面添加镜像源(镜像源的位置一定不要弄错)

conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 -c pytorch -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/

cube studio 前端镜像打包_镜像源_23


注:上述这仅仅是下载了pytorch

cube studio 前端镜像打包_pytorch_24


注:上述是对应版本的torchvision

cube studio 前端镜像打包_深度学习_25


注:上述是对应版本的torchaudio

  • 最后测试环节:
# 进入python
import torch
print(torch.cuda.is_available())  # True
print(torch.backends.cudnn.is_available())  # True
print(torch.cuda_version)  # 11.3
print(torch.backends.cudnn.version())  # 8302
### Succeed!

补充镜像源:

  • 若想要通过镜像源安装cudatoolkitcudnn
# 安装cudatoolkit
conda install cudatoolkit==11.3 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64/

# 需要注意的是——较高版本的cudatoolkit镜像源上不一定有,例如清华源cudatoolkit的最高版本为11.3,但目前官方cuda已经更新至11.6和11.8,所以有限使用默认源,实在不行再使用镜像源,使用镜像时一定要手动搜索是否存在对应版本的文件(否则就会报错)
# 同样,cuDNN也是如此,镜像源上的版本较低,优先使用默认源下载

### 若镜像源上没有满足版本要求的文件,默认源下载速度又过慢————只能采取在默认源对应的网站上手动下载,在进行安装!!!

cube studio 前端镜像打包_pytorch_26


cube studio 前端镜像打包_深度学习_27

总结

1.通过Anaconda在虚拟环境中安装pytorch环境;

2.确定安装环境时的python版本;

3.检查本机可驱动的最大cuda版本(通过Nvidia Corporation Panel实现);

4.在虚拟环境中(下同)安装cudatoolkit;

5.安装cudnn;

6.安装pytorch(-c pytorch)

7.安装torchvision;

8.安装torchaudio

Note:第678步有可能能通过一条命令实现;

9.测试