3、操作系统与驱动安装:Ubuntu Server 22.04 LTS安装、NVIDIA驱动安装与验证、CUDA Toolkit安装、cuDNN安装
各位好,我是老张。在GPU集群运维这个行当里摸爬滚打了快十年,踩过的坑比走过的路还多。今天咱们聊的这部分,是整个集群的「地基」——操作系统和驱动安装。
你想想看,再好的GPU,没有合适的操作系统和驱动,它就是一块昂贵的「砖头」。我见过太多新手,上来就急着装CUDA,结果系统崩了,驱动不兼容,折腾一整天。所以,咱们一步步来,把基础打牢。
核心逻辑:操作系统是骨架,驱动是肌肉,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 或更新的版本。别用太老的,也别追最新版。稳定第一。
安装步骤:
- 先禁用 Nouveau 开源驱动:
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf - 更新内核:
update-initramfs -u - 重启,然后安装驱动:
apt install nvidia-driver-535 - 再次重启,用
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 匹配。
安装步骤:
- 下载 cuDNN 的 deb 包(比如
cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz) - 解压并复制到 CUDA 目录:
cp -r cudnn-*/include/cudnn*.h /usr/local/cuda/include/ - 复制库文件:
cp -r cudnn-*/lib/libcudnn* /usr/local/cuda/lib64/ - 设置权限:
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,看看是不是都正常。如果一切顺利,恭喜你,集群的「地基」已经打好了。
想要更多资料,联系可可