跳到内容

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'

参数

--seed

默认值: 0

--num-prompts

要处理的提示数量。

默认值: 1000

--dataset-name

可能选项: sharegpt, burstgpt, sonnet, random, random-mm, random-rerank, hf, custom, prefix_repetition, spec_bench

要进行基准测试的数据集名称。

默认值: random

--no-stream

不以流式模式加载数据集。

默认值: False

--dataset-path

sharegpt/sonnet 数据集的路径。如果使用 HF 数据集,则是 Huggingface 数据集 ID。

默认值: None

--no-oversample

如果数据集样本少于 num-prompts,则不进行过采样。

默认值: False

--skip-chat-template

跳过为支持聊天模板的数据集应用聊天模板。

默认值: False

--disable-shuffle

禁用数据集样本的随机排序,以实现确定性顺序。

默认值: False

--label

基准测试结果的标签(前缀)。如果未指定,则使用 '--backend' 的值作为标签。

默认值: None

--backend

可能选项: vllm, openai, openai-chat, openai-audio, openai-embeddings, openai-embeddings-chat, openai-embeddings-clip, openai-embeddings-vlm2vec, infinity-embeddings, infinity-embeddings-clip, vllm-rerank

要用于基准测试的后端或端点的类型。

默认值: openai

--base-url

服务器或 API 的基本 URL,如果未使用 http 主机和端口。

默认值: None

--host

默认值: 127.0.0.1

--port

默认值: 8000

--endpoint

API 端点。

默认值: /v1/completions

--header

键值对(例如,--header x-additional-info=0.3.3),用于在每次请求中传递的标头。这些标头会覆盖每个后端常量以及通过环境变量设置的值,并且会被其他参数(如请求 ID)覆盖。

默认值: None

--max-concurrency

最大并发请求数。这可用于模拟一个更高级别的组件强制执行最大并发请求数的环境。虽然 --request-rate 参数控制请求启动的速率,但此参数将控制一次实际允许执行的请求数量。这意味着,当组合使用时,如果服务器处理请求的速度不够快,实际的请求速率可能会低于 --request-rate 中指定的速率。

默认值: None

--model

模型的名称。如果未指定,将从服务器的 /v1/models 端点获取第一个模型。

默认值: None

--input-len

数据集的一般输入长度。映射到特定于数据集的输入长度参数(例如,--random-input-len,--sonnet-input-len)。如果未指定,则使用数据集的默认值。

默认值: None

--output-len

数据集的一般输出长度。映射到特定于数据集的输出长度参数(例如,--random-output-len,--sonnet-output-len)。如果未指定,则使用数据集的默认值。

默认值: None

--tokenizer

分词器的名称或路径,如果未使用默认分词器。

默认值: None

