环境准备:硬件要求与软件栈
好,咱们直接进入正题。环境准备这事儿,说简单也简单,说复杂也复杂。我见过太多人,模型还没跑起来,先被环境折腾得够呛。说白了,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 操作,看看带宽是否达标。这一步能提前发现网络或驱动问题。
知识体系总览
下面这张图,把本章的核心逻辑串起来了。你一看就明白。
这张图很直观:硬件是底层基础,软件栈搭建在硬件之上,工具层帮你管理和监控。三层缺一不可。你想想看,要是硬件选错了,软件装得再好也白搭;要是软件版本不匹配,硬件再强也跑不起来。
好,环境准备就聊到这儿。记住一句话:别怕花时间在环境上,后面你会感谢现在的自己。