目录
序言
pytorch已经是本人深度学习最主要的网络搭建和训练工具了。不管是在Windows、Linux还是WSL上,都需要安装pytorch。这里默认已经装好了Anaconda3,(WSL和Linux几乎一致,一行wget xxx.sh就可以,之后不再区分;Windows图形化界面也很方便)。在此基础上安装多个pytorch版本。虽然是基于几天前装好的WSL基础上完成的pytorch安装,但在ubuntu和windows系统下也同样适用。
摘要
安装pytorch+cuda时前往pytorch官网的previous versions直接使用官方命令。
https://pytorch.org/get-started/previous-versions/
如安装pytorch1.10.0 直接一行:
pip install torch==1.10.0+cu111 torchvision==0.11.0+cu111 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html
conda子环境里,这条命令在安装pytorch的同时安装相应的cudatoolkit,and一定要pytorch和cudatoolkit一起安装,能省下不少麻烦。
在几分钟的下载whl等待后,查询是否安装成功。
import torch
torch.cuda.is_available()
以上是最顺利的安装pytorch方式。
虽然Nvidia的生态已经是相对最成熟的了,但显卡技术本身还是处于一个不成熟的状态,安装过程中可能有各种各样奇怪的报错。有时装不好cuda/cudnn/pytorch等等环境未必是自己的原因,它确实还在发展,也许未来经过完善总结,能方便的点一下就装好。
显卡驱动、CUDA、cudatoolkit
以下是目前总结的两个结论,也许并不严谨,但能帮助理解:
1、pytorch需要的cudatoolkit是CUDA的某种子集,仅包含了深度学习训练所需部分。
因此,pytorch的安装不需要CUDA,只需要cudatoolkit。
我的Windows没有安装CUDA,WSL没有安装CUDA,但能正常安装pytorch+cudatoolkit。
查看CUDA是否安装的方式(不管是Windows还是Linux):
nvcc -V
或者查看安装路径,一般Windows的CUDA安装在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v*;Ubuntu的CUDA安装在\usr\local\cuda*,若找不到该路径,确实没有安装CUDA。
2、系统的Nvidia Driver决定着系统最高支持什么版本的CUDA和cudatoolkit(可以认为越高越好,如下图的546.29)
https://blog.csdn.net/weixin_45647721/article/details/127429179
通过nvidia-smi可以看到的只是显卡驱动版本(如下图的546.29),我的主机根本没装CUDA,nvidia-smi显示CUDA Version12.3,这其实是不对的。
nvidia官网可以看到具体的显卡驱动版本可支持的最高CUDA/cudatoolkit
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
pytorch python torchvision版本对应
这个版本是一定要对应的,
pytorch和python版本的对应最直接和最更新的是看pytorch下载的地方:
https://conda.anaconda.org/pytorch/linux-64/
总的来说,python3.8及以上的版本都可以用最新版的pytorch2.1.2,因此最新的pytorch基本保证python3.9没问题,pytorch 1.5支持python3.5-3.8,从pytorch1.8.1开始支持python3.9。
截至目前python最新有3.12,但最新的pytorch2.1.2最高python3.11。
有博客https://www.cnblogs.com/-yhwu/p/16298061.html 给出了更详细的图:
其它记录
Conda install 一直Solving environment
一直卡在Solving environment,可能是conda安装pytorch本身的一些问题,有一些教程提到换源,亲测也没有什么用,pytorch的安装还是转用pip install 吧。
3090支持的最低CUDA版本是11?4090支持最低的CUDA版本?
有一个大误会:一直听说RTX 3090支持的最低CUDA版本是11,因此无法装低版本的pytorch。
这个说法既不严谨也不正确。CUDA版本对应了系统版本的(完整版)和pytorch所需版本(部分版)
分别称为CUDA和cudatoolkit。
由上述结论2,理论上显卡驱动是向下兼容的,越高的显卡驱动可以适配越高的CUDA版本,理论上不存在支持的最低CUDA版本一说。https://www.cnblogs.com/isLinXu/p/17359952.html 该教程是4090配了python3.9+cuda11.6+pytorch1.13.1
*经过实践,在3090的服务器上装了pytorch1.6.0+cuda10.1完全没有问题
产生这种误会的原因可能来自于下图:
https://en.wikipedia.org/wiki/CUDA
众所周知,40系显卡都是Ada Lovelace架构的(还有最近的RTX 6000Ada 5880 Ada)
保险起见,Windows安装的完整CUDA(如果有需求的话,如进行CUDA编程nvcc编译等),还是按照上图来,也即3090装11以上,4090(以及一系列40系和Ada架构的显卡)装11.8以上的CUDA。但事实上,就pytorch的gpu版来说,是用不着的。
Windows下载torch1.10.0+cu111连带torchvision报错
官网中写安装命令既适用于linux,也适用于windows。
但很尴尬,windows没有torchvision0.11.0+cu111,官网这条命令错了,有点坑。也呼应了摘要中说的显卡相关技术其实是不那么成熟的。
报错:Error:no matching distribution found for torchvision==0.11.0+cu111
更详细地分析可见:https://blog.csdn.net/weixin_39450145/article/details/126444591
最终,用如下命令安装torch1.9.1了。
pip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html
下载速度相关
好像和科学上网没什么必然关系,在延时不那么大的线路下也容易速度会不稳定,建议看到速度降到100KB/s且维持不变的时候,换个VPN线路中断重来一下。MB/s级别的网速比较可以接受。
linux pip安装选择延时较小的线路,选择了130ms的下载速度达到10MB/s。