在使用深度学习、vLLM、CUDA 或 Docker GPU 容器时,一个非常常见的问题是:
GPU 不被系统识别 / nvidia-smi 无输出 / 容器看不到 GPU
这类问题通常不是“坏了”,而是驱动、CUDA、权限或环境配置问题。本文帮你一步一步排查到底。
一、先判断 GPU 是否真的“没被识别”
1. 最关键命令
nvidia-smi
可能结果:
✅ 正常
- 显示 GPU 型号、显存、驱动版本
❌ 不正常 1:命令不存在
nvidia-smi: command not found
👉 说明:驱动没装
❌ 不正常 2:无法连接 NVIDIA 驱动
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver
👉 说明:驱动异常 / 内核模块没加载
❌ 不正常 3:无设备
No devices were found
👉 说明:GPU 未被系统识别(BIOS / PCIe / 驱动问题)
二、GPU 不识别的常见原因
1. NVIDIA 驱动没装或损坏(最常见)
Linux 常见问题:
- 驱动安装失败
- kernel 更新后驱动失效
- nouveau 冲突
2. nouveau 开源驱动冲突
系统默认可能加载:
nouveau
它会阻止 NVIDIA 官方驱动工作。
3. CUDA 版本不匹配(不会导致完全不识别,但会异常)
例如:
- 驱动支持 CUDA 11
- 但程序使用 CUDA 12
4. BIOS 未启用独显
常见于:
- 服务器主板
- 工作站
- 双显卡机器
5. PCIe 设备未被识别
检查:
lspci | grep -i nvidia
如果没有输出:
👉 硬件层问题
6. Docker / 容器未挂载 GPU
如果宿主机正常,但容器不识别:
👉 NVIDIA Container Toolkit 未配置
7. 内核模块未加载
lsmod | grep nvidia
如果为空:
👉 驱动未加载
三、完整排查步骤(按顺序执行)
Step 1:确认硬件是否存在
lspci | grep -i nvidia
结果:
- 有输出 → GPU 存在
- 无输出 → 硬件/BIOS问题
Step 2:检查驱动是否安装
nvidia-smi
Step 3:检查驱动模块
lsmod | grep nvidia
Step 4:检查 nouveau 是否冲突
lsmod | grep nouveau
如果有输出 → 冲突
Step 5:查看驱动错误日志
dmesg | grep -i nvidia
四、解决方案大全
方案 1:重新安装 NVIDIA 驱动(最有效)
Ubuntu 示例:
sudo apt update
sudo apt install -y nvidia-driver-535
sudo reboot
安装后验证:
nvidia-smi
方案 2:禁用 nouveau 驱动
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nouveau.conf"
sudo update-initramfs -u
sudo reboot
方案 3:重新加载 NVIDIA 模块
sudo modprobe nvidia
方案 4:检查 BIOS 设置
进入 BIOS:
- Enable:
- PCIe GPU
- Discrete Graphics
- Disable:
- Integrated GPU(可选)
方案 5:Docker 不识别 GPU
如果宿主机正常,但容器不行:
安装 NVIDIA Container Toolkit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
测试 GPU 容器
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi
方案 6:CUDA 版本问题(深度学习常见)
检查:
nvcc -V
如果驱动支持不足:
👉 升级 NVIDIA Driver,而不是 CUDA
五、典型场景分析
场景 1:刚装系统 GPU 不识别
👉 99%:驱动没装
场景 2:更新内核后坏了
👉 驱动模块失效
解决:
sudo apt install --reinstall nvidia-driver-xxx
场景 3:Docker 里没有 GPU
👉 toolkit 没装 / runtime 没配置
场景 4:云服务器 GPU 不见
👉 实例类型不对(没选 GPU 实例)
六、快速修复流程(推荐)
如果你想“一键救活”,按这个顺序:
lspci | grep nvidianvidia-smi- 重新安装驱动
- 禁用 nouveau
- 重启
- 再测
nvidia-smi
七、总结
GPU 不被识别通常只有四类原因: