Pytorch的安装和使用
首先需要了解PyTorch不同版本的区别:PyTorch有CPU和GPU两种版本,在包库中,Pytorch实际的库名称叫做”torch“而非“pytorch”,且GPU版本功能强于CPU。
1. PyTorch 版本区别
注意:互斥性
在同一个环境里面,CPU版和GPU(CUDA)版的PyTorch是互斥的,即只能存在一个版本的 PyTorch,它们不能同时安装。
CPU 版本和GPU 版本的PyTorch本质上是不同的 wheel 包(.whl
),彼此之间会覆盖。如果尝试在同一个 Python 环境中同时安装,会发生:
- 后装的版本会覆盖先装的版本;
- PyTorch 最终会以某一个版本为准运行(不可能同时运行两个);
- 所以不能实现“自动选择 CPU 或 GPU 运行”那种混合安装思路。
名称 | 是否支持 GPU | 是否支持 CPU | 适用场景 |
---|---|---|---|
CPU 版本 | ❌ 不支持 | ✅ 支持 | 没有 NVIDIA 显卡,轻量运行 |
GPU 版本(CUDA) | ✅ 支持(要求 CUDA 驱动) | ✅ 支持 | 有 NVIDIA 显卡,追求加速训练性能 |
注意:PyTorch GPU 版本也可以运行在 CPU 上。
其它:
- 安装的是 GPU 版本但没有可用 GPU(或者驱动有问题)时PyTorch 仍然可以在 CPU 上运行,但是它会 自动 fallback 到 CPU。
- 但是要注意,此时你不能用
.cuda()
或.to("cuda")
把模型或数据移到 GPU,否则会报错。
2. 不同版本的PyTorch如何安装
2.1 安装 CPU 版本(适合无 NVIDIA 显卡的用户)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
优点:不依赖 CUDA 驱动,轻便稳定
2.2 安装 GPU 版本(适合有 NVIDIA 显卡的用户)
需要先确认 CUDA 驱动是否安装成功(可用 nvidia-smi
检查)。
以CUDA 11.8为例:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
其它版本安装方式见:
👉 https://pytorch.org/get-started/locally/
3. 如何确定自己安装的PyTorch是否支持GPU?
3.1 快速判断当前是否支持 GPU
可以通过一段非常简单的 Python 代码判断你当前安装的 PyTorch 是 CPU 版本,还是支持 GPU(CUDA)的版本。
打开 PyCharm 或命令行运行以下代码:
import torch
print("CUDA 是否可用:", torch.cuda.is_available())
print("CUDA 版本:", torch.version.cuda)
print("当前 PyTorch 版本:", torch.__version__)
下面进行输出解读:
情况一:输出如下(典型 GPU 版本)
CUDA 是否可用: True
CUDA 版本: 11.8
当前 PyTorch 版本: 2.1.0+cu118
说明:
- 你安装的是 支持 GPU 的 PyTorch(带 CUDA 11.8)
- 系统中也检测到了 NVIDIA GPU(你可以用
.cuda()
)
情况二:输出如下(典型 CPU 版本)
CUDA 是否可用: False
CUDA 版本: None
当前 PyTorch 版本: 2.1.0+cpu
说明:
- 你安装的是 纯 CPU 版本
- 没有 CUDA 支持(不能使用 GPU)
总结:
方法 | 判断依据 |
---|---|
torch.cuda.is_available() | True 表示支持 GPU |
torch.version.cuda | 不为 None 表示是 GPU 版本 |
torch.__version__ | 包含 +cuXXX 是 GPU 版本,+cpu 是 CPU 版本 |
pip show torch | 版本信息也能区分 |
3.2 通过 pip 检查 PyTorch 包信息
你也可以运行下面命令查看安装包版本:
pip show torch
看 Version
字段,比如:
2.1.0+cpu
→ CPU 版本2.1.0+cu118
→ 支持 GPU,CUDA 11.8 版本2.2.0+cu121
→ 支持 GPU,CUDA 12.1
3.3 判断是否能使用 GPU(可能无法确定Pytorch的实际版本)
你也可以尝试创建一个张量并放入 GPU:
import torch
x = torch.tensor([1.0])
# 尝试移动到 GPU,如果失败说明不支持
try:
x_cuda = x.to("cuda")
print("成功移动到 GPU!")
except Exception as e:
print("失败:当前 PyTorch 不支持 GPU")
print("错误信息:", e)
或者在命令行中依次输入:
$ python
>>> import torch
>>> x = torch.tensor([1.0])
>>> x_cuda = x.to("cuda")
如果不报错,则当前 PyTorch支持 GPU,但是报错可确定当前不支持CPU,但是不能确定非GPU版本。
4. (建议)编写兼容 CPU 和 GPU 的 PyTorch 代码
强烈建议大家所有项目中都采用以下写法,这样代码可以跨平台、跨设备运行,而无需改动。
import torch
# 选择运行设备:有GPU就用GPU,否则自动fallback到CPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# 示例:将模型&数据移动到合适的设备
model = MyModel().to(device)
inputs = inputs.to(device)
labels = labels.to(device)
# 正常训练或推理
outputs = model(inputs)
这种情况下一套代码,无论换一台有或者没有GPU的计算机,都不用修改代码,有GPU就用GPU,没有就用CPU。但是注意要求:安装 GPU 版本的 PyTorch,并确保环境没问题。
5. (建议)使用虚拟环境管理版本
另一种可能做法是用两个不同的虚拟环境(用 conda
或 venv
管理环境),例如,使用conda创建两个环境分别用于CPU和GPU:
- 创建一个虚拟环境安装 CPU 版本(轻量、开发调试用)
- 创建另一个虚拟环境安装 GPU 版本(训练/部署)
# CPU 环境
conda create -n torch-cpu python=3.10
conda activate torch-cpu
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
# GPU 环境
conda create -n torch-gpu python=3.10
conda activate torch-gpu
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
6. 常见疑问与排查建议
问题 | 原因 | 解决方法 |
---|---|---|
安装了GPU版但运行仍是CPU | 驱动或CUDA版本不匹配 | 检查 nvidia-smi 是否能用,重新装CUDA驱动或匹配版本 |
无GPU,想用轻量版 | 误装了GPU 版本 | 卸载GPU版,用上文方式安装CPU版本 |
.cuda() 报错 | 当前没有可用GPU | 用 .to(device) 并自动检测GPU |
PyTorch安装后跑不起来 | 环境冲突 | 建议用虚拟环境隔离安装 |