vllm bench serve¶
JSON 命令行参数¶
当传递 JSON 命令行参数时,以下几组参数是等效的
--json-arg '{"key1": "value1", "key2": {"key3": "value2"}}'--json-arg.key1 value1 --json-arg.key2.key3 value2
此外,列表元素可以使用 + 单独传递
--json-arg '{"key4": ["value3", "value4", "value5"]}'--json-arg.key4+ value3 --json-arg.key4+='value4,value5'
参数¶
--trust-remote-code¶
- 信任来自 huggingface 的远程代码
- 默认值:
False
--seed¶
- 默认值:
0
--num-prompts¶
- 要处理的提示数量。
- 默认值:
1000
--dataset-name¶
- 可选值:
sharegpt,burstgpt,sonnet,random,random-mm,random-rerank,hf,custom,custom_audio,custom_image,custom_mm,prefix_repetition,spec_bench,speed_bench,timed_trace - 用于基准测试的数据集名称。
- 默认值:
random
--no-stream¶
- 不以流式传输模式加载数据集。
- 默认值:
False
--dataset-path¶
- sharegpt/sonnet 数据集的路径,或使用 HF 数据集时的 HF 数据集 ID。
--no-oversample¶
- 如果数据集的样本数量少于 num-prompts,则不进行过采样。
- 默认值:
False
--skip-chat-template¶
- 对于支持聊天模板的数据集,跳过对提示词应用聊天模板。
- 默认值:
False
--enable-multimodal-chat¶
- 为支持多模态的数据集启用多模态聊天转换。
- 默认值:
False
--disable-shuffle¶
- 禁止打乱数据集样本,以实现确定性的处理顺序。
- 默认值:
False
--label¶
- 基准测试结果的标签(前缀)。如果未指定,将使用 '--backend' 的值作为标签。
--backend¶
- 可选值:
vllm,openai,openai-chat,openai-audio,openai-embeddings,openai-embeddings-chat,openai-embeddings-clip,openai-embeddings-vlm2vec,infinity-embeddings,infinity-embeddings-clip,vllm-pooling,vllm-rerank - 用于基准测试的后端或端点类型。
- 默认值:
openai
--base-url¶
- 如果不使用 http 主机和端口,则指定服务器或 API 的基准 URL。
--host¶
- 默认值:
127.0.0.1
--port¶
- 默认值:
8000
--endpoint¶
- API 端点。
- 默认值:
/v1/completions
--header¶
- 键值对(例如 --header x-additional-info=0.3.3),用于指定每次请求携带的标头。这些标头会覆盖后端常量和通过环境变量设置的值,并将被其他参数(如请求 ID)覆盖。
--max-concurrency¶
- 最大并发请求数。这可用于模拟高级组件强制执行最大并发请求数的环境。虽然 --request-rate 参数控制启动请求的速率,但此参数控制同时允许执行的请求数量。这意味着当两者结合使用时,如果服务器处理请求的速度不足以跟上,实际请求速率可能会低于 --request-rate 指定的值。
--model¶
- 模型名称。如果未指定,将从服务器的 /v1/models 端点获取第一个模型。
--input-len¶
- 数据集的通用输入长度。映射到数据集特定的输入长度参数(例如 --random-input-len, --sonnet-input-len)。如果未指定,使用数据集默认值。
--output-len¶
- 数据集的通用输出长度。映射到数据集特定的输出长度参数(例如 --random-output-len, --sonnet-output-len)。如果未指定,使用数据集默认值。
--tokenizer¶
- 分词器(tokenizer)的名称或路径(如果不使用默认分词器)。
--tokenizer-mode¶
- 分词器模式
- "auto" will use the tokenizer from `mistral_common` for Mistral models if available, otherwise it will use the "hf" tokenizer. - "hf" will use the fast tokenizer if available. - "slow" will always use the slow tokenizer. - "mistral" will always use the tokenizer from `mistral_common`. - "deepseek_v32" will always use the tokenizer from `deepseek_v32`. - "qwen_vl" will always use the tokenizer from `qwen_vl`. - Other custom values can be supported via plugins. -
默认值:
auto
--use-beam-search¶
- 默认值:
False
--logprobs¶
- 每个 token 计算并返回的 logprobs 数量。如果未指定,则:(1) 如果禁用了束搜索 (beam search),则不计算 logprobs,每个 token 返回一个虚拟的 logprob;或 (2) 如果启用了束搜索,则每个 token 计算 1 个 logprob。
--request-rate¶
- 每秒请求数。如果是 inf,则所有请求在时间 0 同时发送。否则,我们使用泊松过程或伽马分布来合成请求到达时间。
- 默认值:
inf
--burstiness¶
- 请求生成的突发因子(burstiness)。仅在 request_rate 不为 inf 时有效。默认值为 1,遵循泊松过程。否则,请求间隔遵循伽马分布。较低的突发值 (0 < burstiness < 1) 会导致请求更集中突发。较高的突发值 (burstiness > 1) 会导致请求到达更均匀。
- 默认值:
1.0
--disable-tqdm¶
- 指定以禁用 tqdm 进度条。
- 默认值:
False
--num-warmups¶
- 预热请求的数量。
- 默认值:
0
--profile¶
- 使用 vLLM 分析(Profiling)。服务器必须提供 --profiler-config 配置。
- 默认值:
False
--save-result¶
- 指定将基准测试结果保存到 json 文件。
- 默认值:
False
--save-detailed¶
- 保存结果时,是否包含每个请求的信息,如响应、错误、ttfts、tpots 等。
- 默认值:
False
--append-result¶
- 将基准测试结果追加到现有的 json 文件中。
- 默认值:
False
--metadata¶
- 用于记录本次运行元数据的键值对(例如 --metadata version=0.3.3 tp=1),将保存到结果 JSON 文件中以供存档。
--result-dir¶
- 指定保存基准测试 json 结果的目录。如果未指定,结果将保存在当前目录中。
--result-filename¶
- 指定保存基准测试 json 结果的文件名。如果未指定,结果将以 {label}-{args.request_rate}qps-{base_model_id}-{current_dt}.json 格式保存。
--ignore-eos¶
- 发送基准测试请求时设置 ignore_eos 标志。警告:deepspeed_mii 和 tgi 不支持 ignore_eos。
- 默认值:
False
--self-timed, --no-self-timed¶
- 使用跟踪信息(trace)中的时间信息而不是配置。这在根据时间戳忠实回放跟踪时非常有用。未设置时,默认为 False,但 --dataset-name=timed_trace 除外(默认为 True)。使用 --no-self-timed 强制关闭。关闭时,将使用用户定义的生成速率,并忽略跟踪中的定时信息。
--percentile-metrics¶
- 用于报告百分位数的选定指标列表(以逗号分隔)。此参数指定哪些指标需要报告百分位数。允许的指标名称有 "ttft", "tpot", "itl", "e2el"。如果未指定,生成模型默认值为 "ttft,tpot,itl",池化模型默认值为 "e2el"。
--metric-percentiles¶
- 所选指标的百分位数列表(以逗号分隔)。要报告第 25、50 和 75 百分位数,请使用 "25,50,75"。默认值为 "99"。使用 "--percentile-metrics" 选择指标。
- 默认值:
99
--goodput¶
- 以 "KEY:VALUE" 对形式指定 Goodput 的服务水平目标 (SLO),其中 key 是指标名称,value 是毫秒值。可以提供多个 "KEY:VALUE" 对,并用空格分隔。允许的请求级指标名称为 "ttft", "tpot", "e2el"。有关 Goodput 定义的更多上下文,请参考 DistServe 论文:https://arxiv.org/pdf/2401.09670 和博客:https://hao-ai-lab.github.io/blogs/distserve
--request-id-prefix¶
- 指定请求 ID 的前缀。
- 默认值:
bench-a8752075-
--served-model-name¶
- API 中使用的模型名称。如果未指定,模型名称将与
--model参数相同。
--lora-modules¶
- 启动服务器时传入的 LoRA 模块名称子集。默认情况下,脚本会为每个请求随机选择一个 LoRA 模块。使用 --lora-assignment 控制选择策略。
--lora-assignment¶
- 可选值:
random,round-robin - 为请求分配 LoRA 模块的策略。'random'(默认)为每个请求随机选择一个 LoRA。'round-robin' 以确定性的方式循环选择 LoRA 模块。
- 默认值:
random
--ramp-up-strategy¶
- 可选值:
linear,exponential - 爬坡(ramp-up)策略。用于在基准测试期间将请求速率从初始 RPS 提升到最终 RPS(由 --ramp-up-start-rps 和 --ramp-up-end-rps 指定)。
--ramp-up-start-rps¶
- 爬坡的起始请求速率 (RPS)。使用 --ramp-up-strategy 时必须指定。
--ramp-up-end-rps¶
- 爬坡的结束请求速率 (RPS)。使用 --ramp-up-strategy 时必须指定。
--ready-check-timeout-sec¶
- 等待端点就绪的最大秒数。默认跳过就绪检查。
- 默认值:
0
--chat-template-kwargs¶
- 一个 JSON 字符串,包含转发给 tokenizer 的 apply_chat_template 的 kwargs,用于数据集在客户端渲染提示词时使用(例如 custom / speed_bench)。示例:'{"thinking": true}' 以启用推理模型。
--extra-body¶
- 一个 JSON 字符串,表示要在每个请求中包含的额外请求体参数。示例:'{"chat_template_kwargs":{"enable_thinking":false}}'
--skip-tokenizer-init¶
- 跳过分词器和反分词器的初始化。
- 默认值:
False
--insecure¶
- 禁用 SSL 证书验证。连接具有自签名证书的服务器时使用此选项。
- 默认值:
False
--plot-timeline¶
- 生成显示请求执行情况的 HTML 时间轴图。该图将与结果 JSON 文件一起保存。
- 默认值:
False
--timeline-itl-thresholds¶
- 用于时间轴图着色的 ITL(token 间延迟)阈值,单位为毫秒。指定两个逗号分隔的值,将 token 间延迟分为三组:低于第一个阈值(绿色)、在阈值之间(橙色)、高于第二个阈值(红色)。
- 默认值:
25,50
--plot-dataset-stats¶
- 生成包含数据集统计信息的 matplotlib 图,显示提示词 token 数、输出 token 数和组合 token 的分布。
- 默认值:
False
custom 数据集选项¶
--custom-output-len¶
- 每个请求的输出 token 数量。除非设置为 -1,否则该值会覆盖从数据集加载的潜在输出长度。仅用于自定义数据集。
- 默认值:
256
--custom-ensure-client-side-data¶
- 确保自定义数据集的媒体作为客户端数据发送,而不是引用。对于 custom_image 数据集,这会在基准测试客户端加载本地和 HTTP(S) 图像,并将它们编码为 base64 数据 URL。现有的 data:image URL 保持不变。
- 默认值:
False
spec bench 数据集选项¶
--spec-bench-output-len¶
- 每个请求的输出 token 数,仅用于 spec bench 数据集。
- 默认值:
256
--spec-bench-category¶
- spec bench 数据集的类别。如果为 None,则使用所有类别。
sonnet 数据集选项¶
--sonnet-input-len¶
- 每个请求的输入 token 数量,仅用于 sonnet 数据集。
- 默认值:
550
--sonnet-output-len¶
- 每个请求的输出 token 数量,仅用于 sonnet 数据集。
- 默认值:
150
--sonnet-prefix-len¶
- 每个请求的前缀 token 数量,仅用于 sonnet 数据集。
- 默认值:
200
sharegpt 数据集选项¶
--sharegpt-output-len¶
- 每个请求的输出长度。覆盖 ShareGPT 数据集中的输出长度。
timed-trace 数据集选项¶
--timed-trace-chunk-hash-size¶
- 如果存在哈希 token,每个哈希代表多少个 token 哈希。例如,Moonshot 跟踪中是 512,而 Qwen/Alibaba 是 16。
- 默认值:
16
--timed-trace-sec-multiplier¶
- 将时间戳转换为秒时使用的乘数。我们将把时间戳乘以该值。例如,如果时间戳是毫秒,则传入 0.001。如果是秒,则默认的 1 足矣。
- 默认值:
1
--timed-trace-label-timestamp¶
- 使用什么 json 标签来索引跟踪中的时间戳。
- 默认值:
timestamp
--timed-trace-label-input-length¶
- 使用什么 json 标签来索引跟踪中的输入长度字段。
- 默认值:
input_length
--timed-trace-label-output-length¶
- 使用什么 json 标签来索引跟踪中的输出长度字段。
- 默认值:
output_length
--timed-trace-label-hash-ids¶
- 使用什么 json 标签来索引输入提示词的哈希 ID。
- 默认值:
hash_ids
blazedit 数据集选项¶
--blazedit-min-distance¶
- blazedit 数据集的最小距离。最小:0,最大:1.0
- 默认值:
0.0
--blazedit-max-distance¶
- blazedit 数据集的最大距离。最小:0,最大:1.0
- 默认值:
1.0
asr 数据集选项¶
--asr-max-audio-len-sec¶
- ASR 数据集的最大音频长度(秒)。
- 默认值:
inf
--asr-min-audio-len-sec¶
- ASR 数据集的最小音频长度(秒)。
- 默认值:
0.0
随机数据集选项¶
--random-input-len¶
- 每个请求的输入 token 数,仅用于随机采样。
- 默认:
1024
--random-output-len¶
- 每个请求的输出 token 数,仅用于随机采样。
- 默认值:
128
--random-range-ratio¶
- 对输入/输出长度进行采样的范围比例,仅用于随机采样。单个浮点数同时适用于 ISL(输入序列长度)和 OSL(输出序列长度)。类似 '{"input": 0.3, "output": 0.5}' 的 JSON 字典可以分别进行设置。取值必须在 [0, 1) 区间内。
- 默认值:
0.0
--random-prefix-len¶
- 请求中随机上下文之前的固定前缀 token 数。总输入长度是
random-prefix-len和从 [input_len * (1 - range_ratio), input_len * (1 + range_ratio)] 采样的随机上下文长度的总和。 - 默认值:
0
--random-batch-size¶
- 随机采样的批次大小。仅用于嵌入基准测试。
- 默认值:
1
--no-reranker¶
- 模型是否支持重排序功能。仅用于重排序基准测试。
- 默认值:
False
基于随机数据集扩展的随机多模态数据集选项¶
--random-mm-base-items-per-request¶
- random-mm 的每个请求的基础多模态项数。实际的每个请求计数将围绕此基础值进行采样,使用 --random-mm-num-mm-items-range-ratio。
- 默认值:
1
--random-mm-num-mm-items-range-ratio¶
- 每个请求的项数采样范围比 r,r 在 [0, 1] 之间。我们从闭合整数范围 [floor(n(1-r)), ceil(n(1+r))] 中均匀采样,其中 n 是每个请求的基础项数。r=0 保持固定;r=1 允许 0 个项。最大值被限制到 --random-mm-limit-mm-per-prompt 中的每模态限制之和。如果计算出的最小值超过最大值,则会引发错误。
- 默认值:
0.0
--random-mm-limit-mm-per-prompt¶
- 每个请求附带的项数的每模态硬限制,例如 '{"image": 3, "video": 0}'。采样的每个请求项数将被限制到这些限制之和。当一个模态达到其上限时,它的桶将被排除,并且概率会被重新归一化。注意:目前仅支持图像采样。
- 默认:
{'image': 255, 'video': 1}
--random-mm-bucket-config¶
- 桶配置是一个字典,将多模态项采样配置映射到概率。目前支持 2 种模态:图像和视频。桶键是 (height, width, num_frames) 的元组。值是采样特定项的概率。示例:--random-mm-bucket-config {(256, 256, 1): 0.5, (720, 1280, 1): 0.4, (720, 1280, 16): 0.10} 第一个项:分辨率为 256x256 的图像,概率为 0.5。第二个项:分辨率为 720x1280 的图像,概率为 0.4。第三个项:分辨率为 720x1280 且有 16 帧的视频,概率为 0.1。注意:如果概率不加到 1,它们将被归一化。注意 bis:目前仅支持图像采样。
- 默认:
{(256, 256, 1): 0.5, (720, 1280, 1): 0.5, (720, 1280, 16): 0.0}
hf 数据集选项¶
--hf-subset¶
- HF 数据集的子集。
--hf-split¶
- HF 数据集的拆分。
--hf-name¶
- HuggingFace 上的数据集名称(例如 'lmarena-ai/VisionArena-Chat')。如果您的数据集路径是本地路径,请指定此项。
--hf-output-len¶
- 每个请求的输出长度。覆盖从采样的 HF 数据集中获取的输出长度。
前缀重复数据集选项¶
--prefix-repetition-prefix-len¶
- 每个请求的前缀 token 数量,仅用于前缀重复数据集。
- 默认值:
256
--prefix-repetition-suffix-len¶
- 每个请求的后缀 token 数量,仅用于前缀重复数据集。总输入长度 = prefix_len + suffix_len。
- 默认值:
256
--prefix-repetition-num-prefixes¶
- 要生成的前缀数量,仅用于前缀重复数据集。每个前缀的提示词数量 = num_requests // num_prefixes。
- 默认值:
10
--prefix-repetition-output-len¶
- 每个请求的输出 token 数量,仅用于前缀重复数据集。
- 默认值:
128
speed bench 数据集选项¶
SPEED-Bench 数据集:https://hugging-face.cn/datasets/nvidia/SPEED-Bench
Download the dataset using:
`curl -LsSf https://raw.githubusercontent.com/NVIDIA-NeMo/Skills/refs/heads/main/nemo_skills/dataset/speed-bench/prepare.py | python3 -`
--speed-bench-dataset-subset¶
- 可选值:
qualitative,throughput_8k,throughput_16k,throughput_32k,throughput_1k,throughput_2k - SPEED-Bench 数据集的子集。
- 默认值:
qualitative
--speed-bench-output-len¶
- 每个请求的输出 token 数,仅用于 speed bench 数据集。
- 默认值:
4096
--speed-bench-category¶
- speed bench 数据集的类别。如果为 None,则使用所有类别。
采样参数¶
--top-p¶
- Top-p 采样参数。仅对兼容 OpenAI 的后端有效。
--top-k¶
- Top-k 采样参数。仅对兼容 OpenAI 的后端有效。
--min-p¶
- Min-p 采样参数。仅对兼容 OpenAI 的后端有效。
--temperature¶
- Temperature 采样参数。仅对兼容 OpenAI 的后端有效。
--frequency-penalty¶
- 频率惩罚(Frequency penalty)采样参数。仅对兼容 OpenAI 的后端有效。
--presence-penalty¶
- 存在惩罚(Presence penalty)采样参数。仅对兼容 OpenAI 的后端有效。
--repetition-penalty¶
- 重复惩罚(Repetition penalty)采样参数。仅对兼容 OpenAI 的后端有效。