环境准备:GPU驱动安装、CUDA与cuDNN版本选择、Docker与NVIDIA Container Toolkit安装

说实话,很多人在vLLM部署上栽跟头,不是代码写错了,而是环境没配好。我见过太多人花了两天调模型,最后发现是驱动版本不对——那种感觉,真的很崩溃。

这一章,咱们就把这些基础工作做扎实。你想想看,地基打不稳,楼盖得再高也是白搭。

1. GPU驱动安装:别小看这一步

GPU驱动是硬件和软件之间的桥梁。没有它,你的显卡就是个摆设。

先确认你的显卡型号

运行这个命令:

lspci | grep -i nvidia

或者更直接:

nvidia-smi

如果提示命令不存在,说明驱动还没装。

驱动版本怎么选?

我个人习惯用 535 或 545 系列。为什么?这两个版本在CUDA 12.x下表现最稳。我曾经在某个项目里用了太新的驱动,结果和旧版CUDA不兼容,折腾了一整天。

注意:不要装最新版驱动!除非你确定你的CUDA版本支持它。驱动不是越新越好,稳定才是王道。

安装步骤(Ubuntu 22.04为例)

# 卸载旧驱动
sudo apt-get purge nvidia*

# 添加官方驱动PPA
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

# 安装推荐版本
sudo apt-get install nvidia-driver-535

# 重启
sudo reboot

# 验证
nvidia-smi

看到GPU信息列表,就说明成功了。

2. CUDA与cuDNN版本选择:匹配才是王道

CUDA是NVIDIA的并行计算平台,cuDNN是深度神经网络的加速库。vLLM对CUDA版本有明确要求。

vLLM官方推荐

vLLM版本 推荐CUDA版本 推荐cuDNN版本
0.4.x 12.1 8.9
0.5.x 12.1 或 12.4 8.9 或 9.0
0.6.x 12.4 9.0

我建议你直接上 CUDA 12.4 + cuDNN 9.0。这是目前最稳妥的组合,兼容性最好。

安装CUDA

wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run
sudo sh cuda_12.4.0_550.54.14_linux.run

安装时注意:不要勾选Driver,只装CUDA Toolkit。否则它会覆盖你刚装好的驱动。

配置环境变量

echo 'export PATH=/usr/local/cuda-12.4/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

安装cuDNN

去NVIDIA官网下载cuDNN(需要注册账号)。然后:

tar -xzvf cudnn-linux-x86_64-9.0.0.312_cuda12-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda-12.4/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda-12.4/lib64
sudo chmod a+r /usr/local/cuda-12.4/include/cudnn*.h /usr/local/cuda-12.4/lib64/libcudnn*

验证安装

nvcc --version
# 应该看到 Cuda compilation tools, release 12.4

cat /usr/local/cuda-12.4/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
# 应该看到版本号
小技巧:如果你有多版本CUDA需求,可以用update-alternatives管理。我一般会在/usr/local下保留多个cuda-xx目录,需要时切换软链接。

3. Docker与NVIDIA Container Toolkit安装

Docker是容器化的基石。在K8s里跑vLLM,Docker是绕不开的。

安装Docker

# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 安装依赖
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# 添加Docker官方GPG密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 添加仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 验证
sudo docker run hello-world

安装NVIDIA Container Toolkit

这个工具让Docker容器能访问GPU。说白了,没有它,你在容器里跑nvidia-smi会报错。

# 添加NVIDIA容器工具包仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# 安装
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

# 配置Docker运行时
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

# 验证
sudo docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi

看到GPU信息,说明一切正常。

避坑指南:我曾经在某个生产环境里,Docker和NVIDIA Container Toolkit版本不兼容,导致容器启动时GPU无法识别。后来发现是nvidia-container-toolkit版本太旧。建议安装最新版:sudo apt-get install -y nvidia-container-toolkit=1.14.0-1

4. 知识体系总览

下面这张图,帮你理清这一章的核心逻辑:

vLLM推理环境准备知识体系 vLLM推理服务 Docker + NVIDIA Container Toolkit CUDA 12.4 + cuDNN 9.0 NVIDIA GPU Driver (535/545) 容器化 计算框架 硬件驱动 GPU资源隔离 模型加速 硬件通信

这张图很直观:从下往上,驱动→CUDA→容器→vLLM。每一层都依赖下一层。你想想看,如果驱动没装好,上面三层全白搭。

5. 验证环境是否就绪

最后,跑一个完整的验证脚本:

#!/bin/bash
echo "=== 检查GPU驱动 ==="
nvidia-smi || { echo "驱动未安装"; exit 1; }

echo "=== 检查CUDA ==="
nvcc --version || { echo "CUDA未安装"; exit 1; }

echo "=== 检查cuDNN ==="
cat /usr/local/cuda-12.4/include/cudnn_version.h | grep CUDNN_MAJOR || { echo "cuDNN未安装"; exit 1; }

echo "=== 检查Docker ==="
docker --version || { echo "Docker未安装"; exit 1; }

echo "=== 检查NVIDIA Container Toolkit ==="
docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi || { echo "NVIDIA Container Toolkit未正确配置"; exit 1; }

echo "=== 全部就绪! ==="

如果所有检查都通过,恭喜你,环境准备完毕。接下来就可以安心部署vLLM了。

核心要点回顾:
  • 驱动选535/545系列,别追新
  • CUDA 12.4 + cuDNN 9.0 是当前最稳组合
  • Docker和NVIDIA Container Toolkit必须配套安装
  • 每装完一步,立刻验证,别攒到最后

嗯,这一章的内容就这些。环境准备虽然琐碎,但值得你花时间做扎实。我见过太多人在这上面翻车,希望你不会。

专注资料整理