[PyTorch] 安装笔记, 基于Windows10/cuda11.6
在此记录下我的PyTorch安装步骤, 帮助大家以及未来的我自己.
如果你的配置和我不太一样, 也可以参考着安装. 应该没啥大问题.
本教程写于2022年7月17日. 如果你发现日期比较古老了那么还是建议找点新的教程吧.
版本: PyTorch GPU @cuda11.6
系统: Windows10
显卡: GTX1660Ti&maxQ @6GB GRAM
安装的Python版本: Python3.8
c/c++运行库: 把能安装的都安装了一遍 (打游戏必备)
1. 初期检查
1.1. c/c++运行库
首先检查系统版本和c/c++运行库版本. 如果后期出现各种问题, 有可能是c/c++运行库的问题, 安装了就好了.
一般来说Windows的各个版本安装一遍MSVC运行库即可.
微软的文档写的还是很好的, 可以跟着把该下载的下载了.
1.2. Python版本
PyTorch很脆弱, 你必须Python版本+PyTorch版本+torchversion版本+torchaudio版本+cuda版本完全一一对应才能正常使用.
Python版本很好检查, 只需要随便调出一个终端(terminal)运行一下就能看到版本了. 如果你已经安装了一个合适的Python版本并且添加到了环境变量中(通常所说的Path), 那么直接在终端输入python应该就能看到了.
Windows用户: win+R -> 输入PowerShell然后点击”运行” -> 输入Python


我的Python版本是3.8.5, 如果你和我一样那么就可以照做. 如果不一样, 后面的一些步骤可能有略微差异, 请按需安装.
我用的是conda/anaconda怎么办?
答: 一样的, 启动合适的Python版本, 然后创建一个虚拟化工作区即可. 后期的包管理使用conda即可. 因为我一般喜欢用virtualenv做虚拟化环境, 所以没有用conda. 对于我来说pip就很好用了. 如果pypi没有的包, 那就下载.whl文件手动安装一下就行了. 工具不重要, 趁手的工具重要.
如果还没有Python? 那么下载一个. 安装教程网上查.
Welcome to Python.orgwww.python.org/
或者安装一个anaconda, 如果你是非计算机人士但是要用Python/深度学习, 那么推荐这个
https://www.anaconda.comwww.anaconda.com/
1.3. cuda版本
先画个流程图然后再看正文, 因为我写的比较乱……

AMD/ATI用户可以洗洗睡了. 目前似乎还没法用A卡做深度学习. 所以为了搞AI还是买个N卡吧.
一般来说GTX10系以上的卡, 显存大于4GB应该都可以用来入门了. 据我所知, 重量级别的任务可能4张24GB显存的服务器都吃力. 初学阶段请量力而行.
我的显卡是GTX1660Ti&maxQ, 算力缩水版, 显存6GB. cuda版本是11.6
CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员可以使用C语言来为CUDA™架构编写程序,所编写出的程序可以在支持CUDA™的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN。
要查看你的cuda版本, 请终端输入nvidia-smi查看

