【Python · Pytorch】配置cuda环境 & cuDNN库
本文介绍如何配置cuda环境、cuDNN库,并安装GPU版本的Pytorch。
本文为博主自用知识点提纲,或存谬误,详细内容可参考其他文章。
1. 查找对应版本
1.1 查看Pytorch GPU目前支持版本
1.1 查看Nvidia驱动版本
点击电脑任务栏右侧,点击NVIDIA设置
。
下载Nvidia最新驱动
进入官网,选择NVIDIA设备版本。
页面跳转后,下载对应驱动即可。
1.2 查看支持cuda版本
查看支持cuda步骤:
- 点击“NVIDIA设置”,进入“NVIDIA控制面板”
- 点击“系统信息”,查看系统信息
- 点击“组件”,查看“NVCUDA64.DLL”对应的产品名称“NVIDIA CUDA 12.6.65 driver”
至此,找到所支持的cuda版本,该设备支持cuda 12.6.65
及以下版本。
进入官网,寻找对应版本,此处下载12.4.0
或12.4.1
,以12.4.0
为例。
选择需要的版本,点击下载进入选择界面。
按照所装系统选择,下载文件即可。
1.3 查看支持cuDNN版本
1.3.1 cuDNN 9.0.0及以上版本
首先,进入NVIDIA官方cuDNN文档。
点击“Support Matrix”,查看最新支持矩阵。
下图为cuDNN9.3.0
最新支持矩阵,该设备支持CUDA 12.x
,驱动版本560.94
,满足安装cuDNN9.3.0
的条件。s
进入下载列表,下载对应版本的cuDNN。
选择需要的版本,点击下载进入选择界面。
按照所装系统选择,下载文件即可。
最新版本9.4.0 安装链接
1.3.2 cuDNN 9.0.0以下版本
部分较早GPU驱动不支持9.0.0及以上版本cuda,这里提供cuDNN 9.0.0以下版本链接。
安装cuDNN 9.0.0以下版本与上述流程类似,下面为官网链接,仅供参考。
1.4 安装版本确定
该设备支持12.6.65
及以下cuda版本,最新的Pytorch支持12.4.0
cuda版本,故而安装12.4.0
版本cuda及9.3.0
版本cuDNN。
版本号 | |
---|---|
pytorch | 2.4.1+cu124 |
cuda | 12.4.0 |
cuDNN | 9.3.0 |
2. 安装cuda环境
2.1 cuda简介
CUDA是英伟达公司设计研发一种并行计算平台和编程模型,包含了CUDA指令集架构以及GPU内部的并行计算引擎。开发人员可以使用C语言来为CUDA架构编写程序,所编写出的程序可以在支持CUDA的处理器上以超高性能运行。
CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员可以使用C语言来为CUDA™架构编写程序,所编写出的程序可以在支持CUDA™的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN。
深度学习框架的加速器:CUDA不仅在构建英伟达自身的软件生态中扮演关键角色,在推动深度学习生态发展方面也功不可没。
2.1.1 CPU+GPU异构计算
CPU:中央处理器(Central Processing Unit),计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
运算核心较少,但是其可以实现复杂的逻辑运算,因此其适合控制密集型任务,CPU更擅长数据缓存和流程控制——(少量的复杂计算)
GPU:图形处理器(Graphics Processing Unit),最早主要进行图形处理。
如今深度学习大火,GPU高效的并行计算能力充分被AI应用发掘。
GPU拥有更多的运算核心,其特别适合数据并行的计算密集型任务,如大型矩阵运算——(大量的简单运算)
一个典型的 CPU 拥有少数几个快速的计算核心,而一个典型的 GPU 拥有几百到几千个不那么快速的计算核心。
CPU的晶体管设计更多地侧重于数据缓存和复杂的流程控制,而GPU则将大量晶体管投入到算术逻辑单元中,以实现并行处理能力。
因此,GPU正是通过其众多的计算核心集群来实现其相对较高的计算性能。
使用CUDA编程,开发者可以精确地指定数据如何被分配到GPU的各个核心上,并控制这些核心如何协同工作来解决问题。
GPU不能单独进行工作,GPU相当于CPU的协处理器,由CPU进行调度,CPU+GPU组成异构计算架构。
在由 CPU 和 GPU 构成的异构计算平台中,通常将起控制作用的CPU 称为主机(host),将起加速作用的GPU 称为设备(device)。
主机和设备之间内存访问一般通过PCle总线链接。
2.1.2 NVIDIA 开发工具链
① NVIDIA Driver
-
显卡驱动是连接操作系统和显卡硬件之间的桥梁,确保显卡能够正常工作并发挥最佳性能。
-
显卡驱动包含硬件设备的信息,使得操作系统能够识别并与显卡硬件进行通信。
-
显卡驱动对于启用显卡的全部功能、性能优化、游戏和应用程序兼容性以及修复问题和安全更新都至关重要。
② CUDA Toolkit
-
CUDA Toolkit是一个由NVIDIA开发的软件开发工具包,它为NVIDIA GPU提供了一组API和工具,使得开发人员可以利用GPU的并行计算能力来加速计算密集型应用程序。
-
CUDA Toolkit包括CUDA编译器(NVCC)、CUDA运行时库、CUDA驱动程序等组件,它们协同工作,使得开发人员可以使用C或C++编写GPU加速的代码。
③ CUDA API
-
CUDA API是CUDA编程的接口集合,它允许开发者使用CUDA进行高性能计算。
-
CUDA API包括CUDA Runtime API和CUDA Driver API,它们提供了用于管理设备、内存、执行等功能的函数。
-
开发者可以通过CUDA API来编写CUDA程序,以利用GPU的并行计算能力。
④ NVCC
-
NVCC是CUDA的编译器,属于CUDA Toolkit的一部分,位于运行时层。
-
NVCC是一种编译器驱动程序,用于简化编译C++或PTX代码。它提供简单且熟悉的命令行选项,并通过调用实现不同编译阶段的工具集合来执行它们。
-
开发者在编写CUDA程序时,需要使用NVCC来编译包含CUDA核心语言扩展的源文件。
NVIDIA Driver是确保显卡正常工作的基础,而CUDA Toolkit则是利用GPU进行高性能计算的软件开发工具包。
CUDA API是CUDA编程的接口,而NVCC则是CUDA的编译器,用于将CUDA程序编译成可在GPU上执行的代码。
2.1.3 常见CUDA库
cuBLAS
:用于线性代数运算的库,如矩阵乘法、前缀求和等,常用于科学和工程计算。cuDNN
:NVIDIA CUDA深度神经网络库(cuDNN)是一个用于深度学习的GPU加速库,提供了一系列深度学习算法的高效实现。cuSPARSE
:针对稀疏矩阵的线性代数库。cuFFT
:快速傅里叶变换库,用于执行高效的FFT(快速傅里叶变换)操作。cuRAND
:随机数生成库,允许开发者在GPU上生成随机数。
这些库为开发者提供了丰富的计算资源,使他们能够更高效地开发GPU加速的应用程序。
2.2 cuda安装流程
下载对应版本的cuda安装包后,双击安装。
点击“OK”,这里保持默认路径 (临时抽取文件路径)。
等待cuda安装程序提取文件。
提取完成后,出现以下界面,cuda安装包开始检查系统兼容性。
点击“同意并继续”。
选择“自定义(高级)”,点击“下一步”。
取消勾选Visual Studio Integration
选项,点击“下一步”。
保持默认安装位置,点击“下一步”。
开始安装cuda程序。
安装完成,依次点击“下一步”、“关闭”。
2.3 cuda安装检验
电脑“所有应用”中出现NVIDIA Corporation
即为安装成功。
打开命令行,输入以下命令,查看cuda版本。
nvcc -V
2.4 配置环境变量
打开“系统属性”,配置环境变量。
将下列路径加入环境变量,电脑及cuda版本不同,则路径不同。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\libnvvp
添加完成后,点击“确定”保存,重启电脑即可生效。
3. 安装cuDNN库
3.1 cuDNN简介
NVIDIA CUDA® 深度神经网络库 (cuDNN) 是一个 GPU 加速的深度神经网络基元库,能够以高度优化的方式实现标准例程(如:前向/反向卷积、池化层、归一化和激活层)。
全球的深度学习研究人员和框架开发者都依赖 cuDNN 来实现高性能 GPU 加速。借助 cuDNN,研究人员和开发者可以专注于训练神经网络及开发软件应用,而不必花时间进行低层级的 GPU 性能调整。
cuDNN 可加速广泛应用的深度学习框架,包括 Caffe2、Chainer、Keras、MATLAB、MxNet、PaddlePaddle、PyTorch 和 TensorFlow。如需获取经 NVIDIA 优化且已在框架中集成 cuDNN 的深度学习框架容器,请访问 NVIDIA GPU CLOUD 了解详情并开始使用。
3.2 cuDNN安装流程
下载对应版本的cuDNN安装包后,双击安装。
cuDNN与cuda安装类似,故简化流程截图。
3.3 配置环境变量
打开“系统属性”,配置环境变量。
将下列路径加入环境变量,电脑及cuDNN版本不同,则路径不同。
C:\Program Files\NVIDIA\CUDNN\v9.3\bin
添加完成后,点击“确定”保存,重启电脑即可生效。
4. 安装Pytorch GPU版本
完成cuda
和cuDNN
环境的安装后,开始安装GPU版本Pytorch。
首先,卸载已安装的CPU版本Pytorch。
# 查看已安装的PyTorch包(Windows)
pip list | findstr torch
## 补充:查看已安装的PyTorch包(Linux)
pip list | grep torch
# 卸载torch包
pip uninstall torch
执行以上命令后,会提示是否卸载该包,输入y
进行确认即可。
再次进入官网,查找安装命令,一般有两种安装方式,即pip
和conda
,这里以pip为例。
打开电脑命令行,输入安装命令,pip会自动根据设备Python版本选择对应的库。
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
若安装成功则可跳过后续步骤,若安装失败则将Downloading对应链接拷贝至浏览器网址栏。
浏览器根据链接下载,等待下载完成。
如果下载仍然失败,可多次暂停后继续,也可尝试以下方法。
进入命令行,输入Python
查看当前Python版本。
退出命令行,点击下面链接,进入全版本下载列表。
通过浏览器自带搜索找到需要查找的Python库文件,点击下载,Pytorch库文件命名格式如图所示。
命名格式:torch-[torch版本]+cu[cuda版本]-cp[python版本]-cp[python版本]-[平台][架构].whl
文件下载完成,打开命令行,执行命令安装GPU版本的torch。
至此,GPU版本的torch安装完毕。
## 执行安装命令
# 1. cd至文件路径下执行命令
pip install torch-2.4.1+cu124-cp39-cp39-win_amd64.whl
# 2. 带路径执行命令
pip install ./torch-2.4.1+cu124-cp39-cp39-win_amd64.whl
编写Python脚本,确认安装PyTorch的版本。
# 导入torch库
import torch
# 打印PyTorch的版本号
print(torch.__version__)
# 打印CUDA是否可用
print(torch.cuda.is_available())
『附录』whl文件简介
在Python中,whl文件是一种 预编译 的 二进制包,全称wheel文件,它是Python分发包的标准格式之一。
whl文件的出现,使Python包能够跨平台兼容安装,更加高效。
Python源码包格式为
tar.gz
或zip
格式,预编译二进制为whl
格式。
whl文件特点
- 快速安装:whl文件是预编译的二进制包,比从源代码安装更快。
- 跨平台兼容:whl文件针对不同操作系统和Python版本进行编译,实现跨平台兼容性。
- 减少依赖问题:whl文件可确保所需依赖项包含在内,无需手动安装依赖项。
whl文件安装方法
pip install xxx.whl