AI 推理平台性能基准测试搭建步骤
依据 MLPerf、vLLM 与 FastAPI 官方文档搭建推理服务基准测试,采集吞吐、TTFT 和 TPOT,并说明资源占用需另按项目监控文档核验。
搭建大模型部署的性能基准测试,先固定被测系统、测试场景、数据集、负载参数和统计口径,再运行客户端压测并复核报告。完整结果必须能追溯到同一份配置和指标定义;只保留一个平均延迟或吞吐数字,不能证明结果可复现。
大模型部署基准测试前要准备什么
先建立被测系统清单,至少记录模型与版本、量化设置、推理服务和运行时版本、启动参数、GPU 型号及显存、驱动、容器镜像、数据集版本与 endpoint。模型、硬件、软件或启动参数发生变化时,应建立新的测试配置,不要与旧结果直接合并。
如果 API 层使用 FastAPI,先确认返回路径确实逐块输出。FastAPI 的 StreamingResponse 指南说明,path operation 声明 response_class=StreamingResponse 后可以用 yield 逐块发送数据,但应用仍负责生成和编码字节。若接口实际一次性返回完整 JSON,就不能把结果解释为流式 TTFT 或 ITL。
选择场景并统一指标
如果目标是 MLPerf Inference,应按 MLPerf Inference Rules选择场景。提交必须使用 LoadGen,由它按场景生成查询、跟踪延迟、验证准确率并计算最终指标。
| 场景 | 请求方式 | 约束与结果 |
|---|---|---|
| Server | 按 Poisson 分布发送查询 | 使用 benchmark-specific latency constraint,指标为可支持的最大 Poisson throughput |
| Offline | 启动时以单个 query 发送全部样本 | 没有 latency constraint,指标为 measured throughput |
| Single stream | 上一个请求完成后发送下一个 | 指标为 90th-percentile early-stopping latency estimate |
对 LLM,MLPerf 还收集首 token 延迟 TTFT,以及生成 token 之间的平均间隔 TPOT;Server 的延迟约束按类别写成 TTFT/TPOT limit pair。记录结果时必须同时保留场景、约束和指标定义,不能只抄一个数值。
下载数据并执行 vLLM 在线基准
以下地址、命令、参数与报告定义均以 vLLM Benchmark CLI 文档为准。该文档把 vllm bench 定位为功能评估和回归测试工具,ShareGPT 可用于在线和离线基准。
先下载文档给出的 ShareGPT 文件:
wget https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json
被测服务能够响应后,执行在线基准命令:
vllm bench serve \
--backend vllm \
--model NousResearch/Hermes-3-Llama-3.1-8B \
--endpoint /v1/completions \
--dataset-name sharegpt
远程 endpoint 的连接参数没有包含在这条命令中,应按当前版本 CLI 文档补齐,不要猜测参数名。若改用自有数据,文档要求文件采用 .jsonl 格式,每条记录包含 prompt 字段,并通过 --dataset-name custom 选择;文件路径参数同样应以当前 CLI 文档为准。
| 参数 | 文档定义 |
|---|---|
--request-rate |
设置每秒目标请求数;inf 表示最大吞吐测试,默认值也是 inf,会立即发送全部请求 |
--max-concurrency |
限制尚未完成的请求数;不提供时并发数不受限制 |
--burstiness |
使用 Gamma 分布控制流量波动,范围为 > 0;1.0 对应 Poisson 流量,较低值更集中突发,较高值更均匀 |
--ramp-up-strategy |
请求速率可按 linear 或 exponential 策略逐步提升 |
报告应包含 request throughput、output-token throughput 和 total-token throughput。TTFT 在客户端测量,从发送请求到收到首个 streamed output;ITL 是连续 streamed output 之间的间隔,并汇总成功请求;TPOT 则按请求计算,排除首 token 后再跨请求汇总。
还要记录两个容易影响解释的情况:重复对同一服务器运行 vllm bench serve,可能复用 prefix cache 中的 prompt 并抬高 throughput;使用 speculative decoding 时,一个 streamed output 可能包含多个 token,因此 ITL 与 TPOT 会分离。不同工具的指标名称并未统一,不能只按相同名称认定口径相同。
如何确认结果可用
按以下顺序复核:
- 配置一致:确认模型、数据集、endpoint、请求速率、并发限制、流量分布和爬升策略均有记录。
- 报告完整:检查请求吞吐、两类 token 吞吐以及 TTFT、ITL、TPOT 是否齐全,并确认单位与汇总方式。
- 比较条件一致:不要把 Server、Offline、Single stream 的结果混在一起,也不要把最大吞吐测试与固定请求速率测试直接对比。
- 资源占用单列:吞吐和延迟不能替代显存、功耗或利用率记录。相关采集方法取决于所用项目当前监控文档,不应从吞吐结果反推。
常见出错点
最常见的问题是接口并未真正流式返回、不同报告使用不同指标定义,以及重复测试受到 prefix cache 影响。工具链还要检查维护状态:NVIDIA 的 GenAI-Perf README表明该工具已不再积极开发新功能,并将新的性能基准测试需求指向 AIPerf。已有脚本应单独保留结果,新工具则应先按当前文档核对命令和指标定义,不能直接假设参数兼容。
本文步骤依据正文链接的官方文档整理,使用前应按当前版本复核。