如果你英语好一点的话应该是能明白这个界面是干啥的. 我们使用任务管理器查看cpu, 内存, 各种I/O的状态. 既然GPU也是某种类似于cpu的东西, 所以英伟达就做了个简单的程序去监控目前的GPU状态, 就像任务管理器一样.
在这个页面, 能方便的看到运行nvidia-smi时的显卡性能(比如显存和核时信息), 以及谁在使用显卡.
在这里确认下cuda版本. 我的是11.6 . 如果你的不一样, 那么后面记得注意安装时的版本区别.
如果你打不开nvidia-smi或者cuda查看不了, 那么请官网安装下驱动和应该有的工具包.
我的驱动/cuda版本过低, 或者没有cuda版本?
答: 检查显卡驱动更新, 或者是不是你的显卡该换了? 一般来说Windows10只要开着自动更新, 应该就不会发生驱动太旧的问题. 如果没有更新那么去英伟达官网下载一个最新驱动安装即可. 这里不要安装错了, 建议网上好好看看教程以及日志贴, 确保一次安装正确, 要不然很麻烦.
如果是显卡太古老, 那么, 换显卡或换电脑吧.
另外值得注意的是如果需要安装驱动, 那么在安装时没有必要安装cudaKit和nVidia那个IDE. 很多网上的教程需要安装这个甚至需要安装英伟达的那个游戏客户端….. 其实只需要正确安装驱动就行了. 而且PyTorch需要的是cuda的运行时版本(Runtime), 如果你没有nvidia-smi之类的工具那么只需要安装很少的东西就可以. 不要一股脑把所有开发工具甚至游戏客户端都安装了(就是那个nVidia_experience好像). 虽然这种做法肯定安装不错, 但是太浪费磁盘空间了……
英伟达的安装程序很智能, 有一个在线版会在运行时判断需要安装哪一个驱动然后现场下载. 但是不得不说英伟达的这个网速啊……..还是使用第二种方法吧, 看清楚下载的版本, 搞一个离线安装版. 一样会自动检查版本的, 如果不匹配则拒绝安装, 所以不必担心.
下载最新版官方 GeForce 驱动程序www.nvidia.cn/geforce/drivers/
网速太慢的话可以复制下载链接然后挂个迅雷/百度云下载, 速度就快了很多.
虽然迅雷这个程序非常毒瘤, 但是不得不说论下载加速, 迅雷是真的好用.
安装驱动的时候安装合适的cuda版本和cuDNN版本 (用于神经网络加速. 但是这里似乎不用着急下载, 因为PyTorch自带cuDNN, 所以可能只下载安装cuda即可).
安装时选择高级(自定义)


只需要安装红框里的就可以. 其他的应该是不需要安装的. 当然如果为了保险起见那就都安装吧.
runtime是运行时dll, 用于Python调用, 我们用的是这个
development看名字就知道是用来搞开发的, 比如做游戏或者游戏引擎?
visual studio integration看名字就知道是vs插件, 这里不需要
nsight这个系统应该也是开发英伟达显卡特殊程序的, 不需要.
samples是样例程序. 不需要(用于显卡应用开发)
documentation是文档, 其实也可以不需要, 但是这东西体积不大, 下载下来就当练英语阅读了.
安装完成后运行nvidia-smi查看版本.
得到版本号后进行下一步.
关于另一个命令
nvcc
这个命令我忘了是干啥的 , 运行nvcc --version也可以看到一个版本号, 不过这个似乎和PyTorch的安装没关系.
2. 一切就绪, 开始安装PyTorch
最好的方法就是去官网安装.
其实PyTorch的文档写的已经非常好了. 可以读一读, 如果不想读的话就跟着我安装PyTorch.

划到下面, 然后
- 选择合适的发行版(stable就可以),
- 选择操作系统, 选择包管理器(我的是pip, 如果你是其他那么请选择合适的版本, 比如anaconda请选择conda),
- 选择合适的语言(PyTorch当然是Python),
- 选择合适的版本(我的计算机是cuda11.6, 那么就选择CUDA11.6, 请严格选择合适的版本. 如果版本过旧请去官网找历史版本或者更新驱动. 如果太新以至于PyTorch还没有匹配的版本那么请降级)
之后, 你会得到一个安装命令(就是图片中红色圈出来的). 如果你的网络访问外网非常顺畅, 那么请直接运行.
直接安装好就到下一步了. 没错, 就是这么简单. 这一行命令会将PyTorch+cuDNN+torchvision全部安装好并且是合适的版本.
如果你和我一样在国内, 外网访问拉跨的一塌糊涂……请跟我来
2.1. 国内拉跨外网访问的下载拯救办法
这里不需要干任何违法的事情(比如众所周知的加速器方法). 只需要准备一个迅雷或者类似的软件.
首先, 把那个命令后面的网址, 复制一下, 直接浏览器打开

打开后是这个样子

然后看PyTorch生成的命令让我们安装什么?

那就分别安装这三个即可.

比如先安装torch, 点击进去, 会看到一溜子.whl文件, 你要挑一个合适的版本下载
首先肯定下载最新版, 其次必须匹配你的cuda版本, 然后Python版本也得合适, 然后操作系统也得匹配, 最后, 处理器架构得合适.
比如我的计算机是cuda11.6, Python3.8.5(py3.8), Windows10系统(WindowsNT内核), i5-9300H处理器(英特尔的x86处理器), 那么就选择这个就好了.
单击下载. 如果下载太慢请使用迅雷之类的工具加速.

