Skip to content

vLLM 基准测试指南

在大语言模型的生产部署中,推理性能直接决定用户体验与系统成本。vLLM 作为业界领先的高效推理引擎,内置了一套全面且灵活的基准测试工具集,帮助开发者量化评估模型在不同场景下的表现。

1. 基准测试体系概览

vLLM 的基准测试主要分为三类:

  1. Benchmark CLI 工具:提供命令行接口 vllm bench,用于交互式或脚本化地执行在线 / 离线性能测试。
  2. 自动化 CI 性能基准:每次代码提交时自动运行,确保新功能不会引入性能退化。
  3. 横向对比基准(Nightly Benchmarks):定期将 vLLM 与 TGI、TensorRT-LLM、LMDeploy 等竞品横向对比,结果发布于 vLLM 性能仪表盘

本文重点介绍开发者可直接使用的 Benchmark CLI

1.1 Benchmark CLI 入口

所有基准测试通过 vllm bench 命令调用:

bash
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
前缀缓存基准评估自动前缀缓存的加速效果多用户或重复 PromptKV Cache 命中率、Prefill 优化
请求优先级基准评估不同优先级请求的响应速度与 SLA 保障多租户、SLA 保证调度器逻辑、请求优先级
多模态基准评估图像、音频等输入后的推理性能多模态输入处理输入预处理、数据并行
Embedding 基准评估向量嵌入任务的吞吐量与延迟检索增强、向量数据库Pooling Model、批处理
Reranker 基准评估重排序模型性能检索增强Encoder-only 模型推理

3. 支持的数据集

vLLM 支持多种真实世界与合成数据集,覆盖文本、图像、视频等模态:

数据集在线离线来源
ShareGPTHugging Face
ShareGPT4VHugging Face + COCO
ShareGPT4VideoHugging Face
BurstGPTGitHub Release
Random合成
Prefix Repetition合成
HuggingFace-VisionArenaHugging Face
HuggingFace-MMVUHugging Face
HuggingFace-InstructCoderHugging Face
HuggingFace-AIMOHugging Face
MT-Bench / BlazeditHugging Face
Spec-BenchGitHub
自定义数据集本地 .jsonl

对于 Hugging Face 数据集,使用 --dataset-name hf --hf-name <name>;本地文件使用 --dataset-name custom --dataset-path <path>

4. 典型测试示例

4.1 在线服务基准测试

bash
# 启动模型服务
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 离线吞吐量基准测试

bash
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 结构化输出性能测试

bash
# 需先启动服务
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

支持类型:jsongrammarregexchoicexgrammar_bench

4.4 长文档 QA 与前缀缓存

bash
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 请求优先级调度测试

bash
python3 benchmarks/benchmark_prioritization.py \
  --model meta-llama/Llama-2-7b-chat-hf \
  --input-len 128 \
  --output-len 64 \
  --num-prompts 100 \
  --scheduling-policy priority

4.6 多模态推理基准

bash
# 启动多模态服务
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)

模拟流量增长以寻找系统瓶颈:

bash
vllm bench serve \
  --ramp-up-strategy linear \
  --ramp-up-start-rps 1 \
  --ramp-up-end-rps 50 \
  --duration 60

支持 linearexponential 两种策略。

5.2 推测解码测试

结合 N-gram 或小模型进行加速:

bash
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 结果保存与分析

bash
--save-result \
--save-detailed \
--result-dir "./log/"

结果包含汇总统计(Markdown / JSON)与每个请求的详细延迟数据(CSV),可用于 Grafana / Prometheus 集成。

总结

vLLM 的基准测试工具不仅是性能验证的利器,更是优化推理配置、对比模型版本、评估新功能影响的标准流程。无论是部署线上服务还是参与 vLLM 开发,掌握这套工具都能显著提升工作效率。

参考

Maintained by Robin