跳到主要内容

GPU 环境准备(CUDA 版)

这个功能解决什么问题​

CUDA 版安装脚本不会替你安装 NVIDIA 驱动——驱动是内核级组件,涉及内核模块加载和系统重启,属于服务器管理员的基础环境职责,需要在运行 VortLab 安装之前自行完成。驱动装好之后,容器要用 GPU 还需要一层 nvidia-container-toolkit 把 GPU 接入 Docker。

本页把这些准备工作整理成一份可对照执行的清单。仅 CUDA 版需要;CPU 版部署无需阅读本页。

安装预检会检查什么​

CUDA 版在线安装开始时会先跑 GPU 相关预检,任何一项不过都会立即停止安装并给出提示:

字段类型必填默认值说明
PF-10 GPU 硬件预检项必填—服务器必须装有 NVIDIA 显卡(通过 PCI 设备探测)。没有 GPU 的机器请向支持人员索取 CPU 安装令牌。
PF-11 驱动已加载预检项必填—`nvidia-smi` 必须能正常执行。驱动未安装、或安装后模块未成功加载都会在这里被拦下。
PF-12 驱动版本下限预检项必填—驱动主版本 ≥ 525(对应 CUDA 12.1 支持矩阵;平台镜像基于 CUDA 12.1)。多卡机器取所有卡的最小版本。
PF-13 容器 GPU 接线预检项必填—nvidia-container-toolkit 已安装且已接入 Docker(`docker info` 能看到 nvidia runtime)。

本页下面几节就是把每道关卡展开成完整操作步骤。

安装前自检清单​

逐条执行以下命令,全部通过再开始安装:

  1. 确认 GPU 硬件存在

    lspci -n | grep -i '10de'

    有输出即检测到 NVIDIA 显卡(10de 是 NVIDIA 的 PCI 厂商 ID)。无输出说明机器没有 NVIDIA GPU。

  2. 确认驱动已加载

    nvidia-smi

    正常时会打印 GPU 型号、驱动版本和显存占用的表格。如果报 NVIDIA-SMI has failed、Driver not loaded 或 couldn't communicate with the NVIDIA driver,说明驱动未安装或未正确加载,见下节。

  3. 确认驱动版本达标

    nvidia-smi --query-gpu=driver_version --format=csv,noheader

    输出的主版本号需要 ≥ 525。低于 525 请先升级驱动再安装。

  4. 确认 Docker 已接入 GPU

    docker info | grep -i nvidia

    有 Runtimes: ... nvidia 之类的输出即通过。无输出或命令报错,说明 nvidia-container-toolkit 未安装或未接线,见「安装 nvidia-container-toolkit」一节。

安装 NVIDIA 驱动​

驱动升级需要重启,请安排停机窗口

安装或升级 NVIDIA 驱动后必须重启服务器才能加载新内核模块。生产环境请提前规划停机窗口;重启不影响已安装的 VortLab 数据,服务会随系统自动拉起。

Ubuntu / Debian(推荐路径)​

sudo apt update
sudo ubuntu-drivers install
sudo reboot

ubuntu-drivers install 会自动选择并安装与本机 GPU 和内核匹配的推荐驱动版本。重启后用 nvidia-smi 验证。这也是安装预检失败提示中给出的标准修复命令。

CentOS / RHEL / Rocky / Alma​

这些发行版没有等价的 ubuntu-drivers,请通过以下任一途径安装(选择与你的系统版本匹配的包):

  • ELRepo 仓库:启用 elrepo 后安装 kmod-nvidia 系列包。
  • NVIDIA 官方安装包:在 NVIDIA 驱动下载页 按显卡型号和系统查询,下载 .run 安装包按官方说明执行。

安装后重启,用 nvidia-smi 验证。

Secure Boot(安全启动)注意事项​

开了 Secure Boot 的机器,驱动装完不生效多半是这个原因

如果服务器启用了 Secure Boot,第三方内核模块(含 NVIDIA 驱动)必须经过 MOK(Machine Owner Key)登记才能加载,否则会出现「驱动显示安装成功、nvidia-smi 却始终失败」的现象。

  • Ubuntu 下 ubuntu-drivers install 会提示设置一个 MOK 密码。
  • 重启时进入蓝色的 MOK Management 菜单,选 Enroll MOK → Continue → 输入刚才设置的密码完成登记。
  • 错过了蓝色菜单也没关系:再执行一次驱动安装重新设置密码并重启,或用 mokutil 重新发起登记。
  • 虚拟化环境(云主机)若不确定,可在固件设置中直接关闭 Secure Boot。

验证方法:mokutil --sb-state(输出 SecureBoot enabled 即需要走 MOK 流程)。

安装 nvidia-container-toolkit​

驱动只让宿主机认识 GPU;容器里的训练进程要用 GPU,还需要 nvidia-container-toolkit 把 nvidia runtime 接入 Docker。平台安装脚本不会自动安装它,请提前完成。

Ubuntu / Debian​

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

完成后 docker info | grep -i nvidia 应能看到 nvidia runtime。

CentOS / RHEL / Rocky​

使用 NVIDIA 官方 yum 仓库安装同名包(仓库地址见 NVIDIA Container Toolkit 官方文档),随后同样执行 nvidia-ctk runtime configure --runtime=docker 并重启 Docker。

可选:容器 GPU 冒烟测试​

docker run --rm --gpus all nvidia/cuda:12.1.1-base-ubuntu22.04 nvidia-smi

容器内能打印出 GPU 表格,说明「驱动 → toolkit → Docker」全链路通畅(会拉取约 100MB 测试镜像)。跳过此步也可以,安装预检的 PF-13 会做等价检查。

常见问题​

nvidia-smi 报 Driver not loaded

驱动未安装、或安装后内核模块没有成功加载。两种最常见的情况:

  • 从没装过驱动:按上文「安装 NVIDIA 驱动」操作。
  • 之前是好的,系统更新后坏了:apt upgrade 升级内核后 DKMS 没有为新内核编译 NVIDIA 模块。重新执行一遍驱动安装(如 sudo ubuntu-drivers install)并重启即可。

先重启一次再验证——部分安装流程本来就需要重启才能加载模块。

驱动版本低于 525 怎么升级

升级路径与全新安装相同(Ubuntu 用 sudo ubuntu-drivers install,会自动装较新的推荐版本;其他发行版用对应包管理器)。升级后重启,再用 nvidia-smi --query-gpu=driver_version --format=csv,noheader 复核主版本 ≥ 525。

服务器没有显示器,怎么确认驱动工作正常

服务器场景通常没有桌面环境,nvidia-smi 就是验证手段——它能打印出 GPU 表格即代表驱动工作正常,与显示输出无关。

这些准备好之后,安装还会再检查一遍

在线安装的预检(PF-10 ~ PF-13)与本页清单一一对应,即使跳过本页直接安装,问题也会在拉取镜像之前被拦下并给出提示——只是提前照本页准备可以一次通过。