环境准备:硬件要求与软件栈

好,咱们直接进入正题。环境准备这事儿,说简单也简单,说复杂也复杂。我见过太多人,模型还没跑起来,先被环境折腾得够呛。说白了,vLLM 的分布式部署,硬件是地基,软件是砖瓦。地基不稳,楼盖得再高也得塌。

硬件要求:GPU 型号与显存

先聊 GPU。vLLM 分布式部署,我个人习惯用 NVIDIA 的卡。为什么?生态成熟,CUDA 支持好。你想想看,要是用 AMD 的卡,光是 ROCm 的兼容性问题就够你喝一壶的。

GPU 型号推荐:

  • A100 (80GB):我最推荐的。显存大,带宽高。我在项目中遇到过,用 A100 跑 70B 模型,4 卡就能搞定,吞吐量很稳。
  • H100:更强,但贵。如果你预算充足,直接上。FP8 支持让推理速度再上一个台阶。
  • V100 (32GB):老将了。小模型或者实验环境够用。但 70B 模型就别想了,显存不够。
  • A10 / A30:性价比之选。24GB 显存,适合 7B-13B 模型。

显存计算小公式:

模型参数量(B)× 2(FP16 权重) + 激活内存(约 20%-30% 额外) = 单卡最低显存需求

举个例子:70B 模型,FP16 权重就是 70 × 2 = 140GB。4 张 A100(80GB)刚好够,还能留点余量给 KV Cache。

避坑指南:我曾经遇到过有人用 8 张 2080Ti(11GB)跑 13B 模型,结果显存爆了。为什么?因为 2080Ti 不支持 NVLink,跨卡通信全靠 PCIe,带宽不够,模型切分后通信开销巨大。所以,显存大小和卡间通信带宽,两者缺一不可

硬件要求:网络与互联

多 GPU 部署,网络是隐形杀手。你想想看,模型参数要在卡之间来回传,网络慢了,GPU 就得干等着。

关键指标:

  • NVLink / NVSwitch:NVIDIA 自家技术,带宽极高(A100 是 600GB/s)。如果你用 8 卡 A100,NVLink 是标配。
  • InfiniBand:跨节点通信必备。200Gbps 起步,400Gbps 更好。我在项目中用过 100Gbps 的 IB,跑 175B 模型时,通信延迟明显。
  • RoCE (RDMA over Converged Ethernet):以太网方案,成本低一些。但配置复杂,丢包率要控制好。

我的建议:单机多卡,优先选 NVLink 互联的卡。跨机部署,InfiniBand 是首选。如果预算有限,RoCE 也能用,但要做好网络调优。

软件栈:CUDA、PyTorch、Python 版本

软件版本这事儿,我吃过不少亏。版本不匹配,编译报错能让你怀疑人生。嗯,这里要注意,vLLM 对版本有严格要求。

推荐版本组合:

组件 推荐版本 说明
CUDA 11.8 或 12.1 vLLM 0.4.0+ 对 CUDA 12 支持更好。我建议用 12.1,新特性多。
PyTorch 2.1.0 或 2.2.0 PyTorch 2.x 的 torch.compile 能加速推理。但注意,vLLM 目前主要用 eager mode。
Python 3.10 或 3.11 3.8 太老,3.12 有些库还没适配。3.10 最稳。
NVIDIA 驱动 ≥ 525.60.13 驱动太老,CUDA 12 装不上。我习惯用 535 系列。

安装命令示例(CUDA 12.1 + PyTorch 2.1.0):

# 安装 CUDA 12.1(略,从 NVIDIA 官网下载 runfile 或 deb 包)

# 创建 conda 环境
conda create -n vllm_env python=3.10
conda activate vllm_env

# 安装 PyTorch
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121

# 安装 vLLM(最新版)
pip install vllm

# 验证安装
python -c "import vllm; print(vllm.__version__)"

避坑指南:我曾经在 CUDA 11.7 上装 vLLM 0.3.0,结果编译 flash_attention 时报错。查了半天,发现是 CUDA 版本太老,不支持某些算子。后来升级到 CUDA 11.8 才解决。所以,别用太老的 CUDA 版本

其他依赖与工具

除了核心组件,还有一些工具能让你省心不少。

  • NCCL:NVIDIA 的集合通信库。vLLM 分布式推理全靠它。安装 CUDA 时一般会自带,但建议单独升级到最新版。
  • Docker:强烈推荐。用 NVIDIA 官方镜像(如 nvcr.io/nvidia/pytorch:23.12-py3),环境一步到位。我在项目中都是 Docker 一把梭,省去环境冲突的烦恼。
  • nvitop / gpustat:监控 GPU 使用率的工具。我习惯用 nvitop,界面比 nvidia-smi 友好。

我的习惯:每次部署前,先跑一个简单的测试脚本,验证多卡通信是否正常。比如用 torch.distributed 的 all_reduce 操作,看看带宽是否达标。这一步能提前发现网络或驱动问题。

知识体系总览

下面这张图,把本章的核心逻辑串起来了。你一看就明白。

vLLM 分布式部署环境准备 硬件层 GPU 型号 显存大小 网络互联 A100 / H100 / V100 80GB / 32GB / 24GB NVLink / InfiniBand 软件层 CUDA PyTorch Python 11.8 / 12.1 2.1.0 / 2.2.0 3.10 / 3.11 工具与辅助 NCCL Docker nvitop

这张图很直观:硬件是底层基础,软件栈搭建在硬件之上,工具层帮你管理和监控。三层缺一不可。你想想看,要是硬件选错了,软件装得再好也白搭;要是软件版本不匹配,硬件再强也跑不起来。

好,环境准备就聊到这儿。记住一句话:别怕花时间在环境上,后面你会感谢现在的自己


专注资料整理