0. 前言

Pytorch和CUDA一般来说都是深度学习必不可少的工具,前者为目前主流的深度学习框架,后者用于调用GPU来加速模型训练和推理。

目前网上大部分博客的安装流程如下:

  1. 查看电脑支持的CUDA最高版本
  2. 安装NVIDIA官网的cuda toolkit并配置环境变量
  3. 安装cudnn(为深度学习计算设计的软件库)
  4. 安装Pytorch的GPU版本

一看就懂的 CUDA安装教程及Pytorch GPU版本安装教程

上述文章是标准的安装流程,正常情况下按照安装上述流程安装即可。

本文的主要目的是给大家提供一个新的安装思路,无需繁琐的cuda安装和环境变量配置。

1. Pytorch与cuda toolkit

首先我们需要明白什么是CUDA,CUDA Toolkit以及cudnn,可以参考以下文章:

一文讲清楚CUDA、CUDA toolkit、CUDNN、NVCC关系

文章中已经对它们之间的关系解释的十分清楚了,这里主要解释一下cuda toolkit:

  • CUDA Toolkit (Nvidia): CUDA完整的工具安装包,其中提供了 Nvidia 驱动程序、开发 CUDA 程序相关的开发工具包等可供安装的选项。包括 CUDA 程序的编译器、IDE、调试器等,CUDA 程序所对应的各式库文件以及它们的头文件。
  • CUDA Toolkit (Pytorch): CUDA不完整的工具安装包,其主要包含在使用 CUDA 相关的功能时所依赖的动态链接库。不会安装驱动程

大部分人在安装cuda时,实际上安装的都是Nvidia官网的cuda toolkit,但可能有人注意到了,在安装Pytorch的GPU版本时,会有类似如下命令:

conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch

可以看到安装包中有一个cuda toolkit,且下载源为pytorch,此时安装的cuda toolkit就是上述所谓的Pytorch版本,主要包含pytorch用于调用GPU的一些动态链接库。

对于 Pytorch 之类的深度学习框架而言,其在大多数需要使用 GPU 的情况中只需要使用 CUDA 的动态链接库支持程序的运行( Pytorch 本身与 CUDA 相关的部分是提前编译好的 ),就像常见的可执行程序一样,不需要重新进行编译过程,只需要其所依赖的动态链接库存在即可正常运行。

看到这里的朋友可能会发现一个问题:既然安装Pytorch的GPU版本会同时安装cuda toolkit,虽然它不完整,但已经能满足Pytorch的正常调用GPU进行加速的需求了,那么是不是可以仅仅安装Pytorch的GPU版本就可以呢?

这就是本文所要介绍的安装方式,也是为什么将CUDA安装和Pytorch安装放在同一节的原因。

2. Pytorch的GPU版本安装

2.1 安装准备

首先需要安装显卡驱动,这部分网上其他部分已有详细教程,不做详细解释,驱动安装成功后输入nvidia-smi,显示信息类似下图:
在这里插入图片描述

nvidia-smi显示的信息要关注两个部分,一个是Driver Version(即驱动程序版本,代表已安装的驱动程序版本),另一个是CUDA Version代表所安装的驱动程序能支持的CUDA最大版本,而不是已安装的CUDA的版本),也就是说后续安装过程中只要CUDA版本低于CUDA Verison即可。

2.2 官网安装Pytorch

Pytorch官网地址:Pytorch官网

下图为选择Pytorch版本和对应CUDA版本的页面,Previous versions of PyTorch为旧版本的Pytorch,可以根据需要和显卡所支持的CUDA版本进行安装。
在这里插入图片描述

一般有两种方式安装:

  • Conda—通过conda命令进行安装

在这里插入图片描述

  • Wheel—通过pip命令进行安装

在这里插入图片描述
注意事项

  • pip安装时不能将https://download.pytorch.org/whl/cu121直接替换成清华源的路径去安装,但可以添加上清华源的路径用于加速其它Pytorch所需依赖包的安装,安装示例如下:
    pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu121 -i https://pypi.tuna.tsinghua.edu.cn/simple/
    
  • 可以通过更换阿里源加速下载,这里以pytorch=1.11.0,cuda=11.3版本为例
    官方命令:
    pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113
    
    换源后:
    pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 -f https://mirrors.aliyun.com/pytorch-wheels/cu113
    
    主要区别在于下载链接,注意这里链接最后的cu113代表cuda版本,需要根据需要更换版本,更换前提是pytorch和cuda版本对应

