CentOS或Ubuntu系统下如何安装NVIDIA驱动和深度学习框架?

下面以 Ubuntu 22.04CentOS 7/8 为例,给出从安装 NVIDIA 驱动到配置深度学习框架(以 PyTorch + CUDA 为主)的通用流程。你可以根据自己实际版本做微调。


一、通用准备

1. 确认显卡与当前驱动状态

nvidia-smi
  • 能显示驱动版本、GPU 型号、CUDA 版本 → 说明已有驱动。
  • 若报错 command not found 或无法识别 GPU → 需要重新安装驱动。

查看内核版本:

uname -r

确保后续安装的驱动版本与内核匹配(NVIDIA 官网会提示)。


二、Ubuntu 系统下安装 NVIDIA 驱动

方式 A:使用 Ubuntu 官方源(推荐新手)

  1. 更新软件源:
sudo apt update
sudo apt upgrade
  1. 添加 NVIDIA 驱动 PPA(可选,某些发行版已内置):
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
  1. 查看可用驱动版本:
ubuntu-drivers devices

输出类似:

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
model: GeForce RTX 3080
driver   : nvidia-driver-535 - distro non-free recommended
driver   : nvidia-driver-525 - distro non-free
...
  1. 安装推荐驱动(例如 nvidia-driver-535):
sudo ubuntu-drivers autoinstall
# 或直接指定版本:
# sudo apt install nvidia-driver-535
  1. 重启系统:
sudo reboot
  1. 验证:
nvidia-smi

看到驱动版本和 CUDA 版本信息即成功。

注意:不要手动从 .run 安装包,除非有特殊需求,否则容易与系统包管理冲突。


方式 B:从 NVIDIA 官网下载 .run 文件(高级用户)

适用于较新 GPU 或特定驱动版本。

  1. 进入 NVIDIA 驱动下载页面,选择对应产品、操作系统,下载 Linux x86_64 的 .run 文件。

  2. 关闭图形界面(X11/Wayland),切换到 TTY(Ctrl+Alt+F3):

sudo systemctl get-default      # 确认默认目标
sudo systemctl set-default multi-user.target
sudo systemctl isolate multi-user.target
  1. 禁用 nouveau(开源驱动):

编辑 /etc/modprobe.d/blacklist-nouveau.conf

sudo nano /etc/modprobe.d/blacklist-nouveau.conf

加入:

blacklist nouveau
options nouveau modeset=0

更新 initramfs:

sudo update-initramfs -u
  1. 安装驱动:
chmod +x NVIDIA-Linux-x86_64-xxx.xx.run
sudo ./NVIDIA-Linux-x86_64-xxx.xx.run --no-opengl-files --no-kernel-modules

按提示接受许可,安装完成后重启:

sudo reboot

三、Ubuntu 下安装 CUDA Toolkit(与驱动配套)

NVIDIA 驱动自带部分 CUDA 运行时,但深度学习通常需要独立安装 CUDA Toolkit(包含 cuDNN、nvcc 等)。

1. 确定所需 CUDA 版本

  • 查看 nvidia-smi 中 “CUDA Version” 是驱动支持的最高版本。
  • 根据深度学习框架要求选择略低或同版本的 CUDA(如 PyTorch 官方镜像通常提供多个 CUDA 版本)。

示例:需要 CUDA 12.1。

2. 添加 NVIDIA CUDA 仓库(Ubuntu 22.04)

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update

3. 安装 CUDA Toolkit(以 12.1 为例)

sudo apt install cuda-toolkit-12-1

或更精细地只安装部分组件(视需求而定)。

4. 配置环境变量

将以下内容加入 ~/.bashrc

export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH

然后:

source ~/.bashrc

验证:

nvcc --version

四、Ubuntu 下安装深度学习框架(PyTorch 示例)

1. 使用 conda 安装(推荐)

安装 Miniconda/Anaconda(若未安装):

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 按提示完成安装,并 source ~/.bashrc

创建环境并安装 PyTorch + CUDA:

conda create -n torch_env python=3.10
conda activate torch_env

# 根据你的 CUDA 版本选择命令,例如 CUDA 12.1
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

验证:

python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"

2. 使用 pip 直接安装(不推荐用于多项目隔离)

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

五、CentOS 7/8 安装 NVIDIA 驱动

CentOS 没有像 Ubuntu 那样方便的图形化驱动源,一般做法是:

1. 启用 EPEL 并安装必要工具

sudo yum install -y epel-release
sudo yum groupinstall -y "Development Tools"
sudo yum install -y kernel-devel kernel-headers $(uname -r)

2. 下载 NVIDIA 驱动 .run 文件

同上,去 NVIDIA 官网下载对应 CentOS 的 Linux x86_64 驱动。

3. 临时停止图形界面(如有)

sudo systemctl set-default multi-user.target
sudo systemctl isolate multi-user.target

4. 禁用 nouveau

编辑 /etc/modprobe.d/blacklist-nouveau.conf

blacklist nouveau
options nouveau modeset=0

重建 initramfs(CentOS 7):

sudo dracut --force

CentOS 8 类似:

sudo dracut --force

5. 安装驱动

chmod +x NVIDIA-Linux-x86_64-xxx.xx.run
sudo ./NVIDIA-Linux-x86_64-xxx.xx.run --no-opengl-files --no-kernel-modules

重启:

sudo reboot

验证:

nvidia-smi

六、CentOS 下安装 CUDA Toolkit

1. 添加 NVIDIA 仓库(以 CUDA 12.1 为例)

wget https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-repo-rhel8-12.1.1-1.x86_64.rpm
sudo rpm -ivh cuda-repo-rhel8-12.1.1-1.x86_64.rpm
sudo yum clean all
sudo yum makecache

2. 安装 CUDA Toolkit

sudo yum install cuda-toolkit-12-1

或只安装需要的组件:

sudo yum install cuda-cudart cuda-nvcc ...

3. 配置环境变量

编辑 ~/.bashrc

export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH
source ~/.bashrc
nvcc --version

七、CentOS 下安装深度学习框架

同样推荐使用 conda:

# 安装 Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc

conda create -n torch_env python=3.10
conda activate torch_env

# 根据 CUDA 版本选择,例如 CUDA 12.1
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

验证同上。


八、常见问题排查

  1. nvidia-smi 找不到设备

    • 检查内核模块是否加载:lsmod | grep nvidia
    • 检查是否有多个驱动冲突(如 nouveau 未禁用)。
  2. PyTorch 检测不到 GPU

    • 确认 nvidia-smi 正常。
    • 确认安装的 PyTorch 版本与 CUDA 版本匹配(看 PyTorch 官网)。
    • 在 Python 中运行:
      import torch
      print(torch.version.cuda)
      print(torch.cuda.is_available())
  3. 驱动版本太老,不支持新 CUDA

    • 升级 NVIDIA 驱动到最新版本(保持与现有 CUDA Toolkit 兼容的版本)。

如果你能提供:

  • 具体系统版本(如 Ubuntu 22.04 / CentOS 7.9)
  • 显卡型号
  • 需要的 CUDA 版本或深度学习框架(PyTorch/TensorFlow/ONNX 等)

我可以给出一份完全针对你环境的“一键脚本”式安装步骤。