[0]安装深度学习框架与Pytorch
1.错误操作流程
注:此文安装的是GPU版本
1.首先安装CUDA
- 打开命令行,在命令行中输入
nvcc -V
,发现结果为:
- 进入
NVIDIA
控制面板:
- 点击左下角的系统信息
- 尽量将驱动器版本更新为最新:
- 最高能够使用图中所标识的CUDA驱动器,选择下载≤12.0版本的CUDA
在更改完环境变量后,电脑未重启
2.安装cuDNN
- 进入官网首先需要注册,填写个人相关信息,然后根据上一步安装CUDA版本的不同,选择安装包
这个安装包不大,很快,解压后将文件名更改为cudnn
,
- 然后将
cudnn
复制到CUDA
的安装目录上,如果是自定义安装路径,就复制到自定义路径中
- 配置环境变量
- 由于
CUDA
安装系统自己添加的路径不用改变; - 由于安装了
cuDNN
,需要将cuDNN
的bin
文件添加上上,我这样的是成功了的:
- 最后打开命令行,在命令行中输入
nvcc -V
,发现结果为:
3.安装
Pytorch
- 进入官网,反复尝试:
- 更换版本号为
11.8
或11.1
或11.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
; - 最后决定,逐一安装
pytorch
、torchvision
、torchaudio
- 意外之中——
pytorch
、torchvision
成功安装但torchaudio
安装失败; - 通过查看以下路径中是否存在
torchaudio
,最终是未搜索到(所以报错找不到该安装包);
- 经过查询,需要运行命令:
conda install -c pytorch torchaudio
才能够成功安装torchaudio
;
4.验证
在Anaconda Prompt
中运行python
,然后是:
import torch
torch.__version__
torch.cuda.is_available()
意料之外,竟然出错了,内心极度煎熬,开始找错
2.正确流程
- 经过上述操作错误后,开始上网搜索解决方案——博客,主要存在两种原因:
- 已安装的
CUDA
版本与pytorch
版本不对应; - 下载成了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
可以看到,通过nvcc获得的Cuda版本为11.6
然而,通过nvidia获得的Cuda版本为12.0
- 从博客中学习到:
- 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
:
针对原因2思考与解决:
- 当我感觉我已经排除了第1个原因后,执行
conda list
,竟然发现了了不得的东西:
为什么我的pytorch是cpu版本的???
几点说明:
- 我全部采用的默认源——
conda config --remove-key channels
,并未采用镜像源; - 然后当时安装
pytorch
时采用的是命令conda install pytorch==1.12.1
; - 由下图可知是在网站上搜索
pytorch==1.12.1
:手动搜索后发现只有cpu版本
-
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
安装pytorch
、torchvision
、torchaudio
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 -c pytorch
注:其中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/
注:上述这仅仅是下载了pytorch
注:上述是对应版本的torchvision
注:上述是对应版本的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!
补充镜像源:
- 若想要通过镜像源安装
cudatoolkit
和cudnn
:
# 安装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也是如此,镜像源上的版本较低,优先使用默认源下载
### 若镜像源上没有满足版本要求的文件,默认源下载速度又过慢————只能采取在默认源对应的网站上手动下载,在进行安装!!!
总结
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.测试