Windows下RTX 5070安装PyTorch GPU完整教程:Python 3.11 + PyTorch 2.8.0 + CUDA 12.9
1. 前言
最近在一台搭载 NVIDIA GeForce RTX 5070 的 Windows 电脑上重新配置 PyTorch GPU 深度学习环境。
最终成功配置如下:
text
操作系统:Windows 11 64位
GPU:NVIDIA GeForce RTX 5070
Conda环境:pytorchgpu
Python:3.11.16
PyTorch:2.8.0+cu129
PyTorch CUDA Runtime:CUDA 12.9
CUDA可用:True
最终验证结果:
python
import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))
输出:
text
2.8.0+cu129
True
NVIDIA GeForce RTX 5070
这意味着:
PyTorch已经成功通过CUDA调用RTX 5070。
不过整个安装过程中踩了几个非常典型的坑:
- Conda创建Python 3.11环境失败;
- 普通CMD中Conda环境出现"假激活";
cp311版本的PyTorch wheel提示不支持;- 命令行明明显示
(pytorchgpu),实际却仍然运行Python 3.13; - 最终切换到真正的Python 3.11环境后,PyTorch和CUDA才正常工作。
本文重点记录第三部分:
如何正确安装PyTorch GPU,并判断CUDA和显卡是否真正可用。
2. 为什么要单独创建Python 3.11环境?
本机Anaconda的base环境中Python版本为:
text
Python 3.13.9
虽然较新的PyTorch版本已经逐渐支持Python 3.13,但在科研和深度学习环境中,我更倾向于使用一个相对独立、兼容性较好的Python环境。
因此创建:
text
pytorchgpu
并安装:
text
Python 3.11.16
最终环境路径为:
text
C:\Users\用户名\.conda\envs\pytorchgpu
成功进入环境后:
powershell
python --version
输出:
text
Python 3.11.16
后续所有PyTorch相关软件包都安装到这个环境中。
3. 首先理解一个关键问题:CUDA、Python和PyTorch是什么关系?
很多刚开始配置GPU环境的人容易产生一个误解:
CUDA 12.9是不是只能配某一个固定Python版本?
实际上并不是。
Python和CUDA之间通常不是直接绑定的。
真正需要匹配的是:
text
Python版本
↓
PyTorch版本
↓
PyTorch对应的CUDA构建版本
↓
NVIDIA显卡驱动
↓
GPU
例如本文最终使用:
text
Python 3.11.16
+
PyTorch 2.8.0
+
cu129
+
RTX 5070
其中:
text
cu129
表示:
text
CUDA 12.9
所以:
text
torch 2.8.0+cu129
可以理解成:
PyTorch 2.8.0的CUDA 12.9版本。
4. 不要把nvidia-smi中的CUDA版本和PyTorch CUDA版本混为一谈
执行:
cmd
nvidia-smi
通常会看到类似:
text
CUDA Version: xx.x
需要特别注意:
nvidia-smi显示的CUDA Version主要表示当前NVIDIA驱动支持的最高CUDA兼容能力之一,并不意味着PyTorch必须安装完全相同的CUDA版本。
例如显卡驱动可能显示:
text
CUDA Version: 13.x
但PyTorch仍然可以安装:
text
cu129
只要当前显卡驱动足够新,能够兼容PyTorch所需要的CUDA Runtime即可。
因此不要简单理解成:
text
nvidia-smi显示13.x
↓
PyTorch必须安装cu13x
这并不正确。
5. PyTorch wheel文件名到底是什么意思?
本文下载的PyTorch文件为:
text
torch-2.8.0+cu129-cp311-cp311-win_amd64.whl
第一次看到这个文件名可能比较复杂,其实可以拆成几部分:
text
torch
│
├── 2.8.0
│
├── +cu129
│
├── cp311
│
├── cp311
│
└── win_amd64
分别代表:
2.8.0
PyTorch版本:
text
PyTorch 2.8.0
cu129
代表CUDA构建版本:
text
CUDA 12.9
因此:
text
2.8.0+cu129
就是:
PyTorch 2.8.0 + CUDA 12.9。
6. cp311是什么意思?
这一点非常重要。
文件名中的:
text
cp311
表示:
text
CPython 3.11
类似地:
text
cp310 → Python 3.10
cp311 → Python 3.11
cp312 → Python 3.12
cp313 → Python 3.13
所以:
text
torch-2.8.0+cu129-cp311-cp311-win_amd64.whl
要求使用:
text
Python 3.11
如果当前实际运行的是Python 3.13,就不能直接安装这个wheel。
7. win_amd64又是什么意思?
最后:
text
win_amd64
表示:
text
Windows 64位
这里的amd64并不是说:
只有AMD处理器才能安装。
它实际上代表Windows x86-64架构。
因此Intel或AMD的普通64位Windows电脑都可以使用。
综合起来:
text
torch-2.8.0+cu129-cp311-cp311-win_amd64.whl
可以解释为:
PyTorch 2.8.0 + CUDA 12.9 + CPython 3.11 + Windows 64位。
8. 本次第一次安装为什么失败?
进入下载目录后执行:
cmd
pip install "torch-2.8.0+cu129-cp311-cp311-win_amd64.whl"
结果出现:
text
ERROR:
torch-2.8.0+cu129-cp311-cp311-win_amd64.whl
is not a supported wheel on this platform.
同时还出现:
text
Defaulting to user installation because normal site-packages is not writeable
一开始很容易怀疑:
text
PyTorch版本不对?
CUDA 12.9不支持?
RTX 5070不支持?
wheel下载错了?
Windows版本不支持?
但最后发现:
这些都不是根本原因。
9. 真正原因:当前实际上运行的是Python 3.13
虽然CMD前面显示:
text
(pytorchgpu)
但执行:
cmd
python
却得到:
text
Python 3.13.9 | packaged by Anaconda, Inc.
进一步执行:
cmd
where python
得到:
text
D:\ruanjian\anaconda\python.exe
说明实际调用的是:
text
Anaconda base环境
Python 3.13.9
而不是刚刚创建的:
text
pytorchgpu
Python 3.11.16
于是实际情况变成:
text
下载的wheel:
cp311
↓
要求Python 3.11
当前实际Python:
3.13.9
结果:
版本不兼容
↓
not a supported wheel on this platform
这就是第一次安装失败的真正原因。
10. 不要只看命令行前面的环境名称
这是整个安装过程中非常重要的经验。
即使终端显示:
text
(pytorchgpu)
也最好执行:
cmd
python --version
确认Python版本。
再执行:
cmd
where python
确认解释器路径。
例如本文正确环境应该是:
text
Python 3.11.16
并且Python路径应该类似:
text
C:\Users\用户名\.conda\envs\pytorchgpu\python.exe
如果看到:
text
D:\ruanjian\anaconda\python.exe
说明实际还是base环境。
所以:
终端前缀只是一种提示,真正决定环境的是当前调用的python.exe。
11. 正确进入PyTorch环境
由于普通CMD中的Conda激活存在异常,本次最终使用:
text
Anaconda PowerShell Prompt
执行:
powershell
conda activate pytorchgpu
然后检查:
powershell
python --version
输出:
text
Python 3.11.16
进一步进入Python:
powershell
python
显示:
text
Python 3.11.16 | packaged by conda-forge
至此可以确认:
当前真正进入了Python 3.11的
pytorchgpu环境。
12. 推荐使用python -m pip安装,而不是直接pip
在多Python环境电脑上,推荐使用:
powershell
python -m pip install xxx
而不是:
powershell
pip install xxx
原因是:
text
pip install
依赖Windows PATH寻找:
text
pip.exe
如果电脑中同时存在:
text
Python 3.13
Python 3.11
Anaconda
Conda虚拟环境
就可能找到错误的pip。
而:
powershell
python -m pip
表示:
使用当前这个Python解释器所对应的pip。
因此更加可靠。
13. 安装本地PyTorch wheel
首先进入下载目录:
powershell
cd "F:\edge浏览器下载的内容"
确认:
powershell
python --version
输出:
text
Python 3.11.16
然后安装:
powershell
python -m pip install "torch-2.8.0+cu129-cp311-cp311-win_amd64.whl"
由于此时:
text
当前Python:3.11.16
wheel:cp311
系统:Windows 64位
三者完全匹配,因此可以正常安装。
14. 安装torchvision
对应的torchvision文件为:
text
torchvision-0.23.0+cu129-cp311-cp311-win_amd64.whl
同样执行:
powershell
python -m pip install "torchvision-0.23.0+cu129-cp311-cp311-win_amd64.whl"
这样PyTorch和torchvision保持对应版本。
本文最终组合为:
text
torch 2.8.0+cu129
torchvision 0.23.0+cu129
15. 如果不想手动下载wheel怎么办?
也可以直接使用PyTorch对应软件源在线安装。
基本形式为:
powershell
python -m pip install torch torchvision torchaudio --index-url <对应的PyTorch CUDA软件源>
在线安装的优点是:
pip会根据当前Python版本和操作系统选择对应wheel。
因此可以减少手动下载:
text
cp311
cp312
cp313
错误版本的概率。
如果网络环境不稳定,手动下载wheel后本地安装也完全可以。
16. 安装完成后第一步:检查PyTorch版本
进入Python:
powershell
python
然后:
python
import torch
首先检查:
python
print(torch.__version__)
本文输出:
text
2.8.0+cu129
这里非常关键。
如果只显示:
text
2.8.0
还需要进一步确认具体安装包。
本文:
text
2.8.0+cu129
明确说明当前安装的是:
PyTorch 2.8.0 CUDA 12.9构建。
17. 第二步:检查CUDA是否可用
执行:
python
print(torch.cuda.is_available())
本文得到:
text
True
这是PyTorch GPU环境最核心的检测之一。
如果输出:
text
True
说明:
PyTorch已经能够正常访问CUDA设备。
如果输出:
text
False
则需要继续检查:
text
是否安装CPU版PyTorch
NVIDIA驱动是否正常
GPU是否被系统识别
PyTorch CUDA构建是否正确
环境是否装错
18. 第三步:检查PyTorch识别到了哪张显卡
执行:
python
print(torch.cuda.get_device_name(0))
本文输出:
text
NVIDIA GeForce RTX 5070
这一步非常重要,因为它说明:
PyTorch不仅检测到了CUDA,而且已经成功识别实际GPU设备。
最终验证结果:
python
>>> import torch
>>> print(torch.__version__)
2.8.0+cu129
>>> print(torch.cuda.is_available())
True
>>> print(torch.cuda.get_device_name(0))
NVIDIA GeForce RTX 5070
到这里就可以认为:
RTX 5070的PyTorch GPU环境已经完整打通。
19. 还可以进行更完整的GPU检测
除了上面三条,还可以执行:
python
import torch
print("PyTorch版本:", torch.__version__)
print("CUDA是否可用:", torch.cuda.is_available())
print("PyTorch CUDA版本:", torch.version.cuda)
print("GPU数量:", torch.cuda.device_count())
if torch.cuda.is_available():
print("当前GPU:", torch.cuda.get_device_name(0))
预期结果类似:
text
PyTorch版本: 2.8.0+cu129
CUDA是否可用: True
PyTorch CUDA版本: 12.9
GPU数量: 1
当前GPU: NVIDIA GeForce RTX 5070
这比只看:
python
torch.cuda.is_available()
更加完整。
20. 进一步测试:真正创建一个CUDA Tensor
有时候仅仅检查:
python
torch.cuda.is_available()
还不够直观。
可以直接创建一个GPU Tensor:
python
import torch
x = torch.randn(3, 3).cuda()
print(x)
print(x.device)
如果最后显示:
text
cuda:0
说明这个Tensor已经真实存放在GPU显存中。
也可以写成:
python
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
x = torch.randn(3, 3).to(device)
print(x.device)
输出:
text
cuda:0
这就是更加直接的CUDA运行测试。
21. 深度学习代码中怎么让模型使用RTX 5070?
以后自己的PyTorch代码中推荐这样写:
python
import torch
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print("当前设备:", device)
然后将模型放到GPU:
python
model = model.to(device)
数据也要放到相同设备:
python
x = x.to(device)
y = y.to(device)
例如:
python
for x, y in train_loader:
x = x.to(device)
y = y.to(device)
output = model(x)
只要:
python
torch.cuda.is_available()
为:
text
True
这里:
python
device
就会自动选择:
text
cuda
也就是RTX 5070。
22. 一个非常容易误解的问题:必须安装本地CUDA Toolkit吗?
很多人认为:
使用PyTorch GPU之前,一定要先安装和PyTorch完全相同版本的CUDA Toolkit。
实际上对于PyTorch官方提供的CUDA wheel来说,并不总是如此。
例如:
text
torch-2.8.0+cu129
本身已经带有运行PyTorch所需的一套CUDA相关运行时依赖。
因此对于普通PyTorch训练任务,更核心的是:
text
正确的NVIDIA显卡驱动
+
正确的PyTorch CUDA构建
而不是:
系统必须另外安装一个完全相同版本的CUDA Toolkit。
只有在一些特殊场景,例如:
text
编译自定义CUDA扩展
CUDA C/C++开发
某些第三方库需要nvcc
时,本地CUDA Toolkit才更加重要。
所以:
text
torch.version.cuda
和:
text
nvcc --version
反映的并不一定是同一个东西。
23. PyTorch中的cu129和系统CUDA不是同一个概念
假设:
python
print(torch.version.cuda)
输出:
text
12.9
表示:
当前PyTorch是基于CUDA 12.9相关运行时构建的。
而执行:
cmd
nvcc --version
显示的是:
本机安装的CUDA Toolkit编译器版本。
执行:
cmd
nvidia-smi
看到的:
text
CUDA Version
主要和当前NVIDIA驱动支持能力有关。
因此三个地方的CUDA版本:
text
nvidia-smi
nvcc --version
torch.version.cuda
出现不同数字,并不一定意味着环境有问题。
这是配置PyTorch时非常容易混淆的一点。
24. 常见错误一:not a supported wheel on this platform
如果出现:
text
xxx.whl is not a supported wheel on this platform
优先检查:
cmd
python --version
以及:
cmd
where python
然后查看wheel名称。
例如:
text
cp311
必须对应:
text
Python 3.11
如果实际Python是:
text
3.13
就会直接不兼容。
25. 常见错误二:环境名前面显示正确,但Python版本不对
例如:
text
(pytorchgpu) C:\Users\xxx>
看起来进入了环境。
但:
cmd
python --version
却是:
text
Python 3.13.9
这种情况下不要继续安装任何包。
一定继续检查:
cmd
where python
真正激活后应该指向:
text
...\envs\pytorchgpu\python.exe
26. 常见错误三:torch.cuda.is_available()返回False
如果:
python
torch.cuda.is_available()
返回:
text
False
可以按照以下顺序排查:
text
1. nvidia-smi能否识别显卡
↓
2. torch.__version__是什么
↓
3. 是否安装了CUDA版PyTorch
↓
4. torch.version.cuda是否有值
↓
5. 当前Python是否来自正确环境
↓
6. 是否误装了CPU版torch
例如:
python
print(torch.__version__)
print(torch.version.cuda)
如果:
python
torch.version.cuda
为:
text
None
通常需要重点怀疑安装的是CPU构建。
27. 常见错误四:pip把库装到了错误的Python中
如果电脑中存在多个Python:
text
Python 3.13
Python 3.11
Conda base
Conda pytorchgpu
不建议只执行:
cmd
pip install xxx
建议:
cmd
python -m pip install xxx
还可以提前检查:
cmd
python -m pip --version
确保路径中包含:
text
pytorchgpu
28. 普通CMD不能正常activate怎么办?
即使普通CMD中的:
cmd
conda activate pytorchgpu
存在问题,也不是不能安装软件包。
可以执行:
cmd
conda run -n pytorchgpu python -m pip install numpy
或者直接指定Python:
cmd
"C:\Users\用户名\.conda\envs\pytorchgpu\python.exe" -m pip install numpy
因此:
使用PyTorch并不是只能依赖Anaconda PowerShell Prompt。
只要最终调用的是正确解释器即可。
不过如果Anaconda PowerShell Prompt可以正常激活,日常使用它通常最省心。
29. 本次完整安装逻辑
整个流程可以总结成:
text
RTX 5070
↓
安装/确认NVIDIA显卡驱动
↓
创建Conda独立环境
↓
Python 3.11.16
↓
确认python --version
↓
确认Python解释器路径
↓
安装torch 2.8.0+cu129
↓
安装torchvision 0.23.0+cu129
↓
import torch
↓
torch.__version__
2.8.0+cu129
↓
torch.cuda.is_available()
True
↓
torch.cuda.get_device_name(0)
NVIDIA GeForce RTX 5070
↓
GPU环境配置成功
30. 推荐的最终验证代码
环境安装结束后,可以保存下面代码为:
text
test_gpu.py
内容:
python
import torch
print("=" * 50)
print("PyTorch GPU Environment Check")
print("=" * 50)
print(f"PyTorch version : {torch.__version__}")
print(f"CUDA available : {torch.cuda.is_available()}")
print(f"PyTorch CUDA : {torch.version.cuda}")
print(f"GPU count : {torch.cuda.device_count()}")
if torch.cuda.is_available():
print(f"GPU name : {torch.cuda.get_device_name(0)}")
device = torch.device("cuda")
x = torch.randn(3, 3, device=device)
print(f"Tensor device : {x.device}")
print("GPU test : SUCCESS")
else:
print("GPU test : FAILED")
print("=" * 50)
执行:
powershell
python test_gpu.py
如果得到类似:
text
PyTorch version : 2.8.0+cu129
CUDA available : True
PyTorch CUDA : 12.9
GPU count : 1
GPU name : NVIDIA GeForce RTX 5070
Tensor device : cuda:0
GPU test : SUCCESS
说明PyTorch GPU环境已经真正可以使用。
31. 本次最终配置
最终成功环境:
text
Conda环境:
pytorchgpu
Python:
3.11.16
PyTorch:
2.8.0+cu129
CUDA Runtime:
12.9
GPU:
NVIDIA GeForce RTX 5070
torch.cuda.is_available():
True
也就是:
text
Python 3.11
↓
PyTorch 2.8.0
↓
CUDA 12.9 Runtime
↓
NVIDIA RTX 5070
↓
GPU深度学习环境成功
32. 总结
这次配置过程中最值得记住的并不是某一条安装命令,而是以下几个原则。
第一:
下载PyTorch wheel时一定要看Python版本。
例如:
text
cp311 → Python 3.11
cp312 → Python 3.12
cp313 → Python 3.13
第二:
终端显示
(pytorchgpu)并不能替代Python版本检查。
始终建议执行:
cmd
python --version
以及:
cmd
where python
第三:
安装Python软件包建议使用
python -m pip。
例如:
cmd
python -m pip install xxx
第四:
不要简单要求nvidia-smi、本地CUDA Toolkit和PyTorch CUDA版本三个数字完全一致。
它们代表的概念并不完全相同。
第五:
判断PyTorch GPU是否真正成功,最有说服力的是运行结果。
本文最终结果:
python
print(torch.__version__)
输出:
text
2.8.0+cu129
python
print(torch.cuda.is_available())
输出:
text
True
python
print(torch.cuda.get_device_name(0))
输出:
text
NVIDIA GeForce RTX 5070
这三个结果同时成立,说明:
Python 3.11 → PyTorch 2.8.0 → CUDA 12.9 → RTX 5070这条GPU计算链已经完整打通。
附:常用检查命令
检查Python:
cmd
python --version
检查Python路径:
cmd
where python
检查pip:
cmd
python -m pip --version
检查NVIDIA显卡:
cmd
nvidia-smi
检查PyTorch版本:
python
import torch
print(torch.__version__)
检查PyTorch CUDA Runtime:
python
print(torch.version.cuda)
检查CUDA:
python
print(torch.cuda.is_available())
检查GPU:
python
print(torch.cuda.get_device_name(0))
检查GPU数量:
python
print(torch.cuda.device_count())
创建GPU Tensor:
python
x = torch.randn(3, 3, device="cuda")
print(x.device)
如果最终得到:
text
cuda:0
并且:
text
NVIDIA GeForce RTX 5070
那么恭喜你:
PyTorch GPU环境已经配置完成,可以正式开始模型训练。