环境准备:GPU驱动安装、CUDA与cuDNN版本选择、Docker与NVIDIA Container Toolkit安装
说实话,很多人在vLLM部署上栽跟头,不是代码写错了,而是环境没配好。我见过太多人花了两天调模型,最后发现是驱动版本不对——那种感觉,真的很崩溃。
这一章,咱们就把这些基础工作做扎实。你想想看,地基打不稳,楼盖得再高也是白搭。
1. GPU驱动安装:别小看这一步
GPU驱动是硬件和软件之间的桥梁。没有它,你的显卡就是个摆设。
先确认你的显卡型号
运行这个命令:
lspci | grep -i nvidia
或者更直接:
nvidia-smi
如果提示命令不存在,说明驱动还没装。
驱动版本怎么选?
我个人习惯用 535 或 545 系列。为什么?这两个版本在CUDA 12.x下表现最稳。我曾经在某个项目里用了太新的驱动,结果和旧版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
# 应该看到版本号
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信息,说明一切正常。
sudo apt-get install -y nvidia-container-toolkit=1.14.0-1
4. 知识体系总览
下面这张图,帮你理清这一章的核心逻辑:
这张图很直观:从下往上,驱动→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必须配套安装
- 每装完一步,立刻验证,别攒到最后
嗯,这一章的内容就这些。环境准备虽然琐碎,但值得你花时间做扎实。我见过太多人在这上面翻车,希望你不会。