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,问就是生态好、驱动全、社区活跃。

装完系统后,有几件事必须做:

  1. 关闭 Nouveau 驱动。这是开源的 NVIDIA 驱动,和官方驱动冲突。不关掉,装完 CUDA 你会哭。
  2. 设置内核参数。主要是调整 HugePages 和 vm.swappiness。
  3. 安装基础工具。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.112.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 环境准备的核心逻辑。你照着这个思路走,基本不会跑偏。

vLLM 环境准备核心逻辑 硬件选型 操作系统 CUDA & 驱动 GPU 选型 显存容量 > 模型权重 + KV Cache 带宽决定推理速度 NVLink 影响多卡通信 系统配置 Ubuntu 22.04 LTS 禁用 Nouveau 驱动 HugePages + swappiness CUDA 安装 CUDA 12.1 / 12.4 驱动版本 ≥ 535 环境变量配置 验证:nvidia-smi + nvcc + vLLM 测试推理 ✅ 生产环境就绪

说白了,环境准备就三步:选对硬件、配好系统、装对驱动。每一步都有坑,但只要你按我上面说的来,基本能一次过。

最后提醒一句:别在生产环境上搞实验。我建议先在测试机上跑一遍完整的流程,确认无误后再上生产。我曾经直接在线上装驱动,结果内核崩溃,整个集群挂了半小时。嗯,那滋味不好受。

专注资料整理