共计 3176 个字符,预计需要花费 8 分钟才能阅读完成。
Ubuntu 下解决 5060 显卡与 PyTorch GPU 版的 CUDA 兼容性问题:从驱动安装到环境配置
问题背景
CUDA(Compute Unified Device Architecture)是 NVIDIA 推出的并行计算平台和编程模型,它允许开发者使用 GPU 进行高性能计算。PyTorch 是一个广泛使用的深度学习框架,支持 GPU 加速。然而,不同版本的 PyTorch 对 CUDA 版本有特定的要求,如果 PyTorch 的 CUDA 版本与显卡驱动不兼容,就会导致无法使用 GPU 加速,甚至无法运行 PyTorch。

对于 NVIDIA 5060 显卡,常见的 CUDA 版本不兼容表现包括:
- PyTorch 安装后无法检测到 GPU
- 运行时出现
CUDA error: no kernel image is available for execution等错误 - 程序运行速度极慢,明显没有使用 GPU 加速
环境检查
在开始配置之前,我们需要先检查当前的显卡驱动和 CUDA 版本。
- 查看显卡型号和驱动版本:
nvidia-smi
输出示例:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.60.13 Driver Version: 525.60.13 CUDA Version: 12.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:01:00.0 Off | N/A |
| 0% 50C P8 10W / 200W | 0MiB / 8192MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
这里可以看到驱动版本是 525.60.13,CUDA Version 是 12.0。
- 查看系统安装的 CUDA Toolkit 版本:
nvcc --version
如果命令不存在,说明没有安装 CUDA Toolkit。
驱动安装
如果驱动版本不兼容,我们需要先安装正确的驱动。5060 显卡建议使用 525 或更高版本的驱动。
- 添加 NVIDIA 官方 PPA:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
- 查看可用的驱动版本:
ubuntu-drivers devices
- 安装推荐的驱动(通常是版本号最高的):
sudo apt install nvidia-driver-525
- 重启系统:
sudo reboot
- 验证驱动是否安装成功:
nvidia-smi
CUDA Toolkit 选择
PyTorch 官方支持的 CUDA 版本可以在 PyTorch 官网 查看。目前(2023 年)PyTorch 2.0 支持 CUDA 11.7 和 11.8。虽然 5060 显卡支持 CUDA 12.0,但为了兼容性,我们选择 CUDA 11.8。
- 下载 CUDA Toolkit 11.8:
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
- 安装 CUDA Toolkit:
sudo sh cuda_11.8.0_520.61.05_linux.run
安装时取消勾选驱动安装(因为我们已经安装了更新的驱动)。
- 添加环境变量:
编辑 ~/.bashrc 文件,添加:
export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后执行:
source ~/.bashrc
- 验证 CUDA 安装:
nvcc --version
应该显示 CUDA 11.8。
PyTorch 安装
现在我们可以安装与 CUDA 11.8 兼容的 PyTorch 版本。
- 创建 conda 环境(可选但推荐):
conda create -n pytorch python=3.9
conda activate pytorch
- 安装 PyTorch:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
- 验证 PyTorch 是否能识别 GPU:
import torch
print(torch.cuda.is_available()) # 应该返回 True
print(torch.cuda.get_device_name(0)) # 应该显示 5060 显卡
常见问题排查
1. PyTorch 无法识别 GPU
- 检查驱动是否正确安装:
nvidia-smi应该有输出 - 检查 CUDA 版本是否匹配:PyTorch 的 CUDA 版本应与系统安装的 CUDA Toolkit 版本一致
- 检查 conda 环境是否正确激活
2. 运行时出现 CUDA 错误
- 确保 PyTorch 版本与 CUDA 版本兼容
- 尝试重新安装 PyTorch:
pip install --upgrade --force-reinstall torch torchvision torchaudio
3. 性能不如预期
- 检查是否真的使用了 GPU:
nvidia-smi应显示 PyTorch 进程 - 确保数据已经转移到 GPU:
tensor.cuda()或tensor.to('cuda')
性能测试
运行一个简单的矩阵乘法测试 GPU 加速效果:
import torch
import time
# 创建两个大型随机矩阵
x = torch.randn(10000, 10000)
y = torch.randn(10000, 10000)
# CPU 计算
start = time.time()
z = x @ y
print(f"CPU time: {time.time() - start:.2f}s")
# GPU 计算
x = x.cuda()
y = y.cuda()
start = time.time()
z = x @ y
torch.cuda.synchronize() # 等待 GPU 完成
print(f"GPU time: {time.time() - start:.2f}s")
正常情况下,GPU 计算应该比 CPU 快很多倍。
避坑指南
-
驱动版本与 CUDA Toolkit 版本不匹配:确保驱动版本足够新以支持所需的 CUDA Toolkit 版本。
-
多个 CUDA 版本冲突:如果系统安装了多个 CUDA 版本,确保环境变量指向正确的版本。
-
conda 环境混乱:为每个项目创建单独的 conda 环境,避免包冲突。
-
PyTorch 版本选择错误:一定要从 PyTorch 官网获取正确的安装命令,不要随意使用
pip install torch。 -
忘记激活 conda 环境:在安装 PyTorch 前确保 conda 环境已激活。
结语
通过以上步骤,你应该已经成功在 5060 显卡上配置了 PyTorch GPU 环境。现在可以尝试运行你的深度学习项目,享受 GPU 加速带来的性能提升。如果在配置过程中遇到其他问题,欢迎在评论区分享,我们一起探讨解决方案。
Happy coding!
