Windows系统下CUDA、cuDNN与PyTorch的更新与安装全攻略
Windows系统下CUDA、cuDNN与PyTorch的更新与安装全攻略
文章目录
- Windows系统下CUDA、cuDNN与PyTorch的更新与安装全攻略
- 一、引言
- 二、CUDA、cuDNN与PyTorch-GPU介绍
- 三、安装准备
- 1. 查看支持的CUDA版本
- 2. 查看已安装的CUDA版本
- 3. 查看支持的PyTorch版本
- 四、卸载旧版CUDA
- 五、下载并安装新版CUDA
- 六、下载并安装cuDNN
- 七、安装pytorch并验证PyTorch与CUDA的兼容性
- 八、安装过程中的一些问题
- Nsight Visual Studio Edition 安装失败
- 九、后记
一、引言
随着人工智能技术的不断进步,深度学习已经成为当今科技领域的重要支柱,尤其在图像识别、自然语言处理等多个领域展现了其强大的能力。为了充分发挥深度学习的潜力,高效的计算能力显得尤为重要,而图形处理单元(GPU)正是提供这一能力的关键硬件。NVIDIA的CUDA技术,作为利用GPU进行通用计算的先锋,为深度学习的发展注入了强大的动力。而与之相辅相成的cuDNN库,则为深度学习应用提供了优化支持。PyTorch,作为当今热门的深度学习框架,其与CUDA和cuDNN的无缝集成,更是让深度学习模型的训练和推理如虎添翼。
然而,对于许多初学者和研究者来说,如何正确安装并配置这些工具,以便能够高效地进行深度学习工作,可能是一个不小的挑战。本文将深入探讨CUDA、cuDNN与PyTorch之间的关系,并为读者提供一份详尽的安装与配置指南。我们的目标是帮助读者建立起一个稳定、高效的深度学习环境,从而能够专注于模型的开发与创新,无需在环境配置上花费过多精力。通过本文,读者将能够更好地理解这些工具如何协同工作,以及如何将它们集成到自己的深度学习项目中。
二、CUDA、cuDNN与PyTorch-GPU介绍
1.CUDA (Compute Unified Device Architecture):
CUDA是NVIDIA推出的一个并行计算平台和编程模型,它允许开发者使用NVIDIA的GPU进行高性能计算。CUDA提供了一套丰富的API,使得开发者能够轻松地编写在GPU上运行的并行代码,从而显著提高计算性能。
官网:https://developer.nvidia.com/
2.CUDA Toolkit:
这是一个包含CUDA编译器、调试器、性能分析工具等的开发套件,用于帮助开发者构建、优化和调试CUDA应用程序。CUDA Toolkit是开发CUDA程序的基础。
3.cuDNN (CUDA Deep Neural Network library):
cuDNN是NVIDIA专门为深度神经网络设计的一套加速库。它基于CUDA,针对深度学习算法中的常见操作(如卷积、池化、归一化等)进行了高度优化,能够显著提升深度学习应用的运行效率。
4.PyTorch-GPU:
PyTorch是一个流行的深度学习框架,支持动态计算图,使得深度学习模型的构建和训练变得更加灵活和高效。PyTorch-GPU版本则是专为GPU加速设计的,能够充分利用CUDA和cuDNN的优势,提高深度学习模型的训练速度和性能。
官网:https://pytorch.org/
简单来说,CUDA为GPU并行计算提供了基础平台和编程接口;CUDA Toolkit为开发者提供了开发CUDA程序所需的工具和资源;cuDNN针对深度学习应用进行了专门优化,提高了运行效率;而PyTorch-GPU则是一个基于CUDA和cuDNN的深度学习框架,使得深度学习应用的开发变得更加简单和高效。
在安装的过程中我还发现了 nvidia nsight system 和 nvidia nsight compute 这两个软件,有兴趣的请阅读 CUDA编程 - Nsight system & Nsight compute 的安装和使用 - 学习记录
三、安装准备
下面表格中是我的系统操作环境版本
| 配置项 | 详细信息 |
|---|---|
| 操作系统 | Windows10(64bit) |
| Python版本 | 3.9.13 |
| GPU | NVIDIA GeForce GTX 1650 |
| 显卡驱动版本 (Driver Version) | 555.99 |
| CUDA版本 (CUDA Version) | 12.1.1 |
| 包管理工具 | pip |
| PyTorch版本 | 2.3.0 |
1. 查看支持的CUDA版本
-
通过NVIDIA控制面板查看:右键桌面打开NVIDIA控制面板,依次点击“
帮助”-“系统信息”-“组件”。

-
通过
cmd打开控制台,输入命令nvidia-smi查看:在命令提示符(cmd)中输入nvidia-smi。