--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`.

    - Other custom values can be supported via plugins.

默认值: auto

默认值: False

--logprobs

要计算并作为请求一部分返回的每 token 的 logprobs 数量。如果未指定,则(1)如果禁用束搜索,则不计算 logprobs,并且每个 token 返回一个虚拟 logprob;或者(2)如果启用束搜索,则计算每个 token 的 1 个 logprob。

默认值: None

--request-rate

每秒请求数。如果此值为 inf,则所有请求在时间 0 发送。否则,我们使用泊松过程或伽马分布来合成请求到达时间。

默认值: inf

--burstiness

请求生成的突发性因子。仅当 request_rate 不是 inf 时生效。默认值为 1,遵循泊松过程。否则,请求间隔遵循伽马分布。较低的突发性值(0 < burstiness < 1)会导致更突发的请求。较高的突发性值(burstiness > 1)会导致更均匀的请求到达。

默认值: 1.0

--trust-remote-code

信任来自 Huggingface 的远程代码。

默认值: False

--disable-tqdm

指定禁用 tqdm 进度条。

默认值: False

--num-warmups

预热请求的数量。

默认值: 0

--profile

使用 vLLM 性能分析。--profiler-config 必须在服务器上提供。

默认值: False

--save-result

指定将基准测试结果保存到 JSON 文件。

默认值: False

--save-detailed

保存结果时,是否包含每个请求的信息,如响应、错误、ttfs、tpots 等。

默认值: False

--append-result

将基准测试结果附加到现有的 JSON 文件。

默认值: False

--metadata

键值对(例如,--metadata version=0.3.3 tp=1),用于此运行的元数据,以便保存在结果 JSON 文件中以供记录。

默认值: None

--result-dir

指定保存基准测试 JSON 结果的目录。如果未指定,则结果保存在当前目录。

默认值: None

--result-filename

指定保存基准测试 JSON 结果的文件名。如果未指定,则结果将以 {label}-{args.request_rate}qps-{base_model_id}-{current_dt}.json 格式保存。

默认值: None

--ignore-eos

发送基准测试请求时设置 ignore_eos 标志。警告:deepspeed_mii 和 tgi 不支持 ignore_eos。

默认值: False

--percentile-metrics

用于报告百分位数的选定指标的逗号分隔列表。此参数指定要报告百分位数的指标。允许的指标名称是 "ttft"(首次 token 延迟)、"tpot"(token 生产时间)、"itl"(token 间延迟)、"e2el"(端到端延迟)。如果未指定,则对于生成模型默认为 "ttft,tpot,itl",对于池化模型默认为 "e2el"。

默认值: None

--metric-percentiles

选定指标的百分位数的逗号分隔列表。要报告第 25、50 和第 75 百分位数,请使用 "25,50,75"。默认值为 "99"。使用 "--percentile-metrics" 选择指标。

默认值: 99

--goodput

指定服务水平目标(SLO)的 goodput,格式为 "KEY:VALUE" 对,其中 key 是指标名称,value 是毫秒。可以提供多个 "KEY:VALUE" 对,用空格分隔。允许的请求级别指标名称为 "ttft"(首次 token 延迟)、"tpot"(token 生产时间)、"e2el"(端到端延迟)。有关 goodput 定义的更多上下文,请参阅 DistServe 论文:https://arxiv.org/pdf/2401.09670 和博客:https://hao-ai-lab.github.io/blogs/distserve。

默认值: None

--request-id-prefix

指定请求 ID 的前缀。

默认值: bench-3d02ebce-

--served-model-name

API 中使用的模型名称。如果未指定,模型名称将与 `--model` 参数相同。

默认值: None

--lora-modules

在启动服务器时传入的 LoRA 模块名称的子集。对于每个请求,脚本都会随机选择一个 LoRA 模块。

默认值: None

--ramp-up-strategy

可能选项: linear, exponential

预热策略。这将用于在基准测试期间将请求速率从初始 RPS 预热到最终 RPS 速率(由 --ramp-up-start-rps 和 --ramp-up-end-rps 指定)。

默认值: None

--ramp-up-start-rps

预热的起始请求速率(RPS)。使用 --ramp-up-strategy 时需要指定。

默认值: None

--ramp-up-end-rps

预热的结束请求速率(RPS)。使用 --ramp-up-strategy 时需要指定。

默认值: None

--ready-check-timeout-sec

等待端点就绪的最大时间(秒)(默认值:600 秒 / 10 分钟)。如果设置为 0,则跳过就绪检查。

默认值: 600

--extra-body

一个 JSON 字符串,表示要在每个请求中包含的额外正文参数。例如:'{"chat_template_kwargs":{"enable_thinking":false}}'

默认值: None

自定义数据集选项

--custom-output-len

每个请求的输出 token 数,仅用于自定义数据集。

默认值: 256

spec bench 数据集选项

--spec-bench-output-len

每个请求的输出 token 数,仅用于 spec bench 数据集。

默认值: 256

--spec-bench-category

spec bench 数据集的类别。如果为 None,则使用所有类别。

默认值: None

sonnet 数据集选项

--sonnet-input-len

每个请求的输入 token 数,仅用于 sonnet 数据集。

默认值: 550

--sonnet-output-len

每个请求的输出 token 数,仅用于 sonnet 数据集。

默认值: 150

--sonnet-prefix-len

每个请求的 prefix token 数,仅用于 sonnet 数据集。

默认值: 200

sharegpt 数据集选项

--sharegpt-output-len

每个请求的输出长度。将覆盖 ShareGPT 数据集中的输出长度。

默认值: None

blazedit 数据集选项

--blazedit-min-distance

blazedit 数据集的最小距离。最小值:0,最大值:1.0

默认值:0.0

--blazedit-max-distance

blazedit 数据集的最大距离。最小值:0,最大值:1.0

默认值: 1.0

random 数据集选项

--random-input-len

每个请求的输入 token 数,仅用于随机采样。

默认值: 1024

--random-output-len

每个请求的输出 token 数,仅用于随机采样。

默认值: 128

--random-range-ratio

用于采样输入/输出长度的范围比例,仅用于随机采样。必须在 [0, 1) 范围内,以定义一个对称的采样范围 [length * (1 - range_ratio), length * (1 + range_ratio)]。

默认值: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

模型是否支持重排(reranking)功能。仅用于重排基准测试。

默认值: False

random multimodal 数据集选项,扩展自 random 数据集

--random-mm-base-items-per-request

random-mm 的每请求基础多模态项目数。实际每请求计数将在该基础值周围采样,使用 --random-mm-num-mm-items-range-ratio。

默认值: 1

--random-mm-num-mm-items-range-ratio

用于采样每个请求项目数的范围比例 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 数据集的子集。

默认值: None

--hf-split

HF 数据集的分割。

默认值: None

--hf-name

HuggingFace 上数据集的名称(例如,'lmarena-ai/VisionArena-Chat')。如果您的 dataset-path 是本地路径,则需要指定此项。

默认值: None

--hf-output-len

每个请求的输出长度。将覆盖从采样的 HF 数据集中获取的输出长度。

默认值: None

prefix repetition 数据集选项

--prefix-repetition-prefix-len

每个请求的 prefix token 数,仅用于 prefix repetition 数据集。

默认值: 256

--prefix-repetition-suffix-len

每个请求的 suffix token 数,仅用于 prefix repetition 数据集。总输入长度为 prefix_len + suffix_len。

默认值: 256

--prefix-repetition-num-prefixes

要生成的 prefix 数量,仅用于 prefix repetition 数据集。每个 prefix 的提示数量为 num_requests // num_prefixes。

默认值: 10

--prefix-repetition-output-len

每个请求的输出 token 数,仅用于 prefix repetition 数据集。

默认值: 128

采样参数

--top-p

Top-p 采样参数。仅对 openai 兼容的后端有效。

默认值: None

--top-k

Top-k 采样参数。仅对 openai 兼容的后端有效。

默认值: None

--min-p

Min-p 采样参数。仅对 openai 兼容的后端有效。

默认值: None

--temperature

Temperature 采样参数。仅对 openai 兼容的后端有效。如果未指定,则默认为贪婪解码(即 temperature==0.0)。

默认值: None

--frequency-penalty

Frequency penalty 采样参数。仅对 openai 兼容的后端有效。

默认值: None

--presence-penalty

Presence penalty 采样参数。仅对 openai 兼容的后端有效。

默认值: None

--repetition-penalty

Repetition penalty 采样参数。仅对 openai 兼容的后端有效。

默认值: None

--common-prefix-len

所有提示共享的公共前缀长度(由 random 数据集使用)。

默认值: None