PyTorch安装(一文解决PyTorch安装的所有问题)

一、PyTorch是什么

PyTorch是一种深度学习框架,提供了构建、训练和部署神经网络模型的高效接口。直白但不准确的说,PyTorch是一个python软件包,这个软件包里提供了构建、训练和部署神经网络模型的各种函数,通过直接调用这些现成的函数,你可以只关心如何构建自己的神经网络模型结构,如何让神经网络模型的预测结果变准确,而不用去考虑,如何编写二维卷积和池化层函数、如何编写每一层神经元的反向传播函数、如何调用自己的英伟达显卡来加速矩阵运算等等重复造轮子的问题。

当然,深度学习框架不止PyTorch一种,TensorFlow/Keras、Caffe、Transformers等等各有特色以及应用领域。PyTorch的核心特点是动态计算图,支持即时执行模式,在训练过程中可实时修改网络结构,同时PyTorch的API设计简洁,入门容易,在学术研究中颇受欢迎。

二、环境准备

想要PyTorch的正常运行,并调用显卡来加速训练过程,除了PyTorch本身外,还需要CUDA、cuDNN、Python。这三个关键组件需要版本号互相对应,才能支持PyTorch正常运行。如果你没有英伟达的显卡,也就无法调用CUDA核心加速并行运算过程。PyTorch提供了CPU版本,即直接用CPU跑各种PyTorch库中的矩阵运算,只是跑的慢,并不是不能用(○` 3′○)。

1.CUDA、cuDNN简介

简单介绍一下显卡驱动、CUDA、CUDA Toolkit、cuDNN这几个东西是干什么用的。

NVIDA显卡驱动:让操作系统识别并调用 NVIDIA 显卡硬件;

CUDA:NVIDIA 为自家的显卡做的并行计算框架。注意,CUDA不是软件,而是一套规则,一套包含软件设计、硬件方案的一套闭源并行计算规则,类似的还有AMD开源的AMD ROCm、苹果的MPS、Intel的oneAPI、跨厂商跨硬件的开源方案OpenCL等等;

CUDA Toolkit:基于 CUDA 标准的软件开发工具包(含编译器、库、工具等组件),PyTorch 底层需要调用它。很多文章中提到的“安装CUDA”,指的就是安装“CUDA Toolkit”;

cuDNN:是NVIDIA为深度学习计算设计的软件库,专门加速深度神经网络运算的库(卷积、池化等),让模型跑更快;

PyTorch是写代码用的深度学习框架,分为CPU版本和GPU版本。GPU版本底层依赖 CUDA Toolkit + cuDNN调用CUDA和加速矩阵运算。

那么,要用PyTorch来加速训练,需要安装显卡驱动、CUDA、cuDNN这些吗?答案是肯定的,但好消息是PyTorch安装包的GPU版本,自带了一套完整的CUDA Toolkit、cuDNN,我们只需要知道自己的显卡支持的CUDA版本,然后在安装PyTorch时,选择对应CUDA版本的PyTorch去下载即可。

除非,你需要自己编译 C++/CUDA 代码(比如写自定义 CUDA 算子、修改 Darknet 源码),此时,你需要单独安装CUDA Toolkit和cuDNN。因为PyTorch自带的CUDA Toolkit和cuDNN只是对PyTorch可见。

显卡驱动是必须安装的,可以按照以下方法安装。

2、安装NVIDIA GPU运行库

打开命令行工具,推荐使用Anaconda Powershell Prompt,当然CMD也可以。输入命令“nvidia-smi”查看显卡对应的CUDA版本。下图红框中的CUDA版本是本机支持的最高CUDA版本。注意,这里显示的CUDA版本不一定是当前电脑已经安装的CUDA版本。

根据上图中“CUDA Version:12.6”,这是该显卡最高支持的CUDA版本,即版本等于或低于12.6都可以。除了有特殊要求外,建议安装12.6。

通常,只要你的电脑上有NVIDIA的独立显卡,显卡驱动是有安装的。如果你输入nvidia-smi命令没有得到上图中类似的输出,需要安装NVIDIA GPU运行库,即英伟达的显卡驱动,下载地址为:下载 NVIDIA 官方驱动 | NVIDIA,这里根据显卡的型号自行下载即可。

验证显卡驱动是否安装成功,通过以下命令,能看到类似上图的显卡型号和驱动版本即可。

nvidia-smi

3.基于C/C++写CUDA代码(如果只需要PyTorch,可跳过当前小节)

如果不需要对CUDA进行单独编程,即可跳过当前小节。因为PyTorch安装包的GPU版本,自带了一套完整的CUDA Toolkit、cuDNN,我们只需要知道自己的显卡支持的CUDA版本,然后在安装PyTorch时,选择对应CUDA版本的PyTorch去下载即可完成GPU加速训练的目标。

(1)安装CUDA Toolkit

CUDA是一种由NVIDIA开发的并行计算平台和编程模型。CUDA Toolkit提供了一组库和工具,使开发人员能够有效地利用GPU的计算资源,通过使用CUDA编程语言(基于C/C++)来编写并行计算任务。想要PyTorch可以调用NVIDIA显卡资源,来实现高效的矩阵运算,即加速神经网络训练过程,就必须安装本地显卡支持的CUDA版本。

安装地址:CUDA Toolkit Archive | NVIDIA Developer,选择上一节中根据命令“nvidia-smi”得到的CUDA版本,可以等于或低于该版本(也不能太低了),但不能高于该版本。

(2)安装cuDNN

cuDNN(CUDA Deep Neural Network library),是NVIDIA为深度学习计算设计的软件库,它提供了针对深度学习算法优化的一系列基础操作,如卷积、池化等,cuDNN提供的高度优化的实现方式,使得在NIVDIA的GPU上进行深度学习计算变得更加高效。

当然,根据你要写的CUDA代码不同,cuDNN并不是必须要下载,涉及深度学习相关代码,如调用了卷积、池化等cuDNN的API时,需要下载cuDNN。如果只是普通 CUDA 并行计算,如向量加法、矩阵乘法等不需要下载cuDNN。

安装地址:cuDNN Archive | NVIDIA Developer

根据nvidia-smi命令查到的CUDA版本12.6,找到“for CUDA 12.x”,安装即可。

三、PyTorch安装

首先要明确,如果PyTorch是用来加速深度学习项目,推荐在Anaconda虚拟环境下安装,不建议直接在Windows系统下直接安装。详细的原因以及如何创建Anaconda虚拟环境,可见:Anaconda虚拟环境搭建 – 小尘的手账。

打开PyTorch官网,往下浏览,找到下图所示的位置:

如上图,可以看到很多信息,第一行是PyTorch的构建版本,“Stable(2.11.0)”指的是当前的稳定版本,适合生产环境和一般开发使用。Preview (Nightly): 开发中的最新版本,包含新功能,但可能不稳定,适合实验或探索;

第二行是选择操作系统;

第三行是选择包管理工具,就是用哪种包管理工具去下载PyTorch,不同的包管理工具下载的PyTorch是不同的,通常选pip,这也是conda虚拟环境中默认会支持的包管理工具。LibTorch:下载C++库(LibTorch)以支持C++或Java 语言的PyTorch开发。Source:从源码安装PyTorch,适合需要自定义编译的情况;

第四行选择需要运行PyTorch的代码的语言,通常选择Python;

第五行选择PyTorch要运行的平台,如果有NVDIA显卡,选对应的CUDA版本,没有GPU,则选择CPU;

第六行就是下载命令,在前5行选择完毕后,复制第六行的命令到命令行窗口,即可下载。

等待下载完成后,会出现“Successfully installed”的字样。

【注意】通常不会如此顺利的(╯‵□′)╯︵┻━┻,不出意外,你将遇到和笔者一样的问题。

1.官网首页没有合适的PyTorch

在PyTorch官网首页,点击下图的位置,可以浏览历史PyTorch版本。Previous PyTorch Versions

比如我想要安装PyTorch 2.5.0,在该页面往下浏览,找到“v2.5.0”。下面有两部分下载方式,“Conda”指的是在conda虚拟环境下,使用conda install命令进行安装以及包管理。找到“CUDA 12.4”指的是下载支持CUDA12.4的PyTorch,显然符合nvdia-smi命令查到的“最高支持CUDA12.6”的结果。

复制这一行命令到Anaconda Powershell Prompt,回车即可下载。

conda install pytorch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 pytorch-cuda=12.4 -c pytorch -c nvidia

2.下载速度过慢

在Anaconda Powershell Prompt命令行窗口中,使用“conda install”下载过慢。尝试对conda虚拟环境下,默认的下载源进行换源,换源方法见:Anaconda虚拟环境搭建 – 小尘的手账。

如果不行,尝试使用上图中除了“Conda”外,另一个“Wheel”这里的下载方式,“Wheel”指的是一种二进制包格式,通常以.whl为扩展名。它包含了Python模块的压缩形式,包括.py文件和经过编译的.pyd文件,以及相关的元数据。这种格式允许用户在不需要从源代码构建的情况下,快速安装和使用Python包。反正就是一种编译好的Python软件的安装包。

可以看到“Wheel”里面的下载命令是“pip install”,pip命令在下载软件包的时候,寻找软件包的依赖没有conda install严格,通常在conda install无法正常下载时,往往优先尝试pip install。当然,在conda虚拟环境使用conda和pip两种包管理方式混着来,不是什么好习惯,但是,这就是人生 ̄へ ̄。

如果很不幸,pip命令还是没有成功下载,还有办法!找到阿里开源镜像站pytorch-wheels安装包下载-开源镜像站-阿里云,ctrl + F,搜索“cu”,往下浏览,找到下图的位置:

cu100,指的是CUDA版本是10.0,cu116指的是CUDA 11.6版本。所以,选择你通过nvidia-smi命令查到的本机显卡最高支持的CUDA版本及以下版本。笔者选择“cu126”,即支持CUDA 12.6的PyTorch版本。

进入后,你需要下载三个组件,torch、torchaudio、torchvision。ctrl + F,搜索“torch”,往下浏览,找到下图的位置:

找到想要的PyTorch版本,通常在CUDA版本对应上的情况下,随便选一个就好,笔者选择PyTorch 2.7.0。在PyTorch 2.7.0下还有好多版本,这里还需要确定python版本。安装包名字的“cp311”指的是Python 3.11版本,“cp39”指的是Python 3.9版本。所以,这里选择你虚拟环境下安装的Python版本,如果不知道,可以在Anaconda Powershell Prompt命令行窗口中用python --version命令查看Python版本号。

最后选择平台,“win_amd64″就是windows x86平台。点击即可下载,国内镜像下载速度应该很快,大部分时间段都可以满网速下载。

继续往下浏览,找到下图的位置,安装torchaudio:

命名规则和torch一样,2.7.0版本号要和torch版本一样,比如笔者下载的torch是2.7.0,则torchaudio也选择2.7.0,cu126指的是CUDA 12.6版本,cp311指的是Python 3.11版本,win指的是windows系统。点击即可下载。

继续往下浏览,找到下图的位置,安装torchvision:

torchvision的版本号必须和torch的版本对应,需要查询GitHub官方仓库:GitHub – pytorch/vision: Datasets, Transforms and Models specific to Computer Vision · GitHub,找到下图位置:

可知,torch 2.7.0对应torchvision 0.22版本。继续选择cp311、win,然后点击“torchvision-0.22.0+cu126-cp311-cp311-win_amd64.whl”即可下载torchvision。

下载完毕后,你现在应该有三个.whl文件,torch、torchaudio、torchvision,这是三个Python安装包。打开conda虚拟环境,激活虚拟环境后,使用pip install + .whl文件路径,即可安装。分别运行以下三条命令,注意,其中文件的路径C:\Users\59198\Downloads\需要替换成你的三个.whl文件所在的路径:

pip install C:\Users\59198\Downloads\torch-2.7.0+cu126-cp311-cp311-win_amd64.whl
pip install C:\Users\59198\Downloads\torchaudio-2.7.0+cu126-cp311-cp311-win_amd64.whl
pip install C:\Users\59198\Downloads\torchvision-0.22.0+cu126-cp311-cp311-win_amd64.whl

即可将torch、torchaudio、torchvision这三个组件安装到你的conda虚拟环境下。

PS:简单介绍一下torch、torchaudio、torchvision这三个组件。torch是PyTorch 核心基础库,提供张量计算、自动微分、GPU 加速、神经网络底层模块,如 nn.Module,是另外两个库的基础。torchvision是计算机视觉专属工具库,提供图像数据集(如 ImageNet、COCO)、预训练模型(如 ResNet、YOLO 基础架构)、图像变换(如数据增强、Resize)。torchaudio是音频处理专属工具库,提供音频数据集、预训练模型(如 Wav2Vec2)、音频变换(如频谱分析、降噪)。

四、验证PyTorch是否安装成功

在Anaconda Powershell Prompt命令行窗口中输入python并回车,进入Python代码编辑,然后输入import torch,然后等十几秒钟,如果PyTorch加载成功,将没有任何提示。如果出现“ModuleNotFoundError: No module named ‘torch’”,则PyTorch没有安装成功。

安装PyTorch成功后,可以顺便验证验证CUDA是否可用:

improt torch
print(torch.cuda.is_available())
print("CUDA Version:",torch.version.cuda)

分别返回“True”、“CUDA Version: 12.6”说明PyTorch安装成功,并且可以成功调用CUDA加速矩阵运算!

OK!

不出意外,你已经可以正常使用PyTorch来搭建自己的神经网络模型了,但不出意外的话,要出意外了……经典的mk5的问题,几乎每个在Anaconda虚拟环境下安装过PyTorch的人,十之八九会遇到一个报错。在你花了两个小时,准备好了一切,即将运行起来自己的第一个包含PyTorch的深度学习代码时,会出现一个报错,说mk5已经被初始化了……一个让人摸不着头脑的报错(⊙_⊙)?

参考资料

8种主流深度学习框架介绍-CSDN博客

CUDA安装及环境配置——最新详细版-CSDN博客

pytorch-wheels安装包下载-开源镜像站-阿里云

PyTorch

Previous PyTorch Versions

GitHub – pytorch/vision: Datasets, Transforms and Models specific to Computer Vision · GitHub

上一篇
下一篇