在 Ubuntu 24.04.2 系统上安装 PyTorch 后无法识别 GPU,通常是由于 CUDA 驱动、NVIDIA 显卡驱动或 PyTorch 安装方式不匹配 导致的。以下是详细的排查和解决步骤:
✅ 第一步:确认你的显卡支持 CUDA
确保你使用的是 NVIDIA 显卡(如 GTX 10xx、RTX 20/30/40 系列等),且支持 CUDA。
lspci | grep -i nvidia
如果无输出,说明系统未检测到 NVIDIA 显卡,可能是硬件问题或驱动未加载。
✅ 第二步:检查 NVIDIA 驱动是否正确安装
1. 查看驱动版本:
nvidia-smi
✅ 正常输出示例:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.129.03 Driver Version: 535.129.03 CUDA Version: 12.2 |
|-------------------------------+----------------------+----------------------+
| GPU 0 Tesla T4 Off | 0% 35C P8 10W / 70W | 0MiB / 15360MiB |
+-------------------------------+----------------------+----------------------+
🔴 如果提示 command not found 或报错:
- 表示 NVIDIA 驱驱动未安装或未正确加载
2. 安装正确的 NVIDIA 驱动
推荐使用官方源或 Ubuntu 自带工具:
# 更新包列表
sudo apt update
# 查找推荐驱动
ubuntu-drivers devices
# 自动安装推荐驱动
sudo ubuntu-drivers autoinstall
# 或手动选择安装(例如)
sudo apt install nvidia-driver-535
💡 注意:Ubuntu 24.04 默认可能使用
nvidia-driver-535或更高版本(如 550)。确保版本与 CUDA 兼容。
重启系统后再次运行 nvidia-smi 检查是否正常。
✅ 第三步:确认 CUDA 是否可用
PyTorch 使用的是 CUDA Toolkit(由 NVIDIA 提供),但通常通过 PyTorch 自带的 CUDA 库运行,不需要单独安装完整 CUDA Toolkit。
但你需要确保:
nvidia-smi显示的 CUDA 版本 ≥ PyTorch 所需的 CUDA 版本- 例如:PyTorch 若使用 CUDA 12.1,则
nvidia-smi的 CUDA 版本应 ≥ 12.1
⚠️ 注意:
nvidia-smi显示的是 驱动支持的最高 CUDA 版本,不代表系统已安装该版本的开发工具。
✅ 第四步:正确安装支持 GPU 的 PyTorch
不要用默认的 pip install torch,因为它可能只安装 CPU 版本!
请从 https://pytorch.org/get-started/locally/ 获取对应命令。
示例(CUDA 12.1):
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
🔁 如果你不确定 CUDA 版本,可先尝试
cu121(最常见)
✅ 第五步:验证 PyTorch 是否识别 GPU
进入 Python 环境测试:
import torch
print("CUDA available:", torch.cuda.is_available())
print("CUDA version:", torch.version.cuda)
print("Number of GPUs:", torch.cuda.device_count())
if torch.cuda.is_available():
print("Current GPU:", torch.cuda.get_device_name(0))
✅ 正常输出应类似:
CUDA available: True
CUDA version: 12.1
Number of GPUs: 1
Current GPU: NVIDIA GeForce RTX 3060
❌ 常见问题及解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
nvidia-smi 找不到命令 |
驱动未安装 | 安装 nvidia-driver-xxx 并重启 |
torch.cuda.is_available() 返回 False |
PyTorch 安装了 CPU 版 | 重新安装 CUDA 对应版本的 PyTorch |
nvidia-smi 正常但 PyTorch 不识别 |
CUDA 版本不匹配 | 检查 PyTorch 安装时指定的 CUDA 版本(如 cu118, cu121) |
| 安装驱动后仍失败 | Secure Boot 阻止加载 | 进入 BIOS 禁用 Secure Boot,或签名驱动 |
| 使用 WSL? | 需要在 Windows 主机安装驱动 | 参考 WSL2 + CUDA 设置 |
✅ 附加建议
- 避免混合 conda 和 pip 安装 PyTorch,容易冲突。
- 推荐使用虚拟环境:
python -m venv torch-env source torch-env/bin/activate pip install --upgrade pip pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 - 更新系统内核后,可能需要重新生成 initramfs 并更新 NVIDIA 模块:
sudo update-initramfs -u
🧰 总结流程
# 1. 检查显卡
lspci | grep -i nvidia
# 2. 安装驱动
sudo ubuntu-drivers autoinstall
# 或 sudo apt install nvidia-driver-535
# 3. 重启
sudo reboot
# 4. 验证驱动
nvidia-smi
# 5. 安装 PyTorch(CUDA 版)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# 6. 测试
python -c "import torch; print(torch.cuda.is_available())"
如果你执行完以上步骤仍然失败,请提供以下信息以便进一步诊断:
nvidia-smi输出lspci | grep -i nvidia- 你安装 PyTorch 的具体命令
python -c "import torch; print(torch.__version__); print(torch.version.cuda)"
我可以帮你精准定位问题。
PHPWP博客