这两种方法效果一样,查看到的都是本机支持的最高版本的CUDA,它是可以向下兼容的。一般我们不需要安装最高版本,而是通过下面的结合 pytoch 版本来选择。我的系统最高支持12.3版本的驱动。
2. 查看已安装的CUDA版本
在命令提示符中输入nvcc -V。

可以看到我现在安装的是11.6版本的,现在我想将其更新为12.1。
3. 查看支持的PyTorch版本
访问PyTorch官网(https://pytorch.org/),根据系统配置选择合适的PyTorch版本,并注意其对应的CUDA版本。

从上图中可以看到,目前官方支持的最新稳定版本为 pytorch2.3.0 + CUDA12.1。而我们上面查看到的本地实际上可以支持到 12.3,但是 pytorch 只支持到 12.1,所以我们 CUDA 只安装到 12.1 的版本就够了.
四、卸载旧版CUDA
1.控制面板卸载
进入“控制面板”或“设置”-“应用”,卸载所有含CUDA字样 的程序。

2.删除环境变量
“此电脑-右键-属性-高级系统设置”进入环境变量的 path 中,删除旧版本CUDA的相关路径。

3.删除残留文件
进入C:\Program Files\,删除旧版本的CUDA文件夹。

上面3个文件夹可以全部删除也可以只删除其子文件夹,因为后面更新的也是安装到该路径。
五、下载并安装新版CUDA
1. 进入NVIDIA官网(https://www.nvidia.cn/Download/index.aspx?lang=cn)下载最新的驱动程序进行更新


点击搜索后点击下载即可。下载完成后安装至“C:\Program Files\NVIDIA\NVIDIA Display Driver”路径下面。




安装完成之后再次输入nvidia-smi,可以看到我们的 Driver Version和CUDA Version: 12.5发生了变化,现在CUDA支持的最高版本为12.5。

奇怪的是安装完成之后“C:\Program Files\NVIDIA\”下面并没有“NVIDIA Display Driver”这个文件夹通过电脑管家查看安装位置位于
“C:\Program Files\WindowsApps\NVIDIACorp.NVIDIAControlPanel_8.1.966.0_x64__56jybvy8sckqj”路径下面。
不过无伤大雅,能正常使用即可。
2.下载CUDA安装包
访问 NVIDIA官网(https://developer.nvidia.com/cuda-toolkit-archive),选择与PyTorch版本兼容的CUDA版本进行下载。下面两个应该都支持,这边我下载的是12.1.1

接着根据配置选择即可(需要登录NVIDIA账号)。

下载之后点击安装,路径选择默认路径即可(临时解压路径,建议默认即可,也可以自定义。安装结束后,临时解压文件夹会自动删除)。安装目录选择“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1”

选择自定义安装并且如果你是第一次安装,尽量全选;如果你是第n次安装,尽量只选择第一个,不然会出现错误
(当然,强烈建议选择自定义,因为我们只卸载了 CUDA 所以只需要安装 CUDA即可。这也能够省去很多麻烦)
ps:如果是首次安装且没有安装Visual Studio,请选择自定义安装并去掉“Visual Studio Integration”选项。


耐心等待…



安装完成。当然,细心的朋友发现我上面高亮的部分是没有安装的,这个由于我安装的时候报错取消安装了,有需要的可以去"C:\Users\yxn\AppData\Local\Temp\cuda\nsight_vse\nsight_vse"下面点击"nsight_visual_studio_edition-windows-x86_64-2023.1.1.23089_32673672.msi"单独安装即可.
3. 安装后检查
- 检查C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin下是否存在
nvcc.exe。 - 检查C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\extras\CUPTI\lib64下是否存在
cupti64_XXX.dll。 - 在命令行中输入
nvcc -V查看安装的CUDA版本。

如上图所示,cuda已经安装成功。
六、下载并安装cuDNN
1.下载cuDNN安装包
推荐:访问 NVIDIA官网(https://developer.nvidia.com/rdp/cudnn-archive),注册登录后下载与CUDA版本相对应的cuDNN。

其它:访问 https://developer.nvidia.com/cudnn-downloads (下载的到的是最新版本的exe文件,不推荐)

2.安装cuDNN
将下载的cuDNN压缩包解压到CUDA的安装路径下并覆盖相应文件。
将下载到的压缩包解压到 cuda 的安装路径C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1下并覆盖。
cd到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\extras\demo_suite,然后分别执行
bandwidthTest.exe
deviceQuery.exe


若都能成功运行且没有报错就恭喜你cuDNN安装成功了.
3.检查环境变量
确保以下路径已添加到环境变量的path中:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\libnvvp
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\extras\CUPTI\lib64
参考:
CUDA卸载&&重装
windows cuda更新教程
七、安装pytorch并验证PyTorch与CUDA的兼容性
1. 安装PyTorch
使用PyTorch官网提供的安装命令进行安装。PyTorch官网(https://pytorch.org/)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
太慢了,可以使用下面地址借助第三方软件从源下载:
https://download.pytorch.org/whl/cu121/torch-2.3.1%2Bcu121-cp39-cp39-win_amd64.whl
https://download.pytorch.org/whl/cu121/torchvision-0.18.1%2Bcu121-cp39-cp39-win_amd64.whl
https://download.pytorch.org/whl/cu121/torchaudio-2.3.1%2Bcu121-cp39-cp39-win_amd64.whl
- 各版本pytorch下载地址 https://download.pytorch.org/whl/torch_stable.html
执行安装:
pip install "torch-2.3.1+cu121-cp39-cp39-win_amd64.whl" "torchvision-0.18.1+cu121-cp39-cp39-win_amd64.whl" "torchaudio-2.3.1+cu121-cp39-cp39-win_amd64.whl"
再次执行
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip list # 查看已安装的包

2.验证效果
在Python环境中运行以下代码进行验证:
import torch# 查看PyTorch是否支持CUDA
print(torch.cuda.is_available())
# 查看可用的CUDA设备数量
print(torch.cuda.device_count())
# 查看PyTorch对应的CUDA版本号
print(torch.version.cuda)
# 返回当前设备索引
print(torch.cuda.current_device())
# 返回gpu的名字,设备索引默认从0开始
print(torch.cuda.get_device_name(0))
如果输出显示CUDA可用,且设备数量大于0,同时CUDA版本号与安装的CUDA版本一致,则表示安装成功。

至此,最新版本的pytorch+CUDA安装成功!!!开始愉快的学习吧!
推荐: 动手学深度学习-李沐
八、安装过程中的一些问题
Nsight Visual Studio Edition 安装失败
首先确保CUDA相关组件卸载干净,不然使用 Uninstall -Tool 工具进行卸载。或者安装时候取消勾选"nsight vse",安装完成之后单独安装.

参考:
NVIDIA安装程序失败-Nsight Visual Studio Edition失败解决办法
安装CUDA失败的情况nsight visual studio edition失败
想同时安装tensflow-gpu版本的,请按照cuda11.6,12.x不支持。
九、后记
通过本文的指南,希望大家能够顺利地在Windows系统下安装和配置CUDA、cuDNN与PyTorch,从而能够充分利用GPU的并行计算能力进行深度学习模型的训练和推理。在实际使用过程中,如果遇到任何问题或挑战,建议查阅官方文档或寻求社区的帮助。同时,也欢迎各位留言分享自己的安装经验和技巧,共同推动深度学习技术的发展。
相关文章:
Windows系统下CUDA、cuDNN与PyTorch的更新与安装全攻略
Windows系统下CUDA、cuDNN与PyTorch的更新与安装全攻略 文章目录 Windows系统下CUDA、cuDNN与PyTorch的更新与安装全攻略一、引言二、CUDA、cuDNN与PyTorch-GPU介绍三、安装准备1. 查看支持的CUDA版本2. 查看已安装的CUDA版本3. 查看支持的PyTorch版本 四、卸载旧版CUDA五、下载…...
Android Dialog使用汇总
Dialog分类 AlertDialog Dialog 类是对话框的基类,官方建议我们不要直接实例化它,而是使用其子类来获取实例。AlertDialog是系统提供的一个直接子类,它能帮助我们快速构建出不同类型的弹窗。接下来就看下各种类型弹窗的使用。 1、普通对话框…...
[数据集][目标检测]足球场足球运动员身份识别足球裁判员数据集VOC+YOLO格式312张4类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):312 标注数量(xml文件个数):312 标注数量(txt文件个数):312 标注类别…...
学习分享-声明式的 HTTP 客户端OpenFeign
OpenFeign 详细介绍 最近在学习中有用到OpenFeign,也在网上查找了相关资料,做下分享。 一、概述 OpenFeign 是一个声明式的 HTTP 客户端,它使得调用 REST API 变得更加简单和直观。通过 OpenFeign,开发者只需定义接口并添加注解…...
python Tk 获取输入框内容,分割内容
创建输入框、一个按钮和一个标签的GUI。 用户可以在输入框中输入文本,点击按钮后,程序将在控制台打印输入的文本(已经分割为列表),并在GUI中的标签上显示一些静态文本。 import tkinter as tk# 创建主窗口 root tk.…...
第十二章:净世山的终极考验
虽然击败了黑袍人,但四人并未有丝毫的松懈。他们深知,净世山的考验远不止如此。果然,随着黑袍人的倒下,整个山顶开始剧烈震动,仿佛有什么东西即将苏醒。“小心,这山顶似乎有变!”赵无极大声提醒…...
linux常用命令及其选项
1、常用命令 1.1、ls 选项说明-a显示所有文件及目录 (包括隐藏文件)-i显示inode-A同 -a选项 ,但不列出 "." (目前目录) 及 ".." (父目录)-l列出信息详细(如文件型态、权限、拥有者、文件大小等)-R递归显示(若目录下有文件,则以下之…...
虚拟存储器概述
目录 常规存储器管理方式的特征和局部性原理 缺点 局部性原理 局部性原理的应用 1. 提高内存利用率 2. 实现按需装入 3. 支持内存共享 4. 提高系统稳定性 虚拟存储器的定义与特征 虚拟存储器的特征 虚拟存储器的实现机制 虚拟存储器的工作过程 虚拟存储器的优点 虚…...
C++对象池设计与实现
目录 一、对象池简介 1.1 池化技术 1.2 什么是对象池 1.3 对象池分配策略 二、C new和delete运算符重载 三、实现一个对象池框架 3.1 策略接口 四、实现几种对象池的分配策略 4.1 数组策略 4.2 堆策略 编辑 4.3 栈策略 4.4 区块策略 一、对象池简介 1.1 池化技…...
电商系统中热库和冷库的使用与数据转换
在现代电子商务系统中,数据的高效管理和存储是关键。电商平台每日处理海量数据,这些数据不仅包括用户行为、交易记录,还涵盖库存信息、商品详情、物流信息等。为了优化数据存储和查询效率,电商系统通常采用热库(Hot St…...
【LeetCode:312. 戳气球+ 动态规划】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...
拉格朗日乘子将不等式约束转化为等式约束例子
拉格朗日乘子将不等式约束转化为等式约束例子 在优化问题中,常常需要将不等式约束转化为等式约束。使用拉格朗日乘子法,可以通过引入松弛变量将不等式约束转换为等式约束,然后构造拉格朗日函数进行求解。 拉格朗日乘子法简介 拉格朗日乘子法是求解带约束优化问题的一种方…...
有效的括号(oj题)
一、题目链接 https://leetcode.cn/problems/valid-parentheses/submissions/538110206 二、题目思路 利用栈的性质,后进先出 1.依次读取字符串,判断是否为左括号,如果是,就将其入栈。 2.如果读取的不是左括号,就说…...
快团团供货大团长如何查看帮卖团长的订单?
一、功能说明 可以看到团购中每个帮卖团长帮卖产生的订单 二、具体设置方法 1、小程序端如何操作? 在团购页面中,点击订单管理,在这里可以选择全部团长订单,我的团订单,和帮卖团长的帮卖订单。 2、PC端如何操作&am…...
Llama模型家族之Stanford NLP ReFT源代码探索 (一)数据预干预
LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (一) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (二) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (三) 基于 LlaMA…...
用统一的方式处理数据
在日常工作,生活中,有大量的数据需要保存到文件中,如文本,图像,以及Word和excel等软件数据。但是。如果大量的数据由多个人一同使用,久而久之就弄不清楚谁将数据存到什么地方了。虽然可以使用文件服务器来管…...
山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(三十)- 微服务(10)
目录 12.5 RestClient操作索引库 12.5.1创建库 12.5.2 删除索引库 12.5.3 判断是否存在 12.6 RestClient操作文档 12.6.1 新增文档 12.6.2 查询文档 12.6.3 修改文档 12.6.4 删除文档 12.6.5 批量导入文档 12.5 RestClient操作索引库 酒店mapping映射 PUT /hotel{&…...
AI如何创造情绪价值
随着科技的飞速发展,人工智能(AI)已经渗透到我们生活的方方面面。从智能家居到自动驾驶,从医疗辅助到金融服务,AI技术的身影无处不在。而如今,AI更是涉足了一个全新的领域——创造情绪价值。 AI已经能够处…...
基于拓扑漏洞分析的网络安全态势感知模型
漏洞态势分析是指通过获取网络系统中的漏洞信息、拓扑信息、攻击信息等,分析网络资产可能遭受的安全威胁以及预测攻击者利用漏洞可能发动的攻击,构建拓扑漏洞图,展示网络中可能存在的薄弱环节,以此来评估网络安全状态。 在网络安…...
python有short类型吗
Python 数字数据类型用于存储数值。 Python 支持三种不同的数值类型:整型(int)、浮点型(float)、复数(complex)。 在其他的编程语言中,比如Java、C这一类的语言中还分有长整型&…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
