vLLM 基准测试指南
在大语言模型的生产部署中,推理性能直接决定用户体验与系统成本。vLLM 作为业界领先的高效推理引擎,内置了一套全面且灵活的基准测试工具集,帮助开发者量化评估模型在不同场景下的表现。
1. 基准测试体系概览
vLLM 的基准测试主要分为三类:
- Benchmark CLI 工具:提供命令行接口
vllm bench,用于交互式或脚本化地执行在线 / 离线性能测试。 - 自动化 CI 性能基准:每次代码提交时自动运行,确保新功能不会引入性能退化。
- 横向对比基准(Nightly Benchmarks):定期将 vLLM 与 TGI、TensorRT-LLM、LMDeploy 等竞品横向对比,结果发布于 vLLM 性能仪表盘。
本文重点介绍开发者可直接使用的 Benchmark CLI。
1.1 Benchmark CLI 入口
所有基准测试通过 vllm bench 命令调用:
vllm bench latency [...] # 延迟测试
vllm bench serve [...] # 服务吞吐量测试
vllm bench throughput [...] # 离线吞吐量测试2. 核心测试场景
2.1 在线基准测试(Online Benchmark)
模拟真实用户请求流量,评估系统的延迟与服务能力。
- 延迟测试(Latency):衡量端到端时间,包括 TTFT 与 TPOT。
- 服务性能测试(Serve):在多并发、高负载环境下评估最大并发能力与稳定吞吐量。
2.2 离线吞吐量基准测试(Offline Throughput Benchmark)
评估系统在资源饱和状态下的最大处理能力,通常以每秒生成的 Token 数(Tok/s)衡量。适用于评估 CUDA / Triton 内核、张量并行与 KV Cache 管理等组件的纯粹计算效率。
2.3 特性与场景特定基准
| 基准测试 | 核心目标 | 对应场景 | 关键技术 |
|---|---|---|---|
| 结构化输出基准 | 评估 JSON Schema、Regex 约束下的生成效率与正确性 | RAG、函数调用、Agent | 约束解码、Logits Processor |
| 长文档问答基准 | 评估超长上下文下的性能与内存管理 | 长上下文模型、文档处理 | PagedAttention、长上下文 KV Cache |
| 前缀缓存基准 | 评估自动前缀缓存的加速效果 | 多用户或重复 Prompt | KV Cache 命中率、Prefill 优化 |
| 请求优先级基准 | 评估不同优先级请求的响应速度与 SLA 保障 | 多租户、SLA 保证 | 调度器逻辑、请求优先级 |
| 多模态基准 | 评估图像、音频等输入后的推理性能 | 多模态输入处理 | 输入预处理、数据并行 |
| Embedding 基准 | 评估向量嵌入任务的吞吐量与延迟 | 检索增强、向量数据库 | Pooling Model、批处理 |
| Reranker 基准 | 评估重排序模型性能 | 检索增强 | Encoder-only 模型推理 |
3. 支持的数据集
vLLM 支持多种真实世界与合成数据集,覆盖文本、图像、视频等模态:
| 数据集 | 在线 | 离线 | 来源 |
|---|---|---|---|
| ShareGPT | ✅ | ✅ | Hugging Face |
| ShareGPT4V | ✅ | ✅ | Hugging Face + COCO |
| ShareGPT4Video | ✅ | ✅ | Hugging Face |
| BurstGPT | ✅ | ✅ | GitHub Release |
| Random | ✅ | ✅ | 合成 |
| Prefix Repetition | ✅ | ✅ | 合成 |
| HuggingFace-VisionArena | ✅ | ✅ | Hugging Face |
| HuggingFace-MMVU | ✅ | ✅ | Hugging Face |
| HuggingFace-InstructCoder | ✅ | ✅ | Hugging Face |
| HuggingFace-AIMO | ✅ | ✅ | Hugging Face |
| MT-Bench / Blazedit | ✅ | ✅ | Hugging Face |
| Spec-Bench | ✅ | ✅ | GitHub |
| 自定义数据集 | ✅ | ✅ | 本地 .jsonl |
对于 Hugging Face 数据集,使用
--dataset-name hf --hf-name <name>;本地文件使用--dataset-name custom --dataset-path <path>。
4. 典型测试示例
4.1 在线服务基准测试
# 启动模型服务
vllm serve NousResearch/Hermes-3-Llama-3.1-8B
# 执行基准测试
vllm bench serve \
--backend vllm \
--model NousResearch/Hermes-3-Llama-3.1-8B \
--endpoint /v1/completions \
--dataset-name sharegpt \
--dataset-path ./ShareGPT_V3_unfiltered_cleaned_split.json \
--num-prompts 10输出指标包括:请求成功率、总耗时、输入 / 输出 Token 数、请求吞吐量(req/s)、Token 吞吐量(tok/s)、TTFT、TPOT / ITL。
4.2 离线吞吐量基准测试
vllm bench throughput \
--model Qwen/Qwen2-VL-7B-Instruct \
--backend vllm-chat \
--dataset-name hf \
--dataset-path lmarena-ai/VisionArena-Chat \
--num-prompts 1000多模态模型的输入 Token 数会包含图像 Token。
4.3 结构化输出性能测试
# 需先启动服务
vllm serve NousResearch/Hermes-3-Llama-3.1-8B
python3 benchmarks/benchmark_serving_structured_output.py \
--backend vllm \
--model NousResearch/Hermes-3-Llama-3.1-8B \
--dataset json \
--structured-output-ratio 1.0 \
--request-rate 10 \
--num-prompts 1000支持类型:json、grammar、regex、choice、xgrammar_bench。
4.4 长文档 QA 与前缀缓存
python3 benchmarks/benchmark_long_document_qa_throughput.py \
--model meta-llama/Llama-2-7b-chat-hf \
--enable-prefix-caching \
--num-documents 16 \
--document-length 2000 \
--output-len 50 \
--repeat-count 5支持三种重复模式:random(随机)、tile(整体循环)、interleave(逐个重复)。
4.5 请求优先级调度测试
python3 benchmarks/benchmark_prioritization.py \
--model meta-llama/Llama-2-7b-chat-hf \
--input-len 128 \
--output-len 64 \
--num-prompts 100 \
--scheduling-policy priority4.6 多模态推理基准
# 启动多模态服务
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-VL-7B-Instruct \
--limit-mm-per-prompt '{"image": 1}' \
--allowed-local-media-path /path/to/images
# 发送带图请求
vllm bench serve \
--backend openai-chat \
--model Qwen/Qwen2.5-VL-7B-Instruct \
--dataset-name sharegpt \
--dataset-path /path/to/sharegpt4v.json \
--num-prompts 100也支持合成多模态数据 --dataset-name random-mm 用于压力测试。
5. 高级功能
5.1 动态请求速率调节(Ramp-up)
模拟流量增长以寻找系统瓶颈:
vllm bench serve \
--ramp-up-strategy linear \
--ramp-up-start-rps 1 \
--ramp-up-end-rps 50 \
--duration 60支持 linear 与 exponential 两种策略。
5.2 推测解码测试
结合 N-gram 或小模型进行加速:
VLLM_USE_V1=1 vllm serve meta-llama/Meta-Llama-3-8B-Instruct \
--speculative-config '{"method": "ngram", "num_speculative_tokens": 5}'
vllm bench throughput \
--model meta-llama/Meta-Llama-3-8B-Instruct \
--speculative-config '{"method": "ngram", "num_speculative_tokens": 5}'5.3 结果保存与分析
--save-result \
--save-detailed \
--result-dir "./log/"结果包含汇总统计(Markdown / JSON)与每个请求的详细延迟数据(CSV),可用于 Grafana / Prometheus 集成。
总结
vLLM 的基准测试工具不仅是性能验证的利器,更是优化推理配置、对比模型版本、评估新功能影响的标准流程。无论是部署线上服务还是参与 vLLM 开发,掌握这套工具都能显著提升工作效率。