跳到主要内容

推理性能

本章节提供基于 vllm bench serve快速验证命令,用于确认文本生成和多模态图片请求链路可以正常完成,并快速查看 TTFT、TPOT、吞吐等基础指标。以下示例默认使用单请求、单并发配置。

测试前准备

性能测试需要先启动模型服务,再另开一个窗口运行 vllm bench serve

建议在运行 benchmark 前先激活环境,并显式配置 conda 运行时库路径:

source /home/dev/miniforge3/etc/profile.d/conda.sh
conda activate v1.4.1
export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH"
提示

如果未配置 LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH,可能会遇到 CXXABI_1.3.15 not found 相关报错,处理方式请参考“常见问题(FAQ)”。

文本生成快速验证

先按“快速开始”章节启动文本生成模型服务,例如 gptq-Qwen3-8B。服务启动后,在另一个窗口执行:

vllm bench serve \
--backend openai-chat \
--base-url http://127.0.0.1:8000 \
--endpoint /v1/chat/completions \
--model /home/dev/models/gptq-Qwen3-8B \
--dataset-name random \
--random-input-len 128 \
--random-output-len 128 \
--num-prompts 1 \
--max-concurrency 1 \
--ignore-eos

多模态图片快速验证

多模态图片性能快速验证适用于 Qwen-VL、Qwen3-VL 等图片输入模型。先按“快速开始”章节启动多模态模型服务,例如 gptq-Qwen3-VL-8B-Instruct-4bit-group。如果使用该 8B 示例,服务启动时需要包含:

--limit-mm-per-prompt '{"image":1}'
--hf-overrides '{"text_config":{"tie_word_embeddings":false}}'

如果改测 Qwen3-VL 2B/4B,只保留 --limit-mm-per-prompt '{"image":1}',不要增加 --hf-overrides;如果改测 Qwen3-VL 30B-A3B,与 8B 一样需要增加 --hf-overrides '{"text_config":{"tie_word_embeddings":false}}'

服务启动后,在另一个窗口执行:

vllm bench serve \
--backend openai-chat \
--base-url http://127.0.0.1:8000 \
--endpoint /v1/chat/completions \
--model /home/dev/models/gptq-Qwen3-VL-8B-Instruct-4bit-group \
--dataset-name random-mm \
--num-prompts 1 \
--max-concurrency 1 \
--random-input-len 128 \
--random-output-len 128 \
--random-mm-base-items-per-request 1 \
--random-mm-limit-mm-per-prompt '{"image":1,"video":0}' \
--random-mm-bucket-config '{(256, 256, 1): 1.0}'

上述命令使用 random-mm 随机多模态数据集,发送 1 条多模态请求。该请求包含约 128 token 文本输入、1 张 256×256 随机图片,并请求模型生成约 128 token。

如需快速验证不同图片分辨率,可调整 --random-mm-bucket-config

# 512 x 512 单图
--random-mm-bucket-config '{(512, 512, 1): 1.0}'

# 720 x 1280 单图
--random-mm-bucket-config '{(720, 1280, 1): 1.0}'
提示

当前 random-mm 适合快速验证多模态图片输入链路和基础指标。真实业务需求请使用需求真实图片数据集和固定提示词进行测试。

参数说明

参数名参数作用输入范围 / 建议值
--backend指定 benchmark 使用的服务后端OpenAI chat 接口使用 openai-chat
--base-url指定 vLLM 服务地址默认本机服务可使用 http://127.0.0.1:8000
--endpoint指定请求接口文本和多模态 chat 使用 /v1/chat/completions
--model指定待测试的模型名称 / 本地路径字符串,需与服务端部署的模型路径或 --served-model-name 一致
--dataset-name指定性能测试使用的数据集类型文本随机数据集使用 random,随机多模态数据集使用 random-mm
--random-input-len使用随机数据集时,设置输入 Prompt 的 token 长度正整数,快速验证可使用 128
--random-output-len使用随机数据集时,设置模型输出 token 长度正整数,快速验证可使用 128
--num-prompts指定本次 benchmark 总请求数快速验证使用 1;多请求稳定性或吞吐测试可增大到 10100 或更多
--max-concurrency指定最大并发请求数单请求快速验证使用 1
--ignore-eos忽略 EOS 结束符文本性能测试时启用可保证输出长度稳定,避免提前停止影响结果
--random-mm-base-items-per-request多模态测试中,每条请求的多模态输入数量基准值单图测试使用 1
--random-mm-limit-mm-per-prompt限制每条请求中不同多模态输入的数量单图测试使用 '{"image":1,"video":0}'
--random-mm-bucket-config配置随机图片尺寸及采样概率例如 '{(256, 256, 1): 1.0}' 表示每条请求使用 1 张 256×256 图片

--num-prompts 说明

--num-prompts 表示本次 benchmark 总共发送多少条请求。快速验证场景建议设置为:

--num-prompts 1

对于多模态 random-mm 测试,每条请求通常包含:

  • 一段随机文本输入;
  • --random-mm-* 参数生成的图片输入;
  • 指定长度的输出请求。

如果需要做多请求稳定性或吞吐测试,可以将 --num-prompts 增大,例如 10100 或更多,并根据测试目标调整 --max-concurrency

输出示例

执行成功后,vllm bench serve 会输出类似如下指标。具体数值与模型、输入长度、输出长度、图片尺寸、并发数和运行环境有关,请以实际测试输出为准。

============ Serving Benchmark Result ============
Successful requests: 1
Failed requests: 0
Maximum request concurrency: 1
Benchmark duration (s): 11.68
Total input tokens: 128
Total generated tokens: 128
Request throughput (req/s): 0.09
Output token throughput (tok/s): 10.96
Peak output token throughput (tok/s): 12.00
Peak concurrent requests: 1.00
Total token throughput (tok/s): 21.91
---------------Time to First Token----------------
Mean TTFT (ms): 582.24
Median TTFT (ms): 582.24
P99 TTFT (ms): 582.24
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 87.40
Median TPOT (ms): 87.40
P99 TPOT (ms): 87.40
---------------Inter-token Latency----------------
Mean ITL (ms): 86.72
Median ITL (ms): 87.78
P99 ITL (ms): 91.97
==================================================
备注
  1. 一个窗口启动模型服务(vllm serve),另一个窗口运行性能测试(vllm bench serve)。
  2. 本章节命令定位为快速验证,默认使用单请求、单并发。
  3. 上述输出示例仅说明结果格式,不代表固定性能数据。实际结果请以本地测试输出为准。
  4. 正式性能测试建议固定并发、请求数、输入/输出长度、图片尺寸和测试环境,并多次运行后统计结果。