Ubuntu 24.04.2系统安装PyTorch后无法识别GPU怎么办?

在 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 设置

✅ 附加建议

  1. 避免混合 conda 和 pip 安装 PyTorch,容易冲突。
  2. 推荐使用虚拟环境:
    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
  3. 更新系统内核后,可能需要重新生成 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)"

我可以帮你精准定位问题。