深度学习环境配置:CUDA、cuDNN 和 PyTorch 版本的选择与搭配指南(建议收藏)
去年11月份的时候Franpper写过一篇比较详细的深度学习环境配置教程,就是下面这篇。
深度学习环境配置(pytorch版本)----超级无敌详细版(有手就行)_Franpper的博客-CSDN博客全体目光向我看齐,我宣布个事:看完这个,妈妈再也不用担心我不会配置深度学习环境了!!!_pytorch版本https://blog.csdn.net/weixin_58283091/article/details/127841182?spm=1001.2014.3001.5502 经过了一年的工作、学习,Franpper又学到了一些知识,有了一些新的体会与理解,今天就CUDA、cuDNN 和 PyTorch 版本的选择与搭配这一主题再与大家分享一下。
目录
一、关键组件与相互关系介绍
我们在配置环境的时候都知道有显卡驱动、CUDA、cuDNN、CUDA Toolkit、PyTorch这些东西,不同的组件还有不同的版本,搞得人十分头大,弄明白这些都是什么东西对我们来说是很有必要的,Franpper下面给大家介绍一下这些组件的定义与相互关联。
1. 显卡驱动(GPU Driver)
定义:显卡驱动是连接操作系统和GPU硬件的软件程序。它负责管理GPU的基本功能,包括内存管理、任务调度和与操作系统的通信。
作用:显卡驱动是深度学习框架和CUDA Toolkit与GPU之间的桥梁。它必须与特定GPU硬件兼容,以确保GPU能够正常工作并与操作系统和应用程序通信。
2. CUDA(Compute Unified Device Architecture)
定义:CUDA 是 NVIDIA 开发的并行计算平台和编程模型,旨在加速通用计算任务。它允许开发者使用GPU进行高性能的数值计算,包括深度学习训练和推理。
作用:CUDA 提供了编程框架和GPU编程模型,使开发者能够有效地利用GPU的并行计算能力,从而加速计算任务。
3. CUDA Toolkit
定义:CUDA Toolkit 是一套软件工具集,包括了用于GPU开发的编译器、库、调试器和其他实用工具。它是使用CUDA进行开发的必备工具。
作用:CUDA Toolkit 提供了编译CUDA代码的工具、CUDA运行时库和各种GPU加速的数学库,使开发者能够方便地构建和优化GPU加速应用程序。
4. cuDNN (CUDA Deep Neural Network Library)
定义:cuDNN 是NVIDIA的深度学习库,专门用于加速深度神经网络的训练和推理。它包含了高度优化的深度学习操作实现,可用于各种深度学习框架。
作用:cuDNN 提供了用于加速卷积神经网络(CNN)等深度学习操作的GPU实现,使深度学习框架能够在GPU上获得显著的性能提升。
5. PyTorch
定义:PyTorch 是一个深度学习框架,它提供了用于构建和训练神经网络的高级API。PyTorch支持GPU加速,可以利用CUDA来加速深度学习任务。
作用:PyTorch允许开发者构建灵活的神经网络模型,并使用CUDA加速训练和推理过程。PyTorch的深度学习库可与cuDNN和CUDA Toolkit集成,以获得GPU性能提升。
以上几个组件的相互关系:
-
CUDA Toolkit包含了编译CUDA代码所需的工具和CUDA运行时库。CUDA Toolkit还包括了一些用于GPU加速的数学库,这些库对深度学习非常有用。
-
cuDNN 是一个独立于CUDA Toolkit的库,但通常与CUDA一起使用。深度学习框架(如PyTorch)使用cuDNN来加速神经网络操作。
-
显卡驱动是连接操作系统、GPU硬件和CUDA/CUDA Toolkit之间的关键组件。它必须与GPU硬件兼容,并且需要与操作系统相匹配,以确保GPU能够正常工作。
-
PyTorch是一个深度学习框架,它可以与CUDA和cuDNN集成,从而允许开发者在GPU上进行深度学习任务的加速。
二、 各个组件的版本选择
现在大致组件我们都了解了,但是在实际配置环境的时候还会存在各个组件的版本对应关系,A需要某版本的B,B又需要某版本的C,搞得人迷迷糊糊。到底怎么选择组件版本,又从哪个开始选择呢?下面Franpper说一下自己的理解。
通过上面的介绍Franpper先总结出一个优先级:
显卡驱动 → CUDA → CUDA Toolkit → cuDNN → Pytorch
即显卡驱动决定了CUDA版本,CUDA版本决定了CUDA Toolkit、cuDNN、Pytorch各自的版本
一般来讲是需要先确定CUDA版本,然后再按照优先级依次向后确定版本。那么如何选择一个CUDA版本呢,首先有一个原则,就是选择的CUDA版本不可以高于本机支持的最高CUDA版本。而本机支持的最高CUDA版本由显卡驱动决定,查看方式为win + R 输入cmd进入命令行窗口输入nvidia-smi即可。
nvidia-smi
输出内容与详细介绍如下图:
如果对于CUDA版本没有要求,一般选择一个不高于本机支持的最高CUDA版本安装即可,然后按照CUDA版本去下载对应的cuDNN版本(一会儿Franpper会给大家介绍一下对CUDA版本有需求的例子)
cuDNN的下载地址如下:
cuDNN Archive | NVIDIA Developerhttps://developer.nvidia.com/rdp/cudnn-archive
在下载界面中已经显示出了对应关系
知识点:cuda版本中的.x是什么意思?
以Download cuDNN v8.9.4 (August 8th, 2023), for CUDA 12.x为例
"12.x" 表示 CUDA 版本号的一种通用表示法,其中 "x" 表示可以是任何数字,表示适用于该主要 CUDA 版本的所有次要版本。具体来说,CUDA 包括一个主要版本号和一个次要版本号,例如 CUDA 11.0、CUDA 11.1、CUDA 11.2 等。主要版本号通常表示 CUDA 的重大更新或变化,而次要版本号表示小的修复或改进。"cuDNN v8.9.4 for CUDA 12.x" 表示 cuDNN v8.9.4 是为 CUDA 12.x 系列的所有 CUDA 12 版本而设计的。也就是说,cuDNN v8.9.4 支持 CUDA 12.0、CUDA 12.1、CUDA 12.2 等所有的 CUDA 12.x 版本。这种表示法使得 cuDNN 能够与多个 CUDA 12 的次要版本兼容。
安装完cuDNN就可以去安装PyTorch了
这里Franpper帮大家统计了一些,如下:
+-------+-----------------------------------------+
| CUDA | Supported PyTorch Versions |
+-------+-----------------------------------------+
| 11.8 | 2.0.0 |
| 11.7 | 2.0.0, 1.13.1, 1.13.0 |
| 11.6 | 1.13.1, 1.13.0, 1.12.1, 1.12.0 |
| 11.3 | 1.12.0, 1.12.1, 1.11.0, 1.10.1, 1.10.0, |
| | 1.9.1, 1.9.0, 1.8.1 |
| 11.1 | 1.10.0, 1.9.1, 1.9.0, 1.8.2, 1.8.1, |
| | 1.8.0 |
| 11.0 | 1.7.1, 1.7.0 |
| 10.2 | 1.12.0, 1.12.1, 1.11.0, 1.10.1, 1.10.0, |
| | 1.9.1,1.9.0, 1.8.2, 1.8.1, 1.8.0, 1.7.1,|
| | 1.7.0, 1.6.0, 1.5.1, 1.5.0 |
| 10.1 | 1.8.1, 1.7.1, 1.7.0, 1.6.0, 1.5.1, |
| | 1.5.0, 1.4.0 |
| 10.0 | 1.2.0, 1.1.0, 1.0.1, 1.0.0 |
| 9.2 | 1.7.1, 1.7.0, 1.6.0, 1.5.1, 1.5.0, |
| | 1.4.0, 1.2.0 |
| 9.0 | 1.1.0, 1.0.1, 1.0.0 |
| 8.0 | 1.0.0 |
+-------+-----------------------------------------+
但是有的是时候我的项目可能对Torch版本有要求,那么我的Torch版本就会反过来要求CUDA版本。比如我的项目要求torch版本至少要2.0.0,然后在官网中可以看到PyTorch版本为2.0.0时需求的CUDA版本至少为11.7,那么就需要配置11.7的CUDA环境,然后就配置11.7或者更高版本的CUDA即可(前提是显卡驱动支持)。
那么就会引出另一个问题:如果我需求的cuda版本要高于本机支持的最高cuda版本怎么办?
已知更新显卡驱动版本可以提高本机支持的最高CUDA版本,但是Franpper还没有试过这种方法,没有替大家踩下坑。
以上就是今天要分享的全部内容,如果对大家有帮助的话还希望大家可以一!键!三!连!
更多推荐
所有评论(0)