在 Linux 上配置 NVIDIA 显卡是深度学习环境的必修课。驱动、CUDA、cuDNN、nvidia-docker2 一套下来,踩坑无数。本文从查看显卡型号开始,到驱动安装、CUDA 配置、Docker GPU 支持,全流程实战,命令可直接复制使用。
以下内容都是博主多年实践积累下来的经验,整理不易,希望大家能点赞收藏支持一下!
一、查看显卡型号
# 方法1:通用命令lspci | grep -i nvidia# 方法2:显示具体型号lshw -numeric -C display# 方法3:NVIDIA 自带命令nvidia-smi -L
查询型号对应关系:
如果显示 NVIDIA Corporation [10DE:1E82] 这样的十六进制代码,去百度搜索“ PCI Devices ”网站输入查询具体型号。
二、安装驱动
Ubuntu 自动安装(推荐)
# 1. 安装驱动检测工具apt install ubuntu-drivers-common# 2. 查看可用驱动版本ubuntu-drivers devices# 3. 自动安装推荐驱动ubuntu-drivers autoinstall# 4. 重启系统reboot
手动安指定版本安装
- 去官网下载对应驱动:https://www.nvidia.cn/drivers/lookup/
# CentOS / RHELyum install -y gcc gcc-c++ kernel-develdnf install kernel-devel-$(uname -r) kernel-headers-$(uname -r)# Ubuntu / Debianapt install -y build-essential dkmsapt install linux-headers-$(uname -r)
chmod +x NVIDIA-Linux-x86_64-xxx.xx.runsudo ./NVIDIA-Linux-x86_64-xxx.xx.run
验证安装
三、卸载驱动
方法一:使用 .run 文件卸载
./NVIDIA-Linux-x86_64-xxx.xx.run --uninstall# 或nvidia-uninstall
方法二:ubuntu包管理器卸载
# Ubuntusudo apt remove --purge '^nvidia-.*'sudo apt autoremove# 清理 DKMS 模块sudo dkms remove nvidia/xxx.xx.xx --allsudo dkms status# 清理配置文件sudo rm -f /etc/X11/xorg.confsudo rm -f /etc/modprobe.d/nvidia*sudo rm -f /lib/modprobe.d/nvidia*
方法三:CentOS / RHEL
sudo yum remove nvidia-*sudo yum remove kmod-nvidia-*
四、安装 CUDA
自动安装(推荐)
# 1. 下载并安装 CUDA 密钥环wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.debsudo dpkg -i cuda-keyring_1.1-1_all.deb# 2. 更新源sudo apt update# 3. 安装 CUDA Toolkit(不含驱动)sudo apt install -y cuda-toolkit-12-8
配置环境变量
echo 'export PATH=/usr/local/cuda-12.8/bin:$PATH' >> ~/.bashrcecho 'export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrcsource ~/.bashrc
验证安装
手动安装
- 下载对应版本:https://developer.nvidia.com/cuda-toolkit-archive
chmod +x cuda_xxx_linux.runsudo ./cuda_xxx_linux.run
注意:安装时取消勾选 Driver(避免与已安装驱动冲突)。
卸载 CUDA
sudo apt-get remove --purge nvidia-cuda-toolkit cuda-toolkitsudo apt-get autoremovesudo rm -rf /usr/local/cuda*sudo rm -rf /usr/lib/cuda*
五、安装 cuDNN
- 下载对应版本:https://developer.nvidia.com/cudnn-downloads
tar -xvf cudnn-linux-x86_64-xxx.tgz# 复制到 CUDA 目录sudo cp cuda/include/* /usr/local/cuda-12.2/include/sudo cp cuda/lib64/libcudnn* /usr/local/cuda-12.2/lib64/sudo chmod a+r /usr/local/cuda-12.2/include/cudnn.hsudo chmod a+r /usr/local/cuda-12.2/lib64/libcudnn*
cat /usr/local/cuda-12.2/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
六、安装 nvidia-docker2
Ubuntu 22.04 / 24.04
方法一:apt 安装
# 导入 GPG 密钥curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg# 添加源echo ”deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/ubuntu24.04/amd64 /” | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list# 安装sudo apt updatesudo apt install -y nvidia-container-toolkit nvidia-container-toolkit-base nvidia-docker2# 配置 Dockersudo nvidia-ctk runtime configure --runtime=dockersudo systemctl restart docker
方法二:离线安装
如果 apt 安装报错,可以下载 deb 包手动安装:
# 按顺序安装依赖dpkg -i libnvidia-container1_1.17.8-1_amd64.debdpkg -i libnvidia-container-tools_1.17.8-1_amd64.debdpkg -i nvidia-container-toolkit-base_1.17.8-1_amd64.debdpkg -i nvidia-container-toolkit_1.17.8-1_amd64.debdpkg -i nvidia-docker2_2.14.0-1_all.deb # 配置 Dockersudo nvidia-ctk runtime configure --runtime=dockersudo systemctl restart docker
CentOS / RHEL
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.reposudo yum install -y nvidia-docker2sudo pkill -SIGHUP dockerdsudo systemctl restart docker
七、测试 GPU 可用
Docker 测试
docker run --gpus all --rm nvidia/cuda:12.6.0-cudnn-runtime-ubuntu22.04 nvidia-smi
Python 测试
import torch# 检查 CUDA 是否可用print(f”CUDA 可用: {torch.cuda.is_available()}”)print(f”显卡数量: {torch.cuda.device_count()}”)print(f”当前显卡: {torch.cuda.get_device_name(0)}”)# 简单计算测试x = torch.zeros(1).cuda()y = x + 1print(f”GPU 计算结果: {y}”)
性能测试
import timeimport torch# GPU 计算A = torch.ones(5000, 5000).to('cuda')B = torch.ones(5000, 5000).to('cuda')start = time.time()for i in range(100): C = torch.matmul(A, B)end = time.time()print(f'GPU 计算时长: {round((end - start) * 1000, 2)} ms')# CPU 计算A = torch.ones(5000, 5000)B = torch.ones(5000, 5000)start = time.time()for i in range(100): C = torch.matmul(A, B)end = time.time()print(f'CPU 计算时长: {round((end - start) * 1000, 2)} ms')
八、常见问题解决
问题1:驱动安装失败 - Nouveau 冲突
症状:安装 NVIDIA 驱动时提示 Nouveau 驱动正在使用。
解决:禁用 Nouveau
# 创建黑名单文件sudo vim /etc/modprobe.d/blacklist-nouveau.conf# 写入以下内容blacklist nouveauoptions nouveau modeset=0 # 更新 initramfssudo update-initramfs -u # 重启sudo reboot
问题2:CUDA 初始化失败(A100/A800 NVSwitch)
症状:Error 802: system not yet initialized
解决:修复 nvidia-fabricmanager
# 检查服务状态systemctl status nvidia-fabricmanager# 查看已安装版本dpkg -l | grep ”fabricmanager”# 卸载旧版本dpkg -p nvidia-fabricmanager-xxx# 下载对应版本安装wget https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2204/x86_64/nvidia-fabricmanager-xxx.debsudo dpkg -i nvidia-fabricmanager-xxx.deb# 启动服务sudo systemctl restart nvidia-fabricmanagersudo systemctl enable nvidia-fabricmanager
问题3:Docker 找不到 GPU
解决:配置默认运行时
编辑 /etc/docker/daemon.json:
{ ”default-runtime”: ”nvidia”, ”runtimes”: { ”nvidia”: { ”path”: ”/usr/bin/nvidia-container-runtime”, ”runtimeArgs”: [] } }}
重启 Docker:
总结
| | |
|---|
| | ubuntu-drivers autoinstall |
| | apt install cuda-toolkit-12-8 |
| | |
| | apt install nvidia-docker2 |
安装顺序:驱动 → CUDA → cuDNN → nvidia-docker2
如果这篇文章帮你避开了几个坑,欢迎点赞 + 收藏。
关注公众号,第一时间收到更新
如有需要以上安装包的朋友可以私信获取!