3、环境准备:硬件选型(GPU/CPU/内存)、操作系统配置、CUDA与驱动安装
说实话,vLLM 部署翻车,十有八九是环境没整对。
我见过太多人,拿着 A100 的卡,跑着老旧的驱动,结果推理速度还不如一张 3090。你说冤不冤?
这一章,咱们就把地基打牢。硬件怎么选、系统怎么配、驱动怎么装,我一步步拆开来讲。
3.1 硬件选型:别让钱白花了
先聊 GPU。vLLM 的核心是 PagedAttention,它极度依赖显存带宽和容量。
显存容量决定了你能跑多大的模型。比如 70B 的模型,用 FP16 精度,光权重就要 140GB 显存。你想想看,单卡 80GB 的 A100 都扛不住,得至少两张。
显存带宽决定了推理速度。H100 的带宽是 3.35TB/s,A100 是 2TB/s,而 4090 只有 1TB/s 左右。差距就在这里。
我的个人建议:
- 生产环境首选:H100 (80GB) 或 A100 (80GB)。别省这个钱,省下的钱都会变成你加班的工时。
- 性价比之选:A100 (40GB) 或 4090。但 4090 没有 NVLink,多卡通信是瓶颈,我踩过这个坑。
- 千万别碰:消费级显卡跑 70B 模型,除非你只做量化推理。
CPU 和内存呢?很多人忽略了这个。
vLLM 在做调度和 KV Cache 管理时,CPU 要处理不少逻辑。我个人习惯是配 32 核以上的 CPU,内存至少 256GB。为什么?因为当你的 GPU 显存不够时,vLLM 会把部分 KV Cache 卸载到 CPU 内存,这叫 offloading。内存小了,直接 OOM。
| 组件 | 推荐配置 | 最低配置 |
|---|---|---|
| GPU | H100 80GB / A100 80GB | A100 40GB / 4090 24GB |
| CPU | AMD EPYC / Intel Xeon 32核+ | 16核 |
| 内存 | 512GB DDR5 | 256GB DDR4 |
| 存储 | NVMe SSD 2TB+ | SATA SSD 1TB |
避坑指南:我曾经在一台只有 128GB 内存的机器上部署 70B 模型,结果 vLLM 启动后直接报 "CUDA out of memory"。后来发现是 CPU 内存不够,导致 KV Cache 无法 offload。加内存后,问题解决。
3.2 操作系统配置:稳定压倒一切
操作系统这块,我推荐 Ubuntu 22.04 LTS。别问为什么不用 CentOS,问就是生态好、驱动全、社区活跃。
装完系统后,有几件事必须做:
- 关闭 Nouveau 驱动。这是开源的 NVIDIA 驱动,和官方驱动冲突。不关掉,装完 CUDA 你会哭。
- 设置内核参数。主要是调整 HugePages 和 vm.swappiness。
- 安装基础工具。gcc、make、kernel-headers 这些,编译驱动时要用。
具体操作如下:
# 1. 禁用 Nouveau
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nvidia-nouveau.conf
echo "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/blacklist-nvidia-nouveau.conf
sudo update-initramfs -u
# 重启后验证:lsmod | grep nouveau 应该无输出
# 2. 设置 HugePages(vLLM 重度依赖)
echo "vm.nr_hugepages=10240" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 3. 降低 swappiness,减少内存交换
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 4. 安装依赖
sudo apt update
sudo apt install -y build-essential linux-headers-$(uname -r) pciutils
注意:HugePages 的大小要根据你的模型来算。一般建议设置为显存大小的 1.5 倍。比如 80GB 显存,就设 120GB 的 HugePages。设太大浪费内存,设太小 vLLM 会报错。
3.3 CUDA 与驱动安装:版本匹配是门玄学
嗯,这里要注意。CUDA 和驱动的版本匹配,是新手最容易翻车的地方。
vLLM 官方推荐 CUDA 12.1 或 12.4,驱动版本不低于 535。但我个人建议用 545 或 550 系列驱动,稳定性更好。
为什么会这样?因为 vLLM 底层用了很多 CUDA 的新特性,比如 FlashAttention、PagedAttention 的 kernel 优化。老驱动不支持这些特性,性能会大打折扣。
安装步骤:
# 1. 卸载旧驱动(如果有)
sudo apt purge nvidia-*
sudo apt autoremove
# 2. 添加 NVIDIA 官方源
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
# 3. 安装 CUDA 12.4(包含驱动)
sudo apt install -y cuda-12-4
# 4. 设置环境变量
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
# 5. 验证安装
nvidia-smi
nvcc --version
我的经验:装完驱动后,一定要跑一次 nvidia-smi 确认驱动版本。我曾经遇到过驱动装上了,但 nvidia-smi 报 "Failed to initialize NVML",原因是内核模块没加载。重启一下就好了。
3.4 知识体系总览
下面这张图,是我自己梳理的 vLLM 环境准备的核心逻辑。你照着这个思路走,基本不会跑偏。
说白了,环境准备就三步:选对硬件、配好系统、装对驱动。每一步都有坑,但只要你按我上面说的来,基本能一次过。
最后提醒一句:别在生产环境上搞实验。我建议先在测试机上跑一遍完整的流程,确认无误后再上生产。我曾经直接在线上装驱动,结果内核崩溃,整个集群挂了半小时。嗯,那滋味不好受。