这个名字你应该能看懂是怎么命名的对吧? 我觉得我说的很清楚了.
cu116就是cuda11.6的缩写.
cp38的意思是cpython解释器的Python3.8.x版本(如果是独立的Python, 不是基于anaconda的那种那么一般你也安装的就是cpython解释器的Python(就是Python运行时的解释器是拿c语言编写的解释器的那个版本. 还有拿java编译的解释器, 和Python编译的解释器的pypy, 这里这不重要))
win_amd64指的就是系统是Windows系统, 处理器是64位的复杂指令集的处理器(因为64位是最早AMD搞的, 所以叫AMD64, 当然也有叫x86-64的. 一般32位操作系统写成只有x86或者 IA32字样.
注意合理应用ctrl+F搜索. 别用眼睛死瞪, 那么多你是看不过来的.
同理下载合适的另外两个玩意
这个是用于音频的

和这个处理视频的torchvision(就不截图了)
如果你是搞自然语言处理(NLP)的, 那么你可能还需要这个

如果你还很好奇这些东西都是干啥的, 那么就网上查查吧,
反正用迅雷之类的工具加速下载后(比如torch本体几个GB, 网页下载到猴年马月去, 迅雷几分钟就下载好了)
就可以开始安装了.
2.2. 下载好了的安装方法
这里拿pip举例, 其他包管理器请网上查阅安装方法.
使用pip指定安装的包的路径即可.
最简单的方法
- 打开.whl文件的文件夹
- 按住shift, 右键, 选择”在此处打开PowerShell” (反正就是在这个路径下打开一个终端就行了. 你也可以用cd命令change dir 过去)
- 键入, 运行
pip install ./torch-1.12.0+cu116-cp38-cp38-win_amd64.whl就可以安装torch了. - 同理, 安装其他包(使用.whl的包名字, 可以tab自动补全)

如果一切顺利 (最后出现successful字样表示安装成功), 那么下一步.
如果报错了……
检查什么报错信息, 复制粘贴到网上查方法.
常见问题:
- cuda/操作系统/Python/cuDNN/torchvision/torchaudio……..某个版本不匹配. 没办法这东西版本都太多了, 一个错了就安装不能. 所以下载的时候看清楚非常有必要.
- c/c++运行库缺失. 返回1.1检查安装MSVC运行库
- 不太常见的问题是下载的时候出错了, 包不完整. torch这个包几个GB下载的时候可能会坏掉. 重新下载一次? 只不过现在的下载器一般都有校验机制, 应该不是这个问题.
反正我这次安装异常顺利. 没碰到阴间问题. 但愿你们也没啥问题.
3. 安装就绪, 开始测试
首先用Python运行下这个指令: torch.cuda.is_available()
具体方法:
- 打开一个终端
- 运行Python
import torchtorch.cuda.is_available()
如图

返回True那么就是好了. 可以跑显卡了.
如果不行那么就是没安装对, 只能用cpu跑. 肯定是哪里出错了. 回头检查吧……
使用一个程序测试下执行时间, 要不然我不放心
我也是初学者, 可能写的不太行, 但是这个程序很能证明显卡在工作.
import torch
import time
gpu = torch.device('cuda')
# 如果用cpu测试那么注释掉上面的代码, 用下面的
# gpu = torch.device('cpu')
beginTime=time.time()
a=torch.rand(2048,2048)
b=torch.rand(2048,2048)
c=torch.rand(2048,2048)
x = a.to(gpu)
y = b.to(gpu)
z = c.to(gpu)
initTime=time.time()
print("ok")
i=0
while i<10000:
z=(z+x+y)
i+=1
endTime=time.time()
print(z)
print("运行结束, 初始化使用了 {} 秒, 循环用了 {} 秒".format(initTime-beginTime,endTime-beginTime))
如果你注意到了cpu跑起来数据载入速度很快但是计算很慢, 而且电脑还更烫, 那么应该就没问题了.
我的电脑, 显卡比处理器快了大约30倍.
但是使用显卡的时候需要先把数据加载到显存里, 这个过程比较慢, 也就是说对于I/O密集的程序, 用cpu可能好一些. 对于计算密集的程序, 使用显卡性能非常好.
这也是写PyTorch程序需要注意的问题. 尽可能将数据一次全部加载到显存里, 而不要用一个加载一个. 你给谁省显存呢?
4. 开始愉快的搓代码
[全文完]
