本文章记录了配置CUDA11.3+Pytorch1.12.0的全过程,以备之后配置新的环境。
一、先导内容
在深度学习中,我们常常要对图像数据进行处理和计算,而处理器CPU因为需要处理的事情多,并不能满足我们对图像处理和计算速度的要求,显卡GPU就是来帮助CPU来解决这个问题的,GPU特别擅长处理图像数据。统一计算设备架构CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎,安装CUDA之后,可以加快GPU的运算和处理速度。一台电脑上可以有多个版本的CUDA。
(1)显卡
显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器,是计算机最基本配置、最重要的配件之一。显卡作为电脑主机里的一个重要组成部分,是电脑进行数模信号转换的设备,承担输出显示图形的任务。显卡接在电脑主板上,它将电脑的数字信号转换成模拟信号让显示器显示出来,同时显卡还是有图像处理能力,可协助CPU工作,提高整体的运行速度。对于从事专业图形设计的人来说显卡非常重要。民用和军用显卡图形芯片供应商主要包括AMD(超微半导体)和Nvidia(英伟达)2家。现在的top500计算机,都包含显卡计算核心。在科学计算中,显卡被称为显示加速卡。
(2)显存
也被叫做帧缓存,它的作用是用来存储显卡芯片处理过或者即将提取的渲染数据。如同计算机的内存一样,显存是用来存储要处理的图形信息的部件。
(3)CUDA Toolkit
CUDA工具包的主要包含了CUDA-C和CUDA-C++编译器、一些科学库和实用程序库、CUDA和library API的代码示例、和一些CUDA开发工具。(通常在安装CUDA Toolkit的时候会默认安装CUDA Driver;但是我们经常只安装CUDA Driver,没有安装CUDA Toolkit,因为有时不一定用到CUDA Toolkit;比如我们的笔记本电脑,安装个CUDA Driver就可正常看视频、办公和玩游戏了)
安装CUDA就是安装CUDA Toolkit(CUDA是运算平台名称、CUDA Toolkit是工具包)。
(4)NVCC
NVCC是NVIDIA CUDA Compiler的缩写,它是一个专门用于编译和优化CUDA(Compute Unified Device Architecture)代码的编译器,用于将使用C或C++等语言编写的CUDA源代码转换为可在Nvidia GPU上执行的机器代码。NVCC 能够将包含 CUDA 代码(内含 global 函数等 CUDA 特性)的源文件编译成可在支持 CUDA 的 NVIDIA GPU 上执行的二进制代码。
CUDA 有两种API,分别是运行时API和驱动API:Runtime API 与 Driver API。nvidia-smi是 CUDA Driver API(驱动API)的版本,也是当前驱动支持的最高CUDA版本。而nvcc的结果是对应 CUDA Runtime API(运行API)的版本。每个CUDA的版本会要求一个最低的显卡驱动版本;而显卡驱动会提供一个最高支持的CUDA 版本。
(5)显卡、显卡驱动、CUDA
- 显卡:(GPU),主流是NVIDIA的GPU,因为深度学习本身需要大量计算。GPU的并行计算能力,在过去几年里恰当地满足了深度学习的需求。AMD的GPU基本没有什么支持,可以不用考虑。
- 驱动:没有显卡驱动,就不能识别GPU硬件,不能调用其计算资源。
- CUDA:是显卡厂商NVIDIA推出的只能用于自家GPU的并行计算框架。只有安装这个框架才能够进行复杂的并行计算。主流的深度学习框架也都是基于CUDA进行GPU并行加速的,几乎无一例外。还有一个叫做cudnn,是针对深度卷积神经网络的加速库。
二、CUDA安装
本人电脑配置:Win11+NVIDIA GeForce RTX 4060
CUAD下载文档:
CUDA Installation Guide for Microsoft Windows
(1)安装步骤总结
- 查看有是否有支持NVIDA的独立显卡
- 查看是否有NVIDA显卡驱动程序,没有需要下载安装
- 官网下载安装 Microsoft Visual Studio
- 官网下载安装 CUDA
- 检验CUDA安装是否成功
- CUDA安装成功后的使用
(2)查看GPU是否支持CUDA
-
查看电脑GPU型号
-
在NVIDA官网列表中,地址:CUDA GPUs - Compute Capability | NVIDIA Developer,查看自己的显卡型号是否在NVIDA列表中,若存在则可以下载cuda实现GPU加速
🤖两款产品的区别
NVIDIA GeForce 和 NVIDIA TITAN 系列产品是 NVIDIA 公司推出的两种不同定位的GPU(图形处理器)系列,主要区别在于目标用户群体、性能等级和设计用途:
- NVIDIA GeForce 系列:
- GeForce 主要针对个人消费者市场,尤其是游戏玩家和内容创作者。
- 包括 GTX、RTX 等子系列,提供不同的性能级别以适应不同预算和需求。
- GeForce 笔记本产品(GeForce Notebook Products)则是为笔记本电脑设计的移动版本,通常在功耗、散热和体积上有优化设计,以便于集成到轻薄或游戏笔记本中。
- NVIDIA TITAN 系列:
- TITAN 系列定位更高端,通常是作为消费级市场上最为强大的单 GPU 解决方案。
- 除了具备优秀的游戏性能外,TITAN 更注重专业级别的计算能力,适用于深度学习、科学计算、3D渲染等高性能应用场景。
- TITAN 系列有时会搭载比同代 GeForce 旗舰产品更多的CUDA核心、更大的显存容量和更高的显存带宽,从而提供更为极致的性能表现。
- TITAN 系列也有对应的移动版本,但相比 GeForce 笔记本产品,其出现频率较低且通常面向的是专业用户或者对移动工作站有极高要求的用户。
(3)查看是否有NVIDIA显卡驱动程序
-
🤖显卡驱动程序的作用
显卡驱动程序是一种计算机软件,它是操作系统与显卡硬件之间的桥梁。
- 硬件控制:驱动程序提供了一套接口和指令集,使得操作系统能够识别并控制显卡的各项硬件功能,例如GPU核心、显存、视频输出接口、显示设置等。
- 图形渲染:它允许显卡执行复杂的3D图形渲染操作,这是现代游戏和其他图形密集型应用程序的关键需求。通过驱动程序,可以调用GPU进行顶点处理、像素着色、纹理映射、几何加速、光线追踪等计算工作。
- 性能优化:驱动程序经常更新以改进兼容性和性能,针对新发布的游戏或应用进行优化,并修复已知问题,从而确保用户能够获得最佳的视觉体验和流畅度。
- 特性支持:驱动程序实现了对新技术的支持,比如DirectX、OpenGL、Vulkan等图形API,以及NVIDIA自家的技术,如CUDA通用并行计算架构、PhysX物理引擎、NVIDIA DLSS深度学习超级采样技术等。
- 配置工具:NVIDIA显卡驱动还包含了NVIDIA控制面板,用户可以通过这个界面调整各种高级显示设置,包括分辨率、刷新率、颜色校准、垂直同步、三重缓冲等。
- 系统稳定性:正确安装和更新显卡驱动程序有助于提高系统的整体稳定性,减少因驱动过时导致的崩溃、蓝屏等问题。
下载方法:
NVIDIA显卡驱动程序安装与卸载流程(台式机/笔记本通用)
更新驱动程序时显示需要创建英伟达账户:
更新驱动时有两种选项,选择自定义模式并清洁模式删除已有的驱动程序避免冲突。
(4)查看支持的CUDA版本
-
nvidia-smi
是显示能够安装的最高cuda版本,实际已安装的版本使用nvcc -V
查看。 -
打开NVIDA控制面板,查看GPU显卡所支持的CUDA版本,NVIDIA控制面板→帮助→系统信息→组件→NVCUDA64.DLL后面的CUDA参数。可以看到,当前显卡驱动程序支持的CUDA版本为12.4.89
win10下安装多个cuda(cuda9.0和10.0),并自由切换版本
-
注意要点:
-
-
安装参考文章:
在PyTorch中使用CUDA, pytorch与cuda不同版本对应安装指南,查看CUDA版本,安装对应版本pytorch_cuda版本为11.6可以安装11.6的pytorch包吗-优快云博客
保姆级的CUDA的下载安装使用,详细的环境变量配置,不仅仅让你能够安装,还会教你弄懂为什么要这样安装
GPU版本pyTorch安装教程_安装pytorch gpu版本-优快云博客
Win11-RTX4060安装 Pytorch-GPU/Anaconda 干货避坑指南_4060支持的cuda版本-优快云博客
和主流深度学习框架版本对应关系:
01 Pytorch和CUDA对应的版本及Pytorch和Python对应的版本及Python与Anaconda的对应关系_pytorch和cuda对应版本-优快云博客
Build from source on Windows | TensorFlow
Tensorflow最新版本支持的CUDA版本为11.2,Pytorch为12.1,没必要追求最新版的CUDA安装。PyTorch主流版本恰好和Tensorflow岔开,先安装CUDA 11.3版本及对应的PyTorch。
(5)安装CUDA 11.3
1.安装Visual Studio
因为CUDA在安装时,需要VS的里面的工具包来编译。查看官方安装文件:Installation Guide Windows :: CUDA Toolkit Documentation (nvidia.com)
可以看到支持VS2017 15.x以上的版本和VS2019 16.x以上的版本,选择VS2019。参考博客:CUDA安装及环境配置——最新详细版-优快云博客,由于最新版V2022推出,下载自动跳转为2022版,使用博客提供的百度网盘链接下载2019版。
2.下载安装CUDA
-
在NVIDIA官网下载:CUDA Toolkit Archive | NVIDIA Developer,下载CUDA Toolkit 11.3.1版,目前链接仅有win10版,直接下载win10版本即可。
-
下载好后双击exe文件即可,弹出提示为临时抽取文件放置的位置,直接点击OK,随后进入系统兼容性的检查。
-
如果没有问题,会弹出许可协议,直接点击同意并继续。
-
弹出安装选项,选择自定义安装并点击下一步 。
-
点开Driver components,如果当前版本比新版本大就把√去掉,其他保持勾选,并点击下一步。
-
之后会让选择CUDA开发组件、文档、示例的安装位置,类似于如下图,点击下一步进行安装 :
设置文件路径:
- CUDA Development:D:\CUDA\v11.3
- Samples:D:\CUDA\Samples\v11.3
- CUDA Documentation:D:\CUDA\v11.3
-
完成安装后得到提示,点击下一步:
-
安装成功,点击关闭即可。
-
检查是否安装成功:
打开cmd,输入命令
nvcc-V
或nvcc --version
,出现以下信息,说明安装成功:查看环境变量,发现已经自动配置以下变量:
手动添加以下环境变量,方便日后配置VS使用,在VS中可以使用CUDA加速:
CUDA_SDK_PATH = D:\\CUDA\\Samples\\v11.3 CUDA_LIB_PATH = %CUDA_PATH%\\lib\\x64 CUDA_BIN_PATH = %CUDA_PATH%\\bin CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\\bin\\win64 CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\\common\\lib\\x64
set cuda
查看环境变量设置成功:
3.下载安装CUDNN
-
在NVIDIA官网下载CUDNN 11.3版本安装包:cuDNN Archive | NVIDIA Developer
-
解压缩文件:
-
将三个文件夹拷贝到CUDA安装目录的文件夹中:
-
验证安装:通过CUDA安装目录
D:\\CUDA\\v11.3\\extras\\demo_suite
中 NVIDIA提供的deviceQuery.exe
和bandwidthTest.exe
来查看GPU的状态:-
🤖运行文件介绍:
deviceQuery.exe
和bandwidthTest.exe
是 NVIDIA CUDA 工具包的一部分,用于测试和验证安装的 CUDA 驱动程序以及 GPU 是否正常工作,并提供硬件相关的性能指标。- deviceQuery.exe:
- 运行此程序时,它会显示关于系统中所有 CUDA 设备(通常是 NVIDIA 显卡)的基本信息,包括设备名称、计算能力版本、总线接口、全局内存大小、多处理器核心数、每个核心的线程数以及其他硬件特性。输出结果通常用于确认 CUDA 环境是否正确设置,显卡是否被识别并能支持 CUDA 计算。
- bandwidthTest.exe:
- 这个工具执行的是 CUDA 内存带宽测试,它测量 GPU 的内部内存(即显存)与主机(CPU)之间的数据传输速度。测试结果可以展示出不同类型的内存拷贝操作(如主机到设备、设备到主机、设备内等)的理论最大带宽,这对于了解 GPU 性能和优化应用程序的数据传输策略非常重要。
运行这两个程序的结果应当是显示出一系列详细的硬件规格信息(对于 deviceQuery.exe),以及一组关于内存带宽测试的各项数值(对于 bandwidthTest.exe)。如果在运行过程中遇到问题,比如无法启动或返回错误,则可能意味着 CUDA 驱动程序没有正确安装,或者显卡不兼容当前的 CUDA 版本,或者是其他配置问题。
- deviceQuery.exe:
-
三、PyTorch安装
由上图观察,创建Python3.9虚拟环境最适用,选择Pytorch1.12.0版本安装。
- 🤖Anaconda 创建虚拟环境的原理主要基于以下几个核心概念和技术:
- 包管理和隔离: Anaconda 使用的是名为
conda
的包管理器,它不仅能够安装、更新和卸载 Python 包,还可以管理整个软件环境。在创建虚拟环境时,conda 会将特定版本的 Python 和所需的库打包到一个独立的环境中,这样每个环境都有自己的包存储区域,彼此之间互不影响。 - 环境配置文件: 当创建虚拟环境时,conda 会在指定的目录下创建一个包含所有环境信息的文件夹,并生成相关的环境配置文件。环境的具体位置通常是在 Anaconda 安装目录下的
envs
子目录中,例如:<anaconda_home>/envs/<your_env_name>
。环境中的每一个包及其依赖都会被记录在这个环境内的 package cache 中。 - 路径隔离: 当激活某个虚拟环境时,conda 会通过修改系统环境变量(如
PATH
)来确保执行命令时优先使用该环境下的 Python 解释器和其他工具。这样一来,当您在这个环境中运行 Python 程序或安装新的库时,操作仅限于当前环境,不会影响其他环境或系统的全局设置。 - 环境复用与迁移: Conda 虚拟环境可以轻松地保存(导出)、加载(导入)以及复制到其他机器上。这意味着您可以为不同的项目创建自定义的软件栈,这些环境可以根据需要灵活地分发和共享。
- 多语言支持: 虽然最初是为了支持 Python 生态系统而设计的,但 conda 也能够管理非 Python 的软件包,包括 R、Java、C/C++ 等其他语言的依赖项。这意味着在虚拟环境中不仅可以隔离 Python 版本和库,也可以为跨语言项目提供统一的环境管理方案。
- 包管理和隔离: Anaconda 使用的是名为
- 🤖conda和Python的关系?
- 包含关系: Anaconda 是一个流行的开源数据科学平台,它包含了 Python 的发行版以及 conda 这个包管理器。Anaconda 分发版预装了 Python 解释器以及大量的用于数据分析、科学计算等领域的第三方库。
- 环境管理: conda 不仅仅是一个 Python 包管理器,更是一个强大的环境管理系统。它可以创建、管理和切换不同的软件环境,每个环境中可以安装不同版本的 Python 和各种依赖包。这有助于解决不同项目之间可能存在的软件版本冲突问题。
- 包管理: Python 有官方的包管理器 pip,主要用于从 Python Package Index (PyPI) 安装 Python 库。而 conda 可以安装 PyPI 上的部分包,但它的优势在于能够处理非 Python 包以及复杂的跨平台依赖关系,尤其是在科学计算领域内很多只能通过 conda 安装的库。
- 协同工作: 在 Anaconda 环境中,用户通常同时使用 conda 和 pip 来安装和管理 Python 包。虽然 conda 能够管理大部分 Python 包,但在某些情况下可能需要配合 pip 使用,特别是在处理仅在 PyPI 上发布的纯 Python 包时。
(1)创建Python虚拟环境
使用Anaconda命令:conda create -n pytorch1_12_0 python=3.9
,下图为虚拟环境安装位置和虚拟环境激活/退出方法。虚拟环境安装路径为:C:\Users\Cherry White\.conda\envs
查看虚拟环境列表:conda env list
或 conda info --envs
删除环境命令:conda remove -n 环境名 --all
,其中remove表示删除,-n是(name名字的缩写),最后--all 如果不加上的话代表删除的是当前环境下的一个包,比如numpy等等,加上的话才是删除虚拟环境。
(2)在虚拟环境中安装Pytorch
-
激活虚拟环境
activate pytorch1_12_0
-
安装Pytorch
conda安装命令如下:
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch
-
🤖torchvision和torchaudio介绍
torchvision:
torchvision
是 PyTorch 深度学习框架的一个重要组成部分,主要用于计算机视觉任务。它提供了一系列与图像和视频处理相关的工具和功能:- 数据集加载器:包含多种预定义的数据集加载函数,如 ImageNet、COCO、MNIST 等,简化了常用数据集的导入过程。
- 模型架构:提供了很多经典和现代的计算机视觉模型结构,例如 ResNet、VGG、AlexNet 等预训练模型,可以直接用于图像分类、目标检测、语义分割等任务,并支持模型微调。
- 转换函数(Transforms):用于对图像进行预处理,包括归一化、裁剪、翻转、调整大小等各种操作,以满足不同深度学习模型对输入数据格式的要求。
- 实用函数:帮助用户读取、显示和保存图片及视频,以及构建自定义的数据管道(DataLoader),方便训练和验证流程。
torchaudio:
torchaudio
则是 PyTorch 的音频处理库,专为音频信号处理和机器听觉应用而设计。它提供的主要功能包括:- 音频 I/O:支持多种常见的音频文件格式的读写操作,如 WAV、MP3、FLAC 等。
- 音频处理:提供了音频信号的基本处理方法,如采样率转换、声道混音、分帧窗口、fft变换等。
- 预处理模块:包含一系列音频信号预处理的transforms,用于标准化、增益控制、减噪等操作,将音频数据转化为适用于深度学习模型的张量格式。
- 模型支持:封装了一些针对音频识别、语音合成等任务的预训练模型,使得用户可以快速地在音频处理领域开展工作。
-
-
使用
pip list
命令查看虚拟环境安装的包: -
进入python3.9环境并检查是否安装成功:
(pytorch1_12_0) C:\\Users\\Cherry White>python Python 3.9.18 (main, Sep 11 2023, 14:09:26) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import torch >>> print(torch.__version__) # 查看torch当前版本 1.12.0 >>> print(torch.version.cuda) # 编译当前版本的torch使用的cuda版本号 11.3 >>> print(torch.cuda.is_available()) # 查看当前cuda是否可用于当前版本的Torch,如果输出True,则表示可用 True >>> torch.cuda.device_count() # 查询当前系统中可用的 CUDA 设备(即 NVIDIA GPU)的数量 1 >>> torch.cuda.get_device_name(0) 'NVIDIA GeForce RTX 4060 Laptop GPU'
(3)在Jupyter Notebook中使用虚拟环境
Anconda创建完虚拟环境后,在虚拟环境中如何打开对应的jupyter notebook?_conda 如何打开其他人的jupyter notebook-优快云博客
-
进入虚拟环境,并安装ipykernel,它是一个 Python 库,是 Jupyter Notebook 和 JupyterLab 等基于 Jupyter 项目的交互式计算环境的核心组成部分。提供了一个内核(Kernel),使得 Python 程序能够在 Jupyter 客户端中运行和执行代码。
conda install ipykernel
-
将虚拟环境名注册到Jupyter Notebook:
python -m ipykernel install --name pytorch1_12_0
python -m ipykernel
: 使用m
标志来指定要作为一个模块运行的 Python 程序,这里是指调用ipykernel
模块的安装功能。install
: 表示执行的操作是安装一个新的内核。- 【
--user
: 安装时指定内核只对当前用户可见和可用,这意味着内核配置文件将保存在用户的家目录下(对于 Unix/Linux 系统是在~/.local/share/jupyter/kernels/
目录下),而不是全局系统范围内。】 --name pytorch1_12_0
: 这里定义了内核的名称。- 【
-display-name pytorch1_12_0
: 指定了内核在 Jupyter 用户界面中显示的友好名称,当用户在 Jupyter Notebook 或 JupyterLab 中创建或切换内核时,看到的就是这个 display name。】
-
查看jupyter可用内核:
jupyter kernelspec list
-
删除环境命令:
jupyter kernelspec remove 环境名
-
在Jupyter Notebook中选择内核即可调用成功:
修改conda默认环境安装位置,避免C盘运行超载:
Anaconda安装以及修改环境默认位置图文教程_python_脚本之家 (jb51.net)
完结撒花💐开启深度学习之旅吧~