课程导入:学习目标、课程结构、vLLM在生产环境中的重要性
为什么需要关注生产环境中的vLLM吞吐性能
大语言模型(LLM)从实验原型走向生产服务,吞吐量(Throughput)与延迟(Latency)成为决定服务成本、用户体验和系统稳定性的核心指标。vLLM 凭借 PagedAttention 显存管理、Continuous Batching 连续批处理等机制,已成为业界部署 LLM 的主流推理引擎之一。然而,“能跑起来”与“跑得高效”之间存在巨大鸿沟——同样的模型、同样的 GPU,不同的配置与压测方法可能带来数倍的吞吐差异。
在生产环境中,吞吐压测并非简单地发送请求并记录 QPS(每秒查询数)。它涉及请求并发模型、输入/输出 Token 长度分布、批处理策略、显存利用率、KV Cache 命中率、调度延迟等多个相互耦合的变量。若缺乏系统化的压测方法与优化思路,很容易出现“压测数据好看,上线后性能崩塌”的典型问题。
学习目标:完成本章节后你将能够
- 理解 vLLM 吞吐压测的核心指标(吞吐量、TTFT、TPOT、端到端延迟)及其在生产决策中的意义;
- 掌握生产级压测的完整流程:场景定义 → 脚本编写 → 数据采集 → 瓶颈分析 → 参数调优;
- 识别 vLLM 配置参数(
--max-num-seqs、--gpu-memory-utilization、--enable-prefix-caching等)对吞吐的实际影响; - 能够区分吞吐瓶颈来自 GPU 计算、显存容量、CPU 调度还是客户端并发不足;
- 建立一套可复用的压测基线模板,用于后续章节的对比实验。
课程结构概览
本课程共 30 章,按“基础 → 方法 → 实战 → 进阶”四个阶段递进。前 5 章夯实压测理论与环境准备;第 6~15 章深入吞吐压测的各类场景(静态/动态请求、长/短序列、多模型复用等);第 16~25 章聚焦优化手段(调度参数、量化、前缀缓存、多卡并行);最后 5 章为综合案例与故障复盘。每章均包含可执行的压测命令、参数解析与结果判读方法。
| 阶段 | 章节范围 | 核心主题 | 关键产出 |
|---|---|---|---|
| 基础 | 1~5 | 压测指标、vLLM 架构、环境搭建 | 压测基线模板 |
| 方法 | 6~15 | 不同负载模型下的压测设计 | 场景化压测脚本库 |
| 优化 | 16~25 | 吞吐调优参数与架构调整 | 优化决策树 |
| 实战 | 26~30 | 综合案例、故障排查、容量规划 | 生产验收清单 |
vLLM 吞吐压测的核心概念模型
为了后续章节讨论有统一语境,这里先建立吞吐压测的三层观察模型:客户端层(并发连接数、请求速率)、服务层(vLLM 调度器、批处理窗口、队列长度)、资源层(GPU SM 占用、显存带宽、KV Cache 容量)。压测的本质是改变客户端层输入,观察服务层行为,最终度量资源层的效率边界。
上图展示了贯穿全课程的分析框架。后续章节中,每次压测实验都会明确改变哪个层的哪个变量,并观察其对另外两层的影响。例如:增加客户端并发数(客户端层)→ 观察调度器队列是否堆积(服务层)→ 检查 GPU 利用率是否饱和(资源层)。这种分层思维能避免盲目调参。
生产环境中的典型吞吐挑战
在真实业务中,vLLM 吞吐压测常面临以下四类挑战,本课程后续章节将逐一展开应对方法:
- 请求特征高度动态:线上请求的输入长度、输出长度、主题分布随时间变化,静态压测脚本难以模拟真实负载;
- 多租户/多模型干扰:生产环境往往多个模型共享 GPU 资源,吞吐压测需考虑隔离性与公平性;
- 长尾延迟与超时:平均吞吐达标但 P99 延迟超标,导致上游服务超时重试,进一步加剧负载;
- 显存碎片与 OOM:长时间运行后 KV Cache 碎片化,有效吞吐下降,甚至触发 OOM 重启。
ab 或 wrk 直接对 vLLM 的 /generate 接口发压,仅统计 HTTP 请求数/秒。这种做法忽略了 LLM 推理的生成式特性——每个请求的输出 Token 数不同,导致“请求 QPS”无法反映真实的 token 吞吐。本课程统一采用 tokens/s 作为吞吐主指标,并辅以 TTFT/TPOT 作为延迟约束。
压测前的环境准备清单
在进入具体压测方法之前,请确认以下环境要素已就绪。后续章节的示例均基于此标准环境:
- GPU:NVIDIA A100/A800 或 H800(显存 40GB/80GB),驱动版本 ≥ 525;
- 推理引擎:vLLM ≥ 0.4.2(建议使用最新稳定版);
- 模型:以
Qwen2.5-7B-Instruct或Llama-3.1-8B-Instruct为主要测试对象; - 压测工具:Python 3.10+,安装
openai、aiohttp、numpy、pandas; - 监控工具:
nvidia-smi dmon或 DCGM exporter,用于采集 GPU 实时利用率。
# 验证 vLLM 服务是否正常启动(示例)
curl -X POST http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen2.5-7B-Instruct",
"prompt": "什么是吞吐压测?",
"max_tokens": 64,
"temperature": 0
}'