第1章:压测环境准备
做性能压测,环境准备是地基。地基没打好,后面测出来的数据全是废的。我见过太多团队,花大价钱买了GPU,结果因为软件版本不匹配,跑起来各种报错。今天咱们就把这块捋清楚。
1.1 GPU选型:算力与显存的博弈
选GPU,说白了就是看两个指标:算力和显存。算力决定你能跑多快,显存决定你能装多大模型。
核心原则:显存容量 ≥ 模型参数 × 2.5(以FP16为例)
举个例子,一个70B参数的模型,用FP16精度,光模型权重就要140GB。加上KV Cache、中间激活值,你至少需要350GB显存。这时候单卡H100(80GB)肯定不够,得考虑多卡并行。
我个人习惯,选型时先算一笔账:
- 小模型(7B以下):单卡A100 80GB或H100 80GB就够了
- 中等模型(13B-34B):建议2-4卡A100/H100
- 大模型(70B+):至少8卡起步,H100优先
我在项目中遇到过,有人用A100 40GB跑13B模型,结果显存爆了。嗯,这里要注意:40GB和80GB虽然都是A100,但显存差一倍,价格差不少,千万别买错。
1.2 CPU与内存:别让CPU拖后腿
很多人只盯着GPU,忽略了CPU和内存。其实,CPU负责调度、数据预处理、后处理,这些环节慢了,GPU再快也白搭。
| 组件 | 推荐配置 | 说明 |
|---|---|---|
| CPU核心数 | ≥32核 | vLLM的调度线程、数据加载都需要CPU |
| 内存容量 | ≥512GB | 加载模型、缓存数据、中间结果 |
| 内存带宽 | ≥200GB/s | 影响数据从内存到GPU的传输速度 |
你想想看,如果内存只有128GB,加载一个70B模型(FP16约140GB)都装不下,更别提跑了。我曾经踩过这个坑,当时图便宜配了256GB内存,结果模型加载就花了半小时,压测时还频繁swap,性能惨不忍睹。
1.3 网络:多卡通信的生命线
多卡并行时,网络就是生命线。GPU之间通信慢,整个集群都在等你。
避坑指南:我曾经用千兆以太网跑8卡并行,结果通信延迟比计算还高。后来换成InfiniBand,吞吐量直接翻了3倍。
网络选型建议:
- 单机多卡:NVLink/NVSwitch优先,带宽可达600GB/s
- 多机多卡:InfiniBand HDR(200Gbps)或NDR(400Gbps)
- 最低要求:RoCE v2(100Gbps),但延迟比IB高
1.4 软件栈:版本匹配是门玄学
软件版本不匹配,报错能让你怀疑人生。我整理了一套经过验证的版本组合:
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| CUDA | 12.1 / 12.4 | vLLM 0.4+ 对CUDA 12支持更好 |
| PyTorch | 2.1.2 / 2.2.0 | 建议用官方预编译包 |
| vLLM | 0.4.2 / 0.5.0 | 最新稳定版优先 |
| cuDNN | 8.9.7 | 与CUDA 12.1配套 |
| NCCL | 2.19.3 | 多卡通信必备 |
为什么推荐这些版本?说白了,vLLM的PagedAttention对CUDA版本有依赖,太老的版本不支持某些算子优化。我试过CUDA 11.8跑vLLM 0.5.0,编译都过不去。
1.5 Docker环境搭建:一次配置,到处运行
Docker是环境复制的利器。我习惯用Dockerfile把环境固化下来,这样换机器、换团队,都能复现同样的结果。
下面是我常用的Dockerfile模板:
# 基于官方PyTorch镜像
FROM pytorch/pytorch:2.1.2-cuda12.1-cudnn8-devel
# 安装系统依赖
RUN apt-get update && apt-get install -y \
git \
wget \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# 安装vLLM
RUN pip install vllm==0.4.2
# 安装压测工具
RUN pip install \
aiohttp \
transformers \
datasets \
requests
# 设置工作目录
WORKDIR /workspace
# 暴露端口
EXPOSE 8000
CMD ["/bin/bash"]
构建镜像:
docker build -t vllm-benchmark:0.4.2 .
启动容器:
docker run --gpus all \
--shm-size=32g \
-v /data/models:/models \
-p 8000:8000 \
-it vllm-benchmark:0.4.2
小技巧:--shm-size一定要设大一点,默认64MB根本不够用。我一般设32GB,多卡并行时甚至设64GB。
1.6 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你可以对照着检查自己的环境:
这张图展示了三层架构:硬件层是基础,软件层是桥梁,环境层是保障。每一层都环环相扣,缺一不可。
总结一下:环境准备不是简单的「装个软件就完事」。GPU选型要看模型规模,CPU内存要匹配,网络要满足多卡通信,软件版本要严格对齐。把这些都搞定了,压测才能跑出真实数据。