2.3 pytorch调用cuda测试

安装成功后在终端输入如下命令检验:

# 进入Python的交互式页面
(Pytorch_test) C:\Users\admin>python
Python 3.8.20 (default, Oct  3 2024, 15:19:54) [MSC v.1929 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
# 导入torch并验证cuda是否可用
>>> import torch
>>> torch.version.cuda
'11.3'
>>> torch.cuda.is_available()
True
>>> torch.backends.cudnn.version()
8302

可以看到torch.cuda.is_available()输出为True时,说明安装成功,此时Pytorch可以正常调用cuda了,torch.backends.cudnn.version()输出cudnn版本号,说明cudnn也安装成功。

3. 相关问题

3.1 conda安装和wheel安装的区别

首先来看两种方式的安装命令:

# conda安装
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch

# wheel安装
pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu113

conda安装是从pytorch源里面找到满足要求的库,并解决库之间的依赖关系进行安装,而wheel通过pip命令进行安装,wheel是一个打包的集合,https://download.pytorch.org/whl/cu113就是所安装的wheel文件的下载地址,当网速堪忧或者需要在离线状态下安装时,可以现在网速较好的设备上将wheel文件下载到本地再拷贝到需要安装的设备上,用pip命令进行安装。

这里需要注意的是,conda安装后是能通过conda list查看到安装的cuda toolkit和对应的版本,而通过pip命令安装wheel文件后conda list不会有cuda toolkit,而是torch的版本号为1.12.0+cu113,可能原因是Pytorch将torch和cuda toolkit进行了打包封装成了wheel文件,所以下载的torch实质是torch+cuda toolkit,而conda是分开安装torch和cuda toolkit的,这也是为什么使用wheel安装时下载文件大小明显大于conda安装方式的原因。

3.2 新版本的安装命令

新版本的安装命令如下:

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

可以看到与旧版本安装方式不同的点在于增加了-c nvidia,也就是说此时的cuda toolkit会从nvidia源进行下载,而旧版本的下载源是pytorch源。这里不做测试,留给读者去对比两种方式安装的cuda toolkit有什么不同。

3.3 实际项目安装torch相关库

有过深度学习相关项目经验的同学可以发现,一般情况项目会提供一个requirements.txt的文件用于安装相关依赖库,其中会对torch的版本进行一些限制,例如大于某个版本或者限制为具体版本,一般通过如下命令进行安装项目所需依赖

pip -r requirements.txt

但是此时安装torch就是不带cuda toolkit的,可以先将requirements.txt中torch相关的(torchvison, torchaudio)先注释掉,后面单独安装这些库即可。

4. 总结

本文的安装方式相当于将cuda安装在虚拟环境中而不是本地,不需要配置环境变量即可使用cuda,满足Pytorch调用GPU的大部分情况,而对于需要对cuda相关程序进行编译时,则需要安装Nvidia官网的完整cuda toolkit。同时由于没有配置系统的环境变量,故不能在cmd终端使用相关命令,例如nvcc -V

深度学习环境搭建分为以下几个步骤:
1.Anaconda/Miniconda安装,创建项目虚拟环境

# 创建项目虚拟环境
conda create -n env_name python=3.x
# 进入环境
conda activate env_name

2.安装Pycharm,配置已创建的Python解释器,导入项目

3 安装项目所需依赖

# 将requirements.txt中torch相关库注释后再安装其他依赖
pip install -r requirements.txt

4.安装满足requirements.txt要求的torch相关库的GPU版本(带有cuda和cudnn的版本)

# 安装torch相关库
pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu113

上述为搭建环境的基本逻辑,对于实际项目要具体情况具体分析。

参考文章:

一看就懂的 CUDA安装教程及Pytorch GPU版本安装教程

一文讲清楚CUDA、CUDA toolkit、CUDNN、NVCC关系

Pytorch 使用不同版本的 cuda - yhjoker - 博客园

NVIDIA CUDA Toolkit 与 PyTorch 安装中的 CUDA 的区别

一文搞懂PyTorch与CUDA那些事

安装pytorch时用wheel和用conda安装有什么区别

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