3、操作系统与驱动安装:Ubuntu Server 22.04 LTS安装、NVIDIA驱动安装与验证、CUDA Toolkit安装、cuDNN安装

各位好,我是老张。在GPU集群运维这个行当里摸爬滚打了快十年,踩过的坑比走过的路还多。今天咱们聊的这部分,是整个集群的「地基」——操作系统和驱动安装。

你想想看,再好的GPU,没有合适的操作系统和驱动,它就是一块昂贵的「砖头」。我见过太多新手,上来就急着装CUDA,结果系统崩了,驱动不兼容,折腾一整天。所以,咱们一步步来,把基础打牢。

核心逻辑:操作系统是骨架,驱动是肌肉,CUDA是神经,cuDNN是大脑。顺序错了,整个系统就「瘫痪」了。

GPU集群软件栈安装流程 Ubuntu Server 22.04 操作系统安装 NVIDIA 驱动 安装与验证 CUDA Toolkit 安装与验证 cuDNN 深度学习加速库 顺序:操作系统 → 驱动 → CUDA → cuDNN

3.1 Ubuntu Server 22.04 LTS 安装

我个人习惯,生产环境首选 Ubuntu Server LTS 版本。22.04 是目前最稳的,对 NVIDIA 生态支持也最好。别问我为什么不用 CentOS,时代变了,Ubuntu 在 AI 领域已经是事实标准。

安装过程其实不复杂,但有几个关键点我得提醒你:

  • 磁盘分区:建议用 LVM。我遇到过磁盘空间不够,LVM 直接在线扩容,省了大麻烦。
  • 网络配置:集群环境一定要配静态 IP。DHCP 在重启后 IP 变了,整个集群就「失联」了。
  • SSH 服务:安装时勾选 OpenSSH server。别问我为什么强调这个——我曾经在机房蹲了三个小时,就因为没有提前配 SSH。

我的小技巧:安装时选择「Minimal」模式,只装必要组件。后期缺什么再补,系统更干净,出问题的概率也小。

3.2 NVIDIA 驱动安装与验证

驱动安装是重头戏。我见过太多人在这步翻车。说白了,驱动装不好,后面全是白搭。

我个人推荐用 nvidia-driver-535 或更新的版本。别用太老的,也别追最新版。稳定第一。

安装步骤:

  1. 先禁用 Nouveau 开源驱动:echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
  2. 更新内核:update-initramfs -u
  3. 重启,然后安装驱动:apt install nvidia-driver-535
  4. 再次重启,用 nvidia-smi 验证
# 验证驱动是否安装成功
nvidia-smi

# 输出示例(部分)
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.86.05    Driver Version: 535.86.05    CUDA Version: 12.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  NVIDIA A100 80GB    Off  | 00000000:00:04.0 Off |                    0 |
|   0   42C    P0    68W / 300W |      0MiB / 81920MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

注意:如果 nvidia-smi 报错「Failed to initialize NVML」,大概率是驱动和内核版本不匹配。我曾经在升级内核后忘了重装驱动,排查了整整一天。记住:内核升级后,驱动必须重装。

3.3 CUDA Toolkit 安装

驱动装好了,接下来是 CUDA Toolkit。这里有个常见的误区:很多人以为装了驱动就等于装了 CUDA。其实不是。驱动是让系统认识 GPU,CUDA 是让程序能用 GPU 算。

安装方法有两种:

方法 命令 适用场景
apt 安装(推荐) apt install nvidia-cuda-toolkit 快速、稳定,适合大多数场景
runfile 安装 从 NVIDIA 官网下载 .run 文件 需要自定义路径或特殊配置时

我个人习惯用 apt 安装,省心。但要注意版本匹配。比如驱动是 535,CUDA 最好用 12.x 系列。

# 验证 CUDA 是否安装成功
nvcc --version

# 输出示例
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Wed_Nov_22_10:17:15_PST_2023
Cuda compilation tools, release 12.2, V12.2.140

避坑指南:我曾经在安装 CUDA 时忘了设置环境变量。结果编译程序时一直报错找不到 nvcc。记得把 /usr/local/cuda/bin 加到 PATH 里。

3.4 cuDNN 安装

cuDNN 是 NVIDIA 的深度学习加速库。说白了,它就是给神经网络「开挂」的。没有它,训练速度能慢好几倍。

安装 cuDNN 需要先注册 NVIDIA 开发者账号,然后下载对应的 deb 包。注意版本必须和 CUDA 匹配。

安装步骤:

  1. 下载 cuDNN 的 deb 包(比如 cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz)
  2. 解压并复制到 CUDA 目录:cp -r cudnn-*/include/cudnn*.h /usr/local/cuda/include/
  3. 复制库文件:cp -r cudnn-*/lib/libcudnn* /usr/local/cuda/lib64/
  4. 设置权限:chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
# 验证 cuDNN 是否安装成功
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

# 输出示例
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 9
#define CUDNN_PATCHLEVEL 7

重要提醒:cuDNN 的版本号一定要和 CUDA 版本对应。比如 CUDA 12.x 就用 cuDNN 8.9.x。我曾经在项目中用了不匹配的版本,训练时直接报「undefined symbol」错误,排查了三天才发现是版本问题。

好了,到这里,操作系统、驱动、CUDA、cuDNN 就全部装好了。你可以在终端里跑一个简单的 nvidia-smi 和 nvcc --version,看看是不是都正常。如果一切顺利,恭喜你,集群的「地基」已经打好了。

想要更多资料,联系可可