共计 1602 个字符,预计需要花费 5 分钟才能阅读完成。
问题背景
在深度学习项目中,GPU 加速能显著提升 PyTorch 模型的训练速度。但许多开发者在 Anaconda 环境中常遇到 torch.cuda.is_available() 返回 False 的问题,导致无法利用 GPU 资源。典型的错误现象包括:

- 运行时警告
CUDA not available - 模型训练时未观察到 GPU 显存占用
- 直接报错
AssertionError: Torch not compiled with CUDA enabled
排查路线
1. 检查 CUDA 驱动与 Runtime 版本
首先需要确认系统 CUDA 驱动版本与 PyTorch 要求的 CUDA 运行时版本是否兼容:
# 查看驱动支持的最高 CUDA 版本
nvidia-smi
# 查看当前安装的 CUDA Toolkit 版本
nvcc --version
注意 :nvidia-smi 显示的 CUDA 版本是驱动支持的最高版本,而 nvcc 显示的是实际安装的 CUDA Toolkit 版本。两者可能不同。
2. 验证 conda 环境隔离
Anaconda 环境可能因 LD_LIBRARY_PATH 冲突导致无法识别系统 CUDA:
# 检查环境变量
echo $LD_LIBRARY_PATH
# 临时解决方案(Linux/Mac)export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
3. PyTorch 与 CUDA 版本匹配
参考 PyTorch 官方版本矩阵选择对应版本:
| PyTorch 版本 | CUDA 支持版本 |
|---|---|
| 1.12.x | 11.3, 10.2 |
| 1.11.x | 11.3, 10.2 |
| 1.10.x | 11.1, 10.2 |
解决方案
1. 通过 conda 安装匹配版本
# 示例:安装 CUDA 11.3 对应的 PyTorch
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
2. 环境变量设置
import os
# 确保系统 CUDA 库路径在搜索路径中
os.environ['LD_LIBRARY_PATH'] = '/usr/local/cuda/lib64:' + os.environ.get('LD_LIBRARY_PATH', '')
3. 验证 GPU 可用性
import torch
print(f"PyTorch 版本: {torch.__version__}")
print(f"CUDA 可用: {torch.cuda.is_available()}")
if torch.cuda.is_available():
print(f"当前设备: {torch.cuda.get_device_name(0)}")
预期输出:
PyTorch 版本: 1.12.1
CUDA 可用: True
当前设备: NVIDIA GeForce RTX 3090
避坑指南
- 避免混用 pip 和 conda:这可能导致库冲突
- 平台差异:
- Windows 需额外安装 NVIDIA 驱动
- Mac 仅支持 MPS 加速(M1 芯片)
- 多 GPU 环境 :需设置
CUDA_VISIBLE_DEVICES环境变量
性能验证
在 MNIST 数据集上对比 CPU/GPU 训练速度:
import time
# CPU 训练
start = time.time()
# ... 训练代码 ...
print(f"CPU 耗时: {time.time()-start:.2f}s")
# GPU 训练
start = time.time()
# ... 相同训练代码(需添加.to('cuda'))...
print(f"GPU 耗时: {time.time()-start:.2f}s")
典型结果:
– CPU:约 120 秒 /epoch
– GPU:约 15 秒 /epoch(RTX 3090)
参考资料
通过以上步骤,开发者可以系统地解决 Anaconda 环境下 PyTorch 无法调用 GPU 的问题。关键点在于版本匹配和环境隔离,实际操作中建议优先使用 conda 管理依赖。
正文完
