跳到內容

vllm bench latency

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'

引數

--input-len

預設值: 32

--output-len

預設值: 128

--batch-size

預設: 8

--n

每個提示生成的序列數量。

預設值: 1

預設值: False

--num-iters-warmup

用於預熱的迭代次數。

預設: 10

--num-iters

要執行的迭代次數。

預設: 30

--profile

剖析單個批次的生成過程

預設值: False

--output-json

用於以 JSON 格式儲存延遲結果的路徑。

預設值: None

--disable-detokenize

不進行反分詞處理響應(即不將反分詞時間計入延遲測量)

預設值: False

--disable-log-stats

停用日誌統計資訊。

預設值: False

--aggregate-engine-logging

在使用資料並行時,記錄聚合統計資訊而非單個引擎的統計資訊。

預設值: False

ModelConfig

模型配置。

--model

要使用的 Hugging Face 模型的名稱或路徑。當未指定 `served_model_name` 時,它也用作指標輸出中 `model_name` 標籤的內容。

預設值: Qwen/Qwen3-0.6B

--runner

可選值: auto, draft, generate, pooling

要使用的模型執行器型別。每個 vLLM 例項只支援一個模型執行器,即使同一模型可用於多種型別。

預設值: auto

--convert

可選值: auto, classify, embed, none, reward

使用 vllm.model_executor.models.adapters 中定義的介面卡轉換模型。最常見的用例是將文字生成模型適配為用於池化任務。

預設值: auto

--tokenizer

要使用的 Hugging Face 分詞器的名稱或路徑。如果未指定,將使用模型名稱或路徑。

預設值: None

--tokenizer-mode

可選值: auto, deepseek_v32, hf, mistral, slow

分詞器模式

  • “auto”將為 Mistral 模型使用 mistral_common 中的分詞器(如果可用),否則將使用“hf”分詞器。

  • "hf" 將在可用時使用快速分詞器。

  • "slow" 將始終使用慢速分詞器。

  • "mistral" 將始終使用來自 mistral_common 的分詞器。

  • "deepseek_v32" 將始終使用來自 deepseek_v32 的分詞器。

  • 其他自定義值可以透過外掛支援。

預設值: auto

--trust-remote-code, --no-trust-remote-code

下載模型和分詞器時信任遠端程式碼(例如,來自 HuggingFace)。

預設值: False

--dtype

可選值: auto, bfloat16, float, float16, float32, half

模型權重和啟用值的資料型別

  • "auto" 將對 FP32 和 FP16 模型使用 FP16 精度,對 BF16 模型使用 BF16 精度。

  • "half" 表示 FP16。推薦用於 AWQ 量化。

  • "float16" 與 "half" 相同。

  • "bfloat16" 用於在精度和範圍之間取得平衡。

  • "float" 是 FP32 精度的簡寫。

  • "float32" 表示 FP32 精度。

預設值: auto

--seed

用於可復現性的隨機種子。

我們必須設定全域性種子,否則不同的張量並行工作程序會取樣到不同的令牌,導致結果不一致。

預設值: 0

--hf-config-path

要使用的 Hugging Face 配置的名稱或路徑。如果未指定,將使用模型名稱或路徑。

預設值: None

--allowed-local-media-path

允許 API 請求從伺服器檔案系統指定的目錄中讀取本地影像或影片。這是一個安全風險。只應在受信任的環境中啟用。

預設值: ""

--allowed-media-domains

如果設定,只有屬於此域的媒體 URL 可用於多模態輸入。

預設值: None

--revision

要使用的特定模型版本。可以是一個分支名、一個標籤名或一個提交 ID。如果未指定,將使用預設版本。

預設值: None

--code-revision

用於 Hugging Face Hub 上模型程式碼的特定修訂版。可以是一個分支名、一個標籤名或一個提交 ID。如果未指定,將使用預設版本。

預設值: None

--tokenizer-revision

用於 Hugging Face Hub 上分詞器的特定修訂版。可以是一個分支名、一個標籤名或一個提交 ID。如果未指定,將使用預設版本。

預設值: None

--max-model-len

模型上下文長度(提示和輸出)。如果未指定,將從模型配置中自動推導。

透過 --max-model-len 傳遞時,支援 k/m/g/K/M/G 等人類可讀格式。示例

  • 1k -> 1000

  • 1K -> 1024

  • 25.6k -> 25,600

解析像 '1k', '2M' 等人類可讀的整數。包括帶小數乘數的小數值。

Examples:
- '1k' -> 1,000
- '1K' -> 1,024
- '25.6k' -> 25,600

預設值: None

--quantization, -q

用於量化權重的方法。如果為 None,我們首先檢查模型配置檔案中的 quantization_config 屬性。如果該屬性為 None,我們假設模型權重未被量化,並使用 dtype 來確定權重的資料型別。

預設值: None

--enforce-eager, --no-enforce-eager

是否始終使用 eager-mode 的 PyTorch。如果為 True,我們將停用 CUDA graph 並始終以 eager mode 執行模型。如果為 False,我們將混合使用 CUDA graph 和 eager execution 以獲得最佳效能和靈活性。

預設值: False

--max-logprobs

當在 SamplingParams 中指定 logprobs 時,返回的對數機率的最大數量。預設值來自 OpenAI Chat Completions API 的預設值。-1 表示沒有上限,即允許返回所有 (output_length * vocab_size) 個對數機率,這可能導致記憶體溢位 (OOM)。

預設值: 20

--logprobs-mode

可選值: processed_logits, processed_logprobs, raw_logits, raw_logprobs

指示在 logprobs 和 prompt_logprobs 中返回的內容。支援的模式:1) raw_logprobs, 2) processed_logprobs, 3) raw_logits, 4) processed_logits。Raw 表示應用任何 logit 處理器(如停用詞)之前的值。Processed 表示應用所有處理器(包括溫度和 top_k/top_p)之後的值。

預設值: raw_logprobs

--disable-sliding-window, --no-disable-sliding-window

是否停用滑動視窗。如果為 True,我們將停用模型的滑動視窗功能,限制到滑動視窗大小。如果模型不支援滑動視窗,此引數將被忽略。

預設值: False

--disable-cascade-attn, --no-disable-cascade-attn

停用 V1 的級聯注意力。雖然級聯注意力不改變數學正確性,但停用它可能有助於防止潛在的數值問題。請注意,即使此項設定為 False,級聯注意力也只在啟發式演算法認為它有益時才會使用。

預設值: False

--skip-tokenizer-init, --no-skip-tokenizer-init

跳過分詞器和反分詞器的初始化。期望輸入中包含有效的 prompt_token_ids 並且 prompt 為 None。生成的輸出將包含 token id。

預設值: False

--enable-prompt-embeds, --no-enable-prompt-embeds

如果為 True,則允許透過 prompt_embeds 鍵傳遞文字嵌入作為輸入。

警告:如果傳遞了錯誤形狀的嵌入,vLLM 引擎可能會崩潰。僅對受信任的使用者啟用此標誌!

預設值: False

--served-model-name

API 中使用的模型名稱。如果提供了多個名稱,伺服器將響應任何提供的名稱。響應的 model 欄位中的模型名稱將是此列表中的第一個名稱。如果未指定,模型名稱將與 --model 引數相同。請注意,此名稱(或多個名稱)也將用於 prometheus 指標的 model_name 標籤內容,如果提供多個名稱,指標標籤將採用第一個。

預設值: None

--config-format

可選值: auto, hf, mistral

要載入的模型配置格式

  • "auto" 將在嘗試載入 mistral 格式後,如果可用,則嘗試以 hf 格式載入配置。

  • "hf" 將以 hf 格式載入配置。

  • "mistral" 將以 mistral 格式載入配置。

預設值: auto

--hf-token

用作遠端檔案 HTTP bearer 授權的令牌。如果為 True,將使用執行 huggingface-cli login 時生成的令牌(儲存在 ~/.huggingface 中)。

預設值: None

--hf-overrides

如果是一個字典,包含要轉發給 Hugging Face 配置的引數。如果是一個可呼叫物件,則呼叫它來更新 HuggingFace 配置。

預設值: {}

--pooler-config

池化器配置,用於控制池化模型中輸出池化的行為。

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設值: None

--logits-processor-pattern

可選的正則表示式模式,指定可以透過 logits_processors 額外完成引數傳遞的有效 logits 處理器限定名稱。預設為 None,表示不允許任何處理器。

預設值: None

--generation-config

生成配置的資料夾路徑。預設為 "auto",生成配置將從模型路徑載入。如果設定為 "vllm",則不載入生成配置,將使用 vLLM 的預設值。如果設定為資料夾路徑,則將從指定的資料夾路徑載入生成配置。如果在生成配置中指定了 max_new_tokens,那麼它將為所有請求設定伺服器範圍的輸出令牌數量限制。

預設值: auto

--override-generation-config

覆蓋或設定生成配置。例如 {"temperature": 0.5}。如果與 --generation-config auto 一起使用,覆蓋引數將與模型的預設配置合併。如果與 --generation-config vllm 一起使用,則僅使用覆蓋引數。

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設值: {}

--enable-sleep-mode, --no-enable-sleep-mode

為引擎啟用睡眠模式(僅支援 cuda 和 hip 平臺)。

預設值: False

--model-impl

可選值: auto, terratorch, transformers, vllm

使用哪個模型實現

  • "auto" 將嘗試使用 vLLM 實現(如果存在),如果不存在 vLLM 實現,則回退到 Transformers 實現。

  • "vllm" 將使用 vLLM 模型實現。

  • "transformers" 將使用 Transformers 模型實現。

  • "terratorch" 將使用 TerraTorch 模型實現。

預設值: auto

--override-attention-dtype

覆蓋注意力的 dtype

預設值: None

--logits-processors

一個或多個 logits 處理器的完全限定類名或類定義。

預設值: None

--io-processor-plugin

在模型啟動時載入的 IOProcessor 外掛名稱。

預設值: None

LoadConfig

載入模型權重的配置。

--load-format

要載入的模型權重的格式

  • "auto" 將嘗試以 safetensors 格式載入權重,如果 safetensors 格式不可用,則回退到 pytorch bin 格式。

  • "pt" 將以 pytorch bin 格式載入權重。

  • "safetensors" 將以 safetensors 格式載入權重。

  • "npcache" 將以 pytorch 格式載入權重,並存儲一個 numpy 快取以加快載入速度。

  • "dummy" 將使用隨機值初始化權重,主要用於效能分析。

  • "tensorizer" 將使用 CoreWeave 的 tensorizer 庫進行快速權重載入。更多資訊請參見示例部分的 Tensorize vLLM Model 指令碼。

  • "runai_streamer" 將使用 Run:ai Model Streamer 載入 Safetensors 權重。

  • "runai_streamer_sharded" 將使用 Run:ai Model Streamer 從預分片的檢查點檔案載入權重。

  • "bitsandbytes" 將使用 bitsandbytes 量化載入權重。

  • "sharded_state" 將從預分片的檢查點檔案載入權重,支援高效載入張量並行模型。

  • "gguf" 將從 GGUF 格式的檔案載入權重(詳情見 https://github.com/ggml-org/ggml/blob/master/docs/gguf.md)。

  • "mistral" 將從 Mistral 模型使用的合併 safetensors 檔案載入權重。

  • 其他自定義值可以透過外掛支援。

預設值: auto

--download-dir

下載和載入權重的目錄,預設為 Hugging Face 的預設快取目錄。

預設值: None

--safetensors-load-strategy

指定 safetensors 權重的載入策略。- "lazy" (預設):權重從檔案進行記憶體對映。這可以實現按需載入,對於本地儲存上的模型非常高效。- "eager":在載入前,整個檔案被預先讀入 CPU 記憶體。這推薦用於網路檔案系統(如 Lustre、NFS)上的模型,因為它避免了低效的隨機讀取,顯著加快了模型初始化速度。但是,它會使用更多的 CPU RAM。- "torchao":權重被預先載入,然後重構為 torchao 張量子類。當檢查點使用 torchao 量化並使用 safetensors 儲存時使用此策略。需要 torchao >= 0.14.0

預設值: lazy

--model-loader-extra-config

模型載入器的額外配置。這將傳遞給與所選 load_format 對應的模型載入器。

預設值: {}

--ignore-patterns

載入模型時要忽略的模式列表。預設為 "original/*/" 以避免重複載入 llama 的檢查點。

預設值: ['original/**/*']

--use-tqdm-on-load, --no-use-tqdm-on-load

是否在載入模型權重時啟用 tqdm 以顯示進度條。

預設值: True

--pt-load-map-location

pt_load_map_location: 載入 pytorch 檢查點的對映位置,以支援載入只能在特定裝置(如 "cuda")上載入的檢查點,這等同於 {"": "cuda"}。另一種支援的格式是從不同裝置對映,例如從 GPU 1 到 GPU 0:{"cuda:1": "cuda:0"}。請注意,當從命令列傳遞時,字典中的字串需要用雙引號括起來以便進行 json 解析。更多詳情,請參見 https://pytorch.com.tw/docs/stable/generated/torch.load.html 中關於 map_location 的原始文件。

預設值: cpu

AttentionConfig

vLLM 中注意力機制的配置。

--attention-backend

要使用的注意力後端。如果為 None,將自動選擇。

預設值: None

StructuredOutputsConfig

包含引擎結構化輸出配置的資料類。

--reasoning-parser

根據您使用的模型選擇推理解析器。這用於將推理內容解析為 OpenAI API 格式。

預設值: ""

--reasoning-parser-plugin

可以動態載入和註冊的動態推理解析器外掛的路徑。

預設值: ""

ParallelConfig

分散式執行的配置。

--distributed-executor-backend

可選值: external_launcher, mp, ray, uni

分散式模型工作器要使用的後端,可以是“ray”或“mp”(多程序)。如果 pipeline_parallel_size 和 tensor_parallel_size 的乘積小於或等於可用 GPU 數量,則將使用“mp”將處理保留在單個主機上。否則,將引發錯誤。要使用“mp”,您還必須設定 nnodes,要使用“ray”,您必須手動設定 distributed_executor_backend 為“ray”。

請注意,tpu 僅支援 Ray 進行分散式推理。

預設值: None

--pipeline-parallel-size, -pp

流水線並行組的數量。

預設值: 1

--master-addr

當 distributed_executor_backend 為 mp 時,用於多節點分散式推理的分散式主節點地址。

預設值: 127.0.0.1

--master-port

當 distributed_executor_backend 為 mp 時,用於多節點分散式推理的分散式主節點埠。

預設值: 29501

--nnodes, -n

當 distributed_executor_backend 為 mp 時,用於多節點分散式推理的節點數量。

預設值: 1

--node-rank, -r

當 distributed_executor_backend 為 mp 時,用於多節點分散式推理的分散式節點排名。

預設值: 0

--tensor-parallel-size, -tp

張量並行組的數量。

預設值: 1

--decode-context-parallel-size, -dcp

解碼上下文並行組的數量,因為世界大小不因 dcp 而改變,它只是重用 TP 組的 GPU,並且 tp_size 需要能被 dcp_size 整除。

預設值: 1

--dcp-kv-cache-interleave-size

使用 DCP 時 kv_cache 儲存的交錯大小。dcp_kv_cache_interleave_size 已被 cp_kv_cache_interleave_size 替代,並將在 PCP 完全支援後棄用。

預設值: 1

--cp-kv-cache-interleave-size

使用 DCP 或 PCP 時 kv_cache 儲存的交錯大小。對於 `total_cp_rank = pcp_rank * dcp_world_size + dcp_rank` 和 `total_cp_world_size = pcp_world_size * dcp_world_size`。在 total_cp_rank i 上儲存 interleave_size 個令牌,然後在 total_cp_rank i+1 上儲存下一個 interleave_size 個令牌。Interleave_size=1:令牌級對齊,其中令牌 `i` 儲存在 total_cp_rank `i %% total_cp_world_size` 上。Interleave_size=block_size:塊級對齊,其中令牌首先填充到前面的排名。只有在 (rank i, block j) 完全佔用後,令牌才會儲存在 (rank i+1, block j) 中。Block_size 應大於或等於 cp_kv_cache_interleave_size。Block_size 應能被 cp_kv_cache_interleave_size 整除。

預設值: 1

--prefill-context-parallel-size, -pcp

預填充上下文並行組的數量。

預設值: 1

--data-parallel-size, -dp

資料並行組的數量。MoE 層將根據張量並行大小和資料並行大小的乘積進行分片。

預設值: 1

--data-parallel-rank, -dpn

此例項的資料並行排名。設定後,啟用外部負載均衡器模式。

預設值: None

--data-parallel-start-rank, -dpr

二級節點的起始資料並行排名。

預設值: None

--data-parallel-size-local, -dpl

在此節點上執行的資料並行副本數量。

預設值: None

--data-parallel-address, -dpa

資料並行叢集頭節點的地址。

預設值: None

--data-parallel-rpc-port, -dpp

用於資料並行 RPC 通訊的埠。

預設值: None

--data-parallel-backend, -dpb

資料並行的後端,可以是 "mp" 或 "ray"。

預設值: mp

--data-parallel-hybrid-lb, --no-data-parallel-hybrid-lb, -dph

是否使用“混合”DP LB 模式。僅適用於線上服務且 data_parallel_size > 0。允許在“每個節點”基礎上執行 AsyncLLM 和 API 伺服器,其中 vLLM 在本地資料並行排名之間進行負載均衡,但外部 LB 在 vLLM 節點/副本之間進行負載均衡。與 --data-parallel-start-rank 結合使用時顯式設定。

預設值: False

--data-parallel-external-lb, --no-data-parallel-external-lb, -dpe

是否使用“外部”DP LB 模式。僅適用於線上服務且 data_parallel_size > 0。這對於 Kubernetes 中的“每個排名一個 pod”的寬 EP 設定很有用。當明確向 vllm serve 提供 --data-parallel-rank 時隱式設定。

預設值: False

--enable-expert-parallel, --no-enable-expert-parallel

對 MoE 層使用專家並行而不是張量並行。

預設值: False

--all2all-backend

可能的選項:allgather_reducescatter, deepep_high_throughput, deepep_low_latency, flashinfer_all2allv, naive, pplx

MoE 專家並行通訊的 All2All 後端。可用選項

  • “naive”:使用廣播的樸素 all2all 實現

  • “allgather_reducescatter”:基於 allgather 和 reducescatter 的 all2all

  • “pplx”:使用 pplx 核心

  • “deepep_high_throughput”:使用 deepep 高吞吐量核心

  • “deepep_low_latency”:使用 deepep 低延遲核心

  • “flashinfer_all2allv”:使用 flashinfer alltoallv 核心進行 mnnvl

預設:allgather_reducescatter

--enable-dbo, --no-enable-dbo

為模型執行器啟用雙批次重疊。

預設值: False

--ubatch-size

ubatch 的數量。

預設值: 0

--dbo-decode-token-threshold

僅包含解碼的批次的雙批次重疊閾值。如果請求中的令牌數大於此閾值,將使用微批處理。否則,請求將在單個批次中處理。

預設值: 32

--dbo-prefill-token-threshold

包含一個或多個預填充的批次的雙批次重疊閾值。如果請求中的令牌數大於此閾值,將使用微批處理。否則,請求將在單個批次中處理。

預設值: 512

--disable-nccl-for-dp-synchronization, --no-disable-nccl-for-dp-synchronization

強制 vllm/v1/worker/dp_utils.py 中的 dp 同步邏輯使用 Gloo 而不是 NCCL 進行其 all reduce 操作。

預設值: False

--enable-eplb, --no-enable-eplb

為 MoE 層啟用專家並行負載均衡。

預設值: False

--eplb-config

專家並行配置。

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設:EPLBConfig(window_size=1000, step_interval=3000, num_redundant_experts=0, log_balancedness=False, use_async=False, policy='default')

--expert-placement-strategy

可選值: linear, round_robin

MoE 層的專家放置策略

  • "linear": 專家以連續的方式放置。例如,有 4 個專家和 2 個排名,排名 0 將有專家 [0, 1],排名 1 將有專家 [2, 3]。

  • "round_robin": 專家以輪詢的方式放置。例如,有 4 個專家和 2 個排名,排名 0 將有專家 [0, 2],排名 1 將有專家 [1, 3]。此策略可以幫助改善無冗餘專家的分組專家模型的負載均衡。

預設值: linear

--max-parallel-loading-workers

在多個批次中順序載入模型時,並行載入工作程序的最大數量。用於在使用張量並行和大型模型時避免 RAM OOM。

預設值: None

--ray-workers-use-nsight, --no-ray-workers-use-nsight

是否使用 nsight 對 Ray 工作程序進行效能分析,請參見 https://docs.ray.io/en/latest/ray-observability/user-guides/profiling.html#profiling-nsight-profiler。

預設值: False

--disable-custom-all-reduce, --no-disable-custom-all-reduce

停用自定義 all-reduce 核心並回退到 NCCL。

預設值: False

--worker-cls

要使用的 worker 類的全名。如果為 "auto",將根據平臺確定 worker 類。

預設值: auto

--worker-extension-cls

要使用的 worker 擴充套件類的全名。worker 擴充套件類由 worker 類動態繼承。這用於向 worker 類注入新的屬性和方法,以用於 collective_rpc 呼叫。

預設值: ""

CacheConfig

KV 快取的配置。

--block-size

可選值: 1, 8, 16, 32, 64, 128, 256

連續快取塊的大小(以令牌數量為單位)。在 CUDA 裝置上,僅支援最大 32 的塊大小。

此配置沒有靜態預設值。如果使用者未指定,它將在 Platform.check_and_update_config() 中根據當前平臺進行設定。

預設值: None

--gpu-memory-utilization

用於模型執行器的 GPU 記憶體比例,範圍可以從 0 到 1。例如,值 0.5 表示 50%% 的 GPU 記憶體利用率。如果未指定,將使用預設值 0.9。這是一個例項級別的限制,僅適用於當前的 vLLM 例項。即使您在同一 GPU 上執行另一個 vLLM 例項也無妨。例如,如果您在同一 GPU 上執行兩個 vLLM 例項,您可以為每個例項設定 GPU 記憶體利用率為 0.5。

預設值: 0.9

--kv-cache-memory-bytes

每個 GPU 的 KV 快取大小(以位元組為單位)。預設情況下,此值設定為 None,vllm 可以根據 gpu_memory_utilization 自動推斷 kv 快取大小。但是,使用者可能希望手動指定 kv 快取記憶體大小。與使用 gpu_memory_utilization 相比,kv_cache_memory_bytes 允許更精細地控制記憶體使用量。請注意,kv_cache_memory_bytes(當不為 None 時)會忽略 gpu_memory_utilization。

解析像 '1k', '2M' 等人類可讀的整數。包括帶小數乘數的小數值。

Examples:
- '1k' -> 1,000
- '1K' -> 1,024
- '25.6k' -> 25,600

預設值: None

--swap-space

每個 GPU 的 CPU 交換空間大小(以 GiB 為單位)。

預設值: 4

--kv-cache-dtype

可選值: auto, bfloat16, fp8, fp8_ds_mla, fp8_e4m3, fp8_e5m2, fp8_inc

kv 快取儲存的資料型別。如果為 "auto",將使用模型資料型別。CUDA 11.8+ 支援 fp8 (=fp8_e4m3) 和 fp8_e5m2。ROCm (AMD GPU) 支援 fp8 (=fp8_e4m3)。Intel Gaudi (HPU) 支援 fp8 (使用 fp8_inc)。某些模型(即 DeepSeekV3.2)預設為 fp8,設定為 bfloat16 以使用 bfloat16,對於不預設為 fp8 的模型,這是一個無效選項。

預設值: auto

--num-gpu-blocks-override

要使用的 GPU 塊數量。如果指定,這將覆蓋分析得出的 `num_gpu_blocks`。如果為 `None` 則不執行任何操作。用於測試搶佔。

預設值: None

--enable-prefix-caching, --no-enable-prefix-caching

是否啟用字首快取。

預設值: False

--prefix-caching-hash-algo

可能的選項:sha256, sha256_cbor, xxhash, xxhash_cbor

設定字首快取的雜湊演算法

  • “sha256”在雜湊之前使用 Pickle 進行物件序列化。這是當前預設值,因為 SHA256 是避免潛在雜湊衝突的最安全選擇。

  • "sha256_cbor" 提供一個可復現、跨語言相容的雜湊。它使用規範的 CBOR 序列化物件,並使用 SHA-256 進行雜湊。

  • “xxhash”使用 Pickle 序列化和 xxHash(128 位)進行更快的非加密雜湊。需要可選的 xxhash 包。重要提示:使用不被認為在密碼學上安全的雜湊算法理論上會增加雜湊衝突的風險,這可能導致未定義行為,甚至在多租戶環境中洩露私人資訊。即使衝突仍然非常不可能,在啟用此功能之前,考慮您的安全風險容忍度與效能優勢也很重要。

  • “xxhash_cbor”結合了規範 CBOR 序列化和 xxHash 進行可重複的雜湊。需要可選的 xxhash 包。

預設值: sha256

--cpu-offload-gb

每個 GPU 解除安裝到 CPU 的空間(以 GiB 為單位)。預設為 0,表示不解除安裝。直觀地說,此引數可以看作是虛擬增加 GPU 記憶體大小的一種方式。例如,如果您有一個 24 GB 的 GPU 並將此值設定為 10,您可以將其虛擬地視為一個 34 GB 的 GPU。然後您可以載入一個需要至少 26GB GPU 記憶體的 13B 模型(BF16 權重)。請注意,這需要快速的 CPU-GPU 互連,因為在每個模型前向傳遞中,部分模型會從 CPU 記憶體動態載入到 GPU 記憶體。

預設值: 0

--calculate-kv-scales, --no-calculate-kv-scales

當 kv_cache_dtype 為 fp8 時,啟用 `k_scale` 和 `v_scale` 的動態計算。如果為 `False`,如果可用,將從模型檢查點載入縮放因子。否則,縮放因子將預設為 1.0。

預設值: False

--kv-sharing-fast-prefill, --no-kv-sharing-fast-prefill

此功能正在開發中,當前啟用此標誌不會進行預填充最佳化。

在某些 KV 共享設定中,例如 YOCO (https://arxiv.org/abs/2405.05254),某些層可以跳過與預填充相對應的令牌。此標誌使符合條件的層的注意力元資料能夠被覆蓋,以實現在某些模型(例如 Gemma3n)中實現此最佳化所需的元資料。

預設值: False

--mamba-cache-dtype

可能的選項:auto, float16, float32

用於 Mamba 快取(包括 conv 和 ssm 狀態)的資料型別。如果設定為 'auto',資料型別將從模型配置中推斷。

預設值: auto

--mamba-ssm-cache-dtype

可能的選項:auto, float16, float32

用於 Mamba 快取(僅 ssm 狀態,conv 狀態仍由 mamba_cache_dtype 控制)的資料型別。如果設定為 'auto',ssm 狀態的資料型別將由 mamba_cache_dtype 決定。

預設值: auto

--mamba-block-size

Mamba 快取的連續快取塊大小(以令牌數量為單位)。僅在字首快取啟用時可設定。值必須是 8 的倍數,以與 causal_conv1d 核心對齊。

預設值: None

--kv-offloading-size

KV 快取解除安裝緩衝區的大小(以 GiB 為單位)。當 TP > 1 時,這是所有 TP 排名上的總緩衝區大小。預設情況下,此值設定為 None,表示未啟用 KV 解除安裝。當與 kv_offloading_backend 一起設定時,vLLM 將啟用 KV 快取解除安裝到 CPU。

預設值: None

--kv-offloading-backend

可選值: lmcache, native, None

用於 KV 快取解除安裝的後端。支援的後端包括 'native' (vLLM 原生 CPU 解除安裝)、'lmcache'。此選項必須與 kv_offloading_size 一起使用。

預設值: None

MultiModalConfig

控制多模態模型的行為。

--limit-mm-per-prompt

每個模態每個提示允許的最大輸入項和選項數。預設為每種模態 999。

舊格式(僅計數)

可配置格式(帶選項):{"video": {"count": 1, "num_frames": 32, "width": 512, "height": 512}, "image": {"count": 5, "width": 512, "height": 512}}

混合格式(結合兩者):{"image": 16, "video": {"count": 1, "num_frames": 32, "width": 512, "height": 512}}

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設值: {}

--enable-mm-embeds, --no-enable-mm-embeds

如果為 `True`,則啟用傳遞多模態嵌入:對於 `LLM` 類,這指的是 `multi_modal_data` 下的張量輸入;對於相容 OpenAI 的伺服器,這指的是內容為 `"type": "*_embeds"` 的聊天訊息。

警告:如果傳遞了錯誤形狀的嵌入,vLLM 引擎可能會崩潰。僅對受信任的使用者啟用此標誌!

預設值: False

--media-io-kwargs

傳遞給處理媒體輸入的額外引數,按模態鍵控。例如,要為影片設定 num_frames,設定 `--media-io-kwargs '{"video": {"num_frames": 40} }'`

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設值: {}

--mm-processor-kwargs

要轉發給模型處理多模態資料(例如影像處理器)的引數。覆蓋從 `transformers.AutoProcessor.from_pretrained` 獲取的多模態處理器的設定。

可用的覆蓋項取決於正在執行的模型。

例如,對於 Phi-3-Vision:`{"num_crops": 4}`。

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設值: None

--mm-processor-cache-gb

多模態處理器快取的大小(以 GiB 為單位),用於避免重新處理過去的多模態輸入。

此快取為每個 API 程序和引擎核心程序複製,導致總記憶體使用量為 `mm_processor_cache_gb * (api_server_count + data_parallel_size)`。

設定為 `0` 以完全停用此快取(不推薦)。

預設值: 4

--mm-processor-cache-type

可選值: lru, shm

用於多模態預處理器/對映器的快取型別。如果為 `shm`,使用共享記憶體 FIFO 快取。如果為 `lru`,使用映象 LRU 快取。

預設值: lru

--mm-shm-cache-max-object-size-mb

儲存在多模態處理器共享記憶體快取中每個物件的大小限制(以 MiB 為單位)。僅當 `mm_processor_cache_type` 為 `"shm"` 時有效。

預設值: 128

--mm-encoder-tp-mode

可選值: data, weights

指示如何使用張量並行 (TP) 最佳化多模態編碼器推理。

  • `"weights"`:在同一個 vLLM 引擎內,將每層的權重在 TP 排名之間分割。(預設 TP 行為)

  • `"data"`:在同一個 vLLM 引擎內,將批處理的輸入資料在 TP 排名之間分割以並行處理資料,同時在每個 TP 排名上託管完整的權重。此批處理級別的 DP 不應與 API 請求級別的 DP(由 `--data-parallel-size` 控制)混淆。這僅在每個模型的基礎上支援,如果編碼器不支援 DP,則回退到 `"weights"`。

預設值: weights

--mm-encoder-attn-backend

使用視覺 Transformer 時多模態編碼器注意力後端的可選覆蓋。接受來自 `vllm.attention.backends.registry.AttentionBackendEnum` 的任何值(例如 `FLASH_ATTN`)。

預設值: None

--interleave-mm-strings, --no-interleave-mm-strings

在使用 --chat-template-content-format=string 的同時,為多模態提示啟用完全交錯支援。

預設值: False

--skip-mm-profiling, --no-skip-mm-profiling

啟用時,跳過多模態記憶體分析,僅在引擎初始化期間使用語言主幹模型進行分析。

這減少了引擎啟動時間,但將估算多模態編碼器啟用和嵌入快取的峰值記憶體使用量的責任轉移給了使用者。

預設值: False

--video-pruning-rate

透過高效影片取樣設定影片修剪率。值在 [0;1) 範圍內,並確定要從每個影片中修剪的媒體令牌的分數。

預設值: None

LoRAConfig

LoRA 配置。

--enable-lora, --no-enable-lora

如果為 True,啟用對 LoRA 介面卡的處理。

預設值: None

--max-loras

單個批次中 LoRA 的最大數量。

預設值: 1

--max-lora-rank

可選值: 1, 8, 16, 32, 64, 128, 256, 320, 512

最大 LoRA 秩。

預設值: 16

--lora-dtype

LoRA 的資料型別。如果為 auto,將預設為基礎模型的資料型別。

預設值: auto

--max-cpu-loras

儲存在 CPU 記憶體中的最大 LoRA 數量。必須 >= `max_loras`。

預設值: None

--fully-sharded-loras, --no-fully-sharded-loras

預設情況下,只有一半的 LoRA 計算與張量並行進行分片。啟用此選項將使用完全分片的層。在高序列長度、最大秩或張量並行大小時,這可能會更快。

預設值: False

--default-mm-loras

將特定模態對映到 LoRA 模型路徑的字典;此欄位僅適用於多模態模型,並且當模型在給定模態存在時總是期望 LoRA 處於活動狀態時應加以利用。請注意,目前,如果請求提供多個附加模態,每個模態都有自己的 LoRA,我們不應用 default_mm_loras,因為我們目前每個提示只支援一個 lora 介面卡。在離線模式下執行時,n 個模態的 lora ID 將自動分配為 1-n,模態名稱按字母順序排列。

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設值: None

ObservabilityConfig

可觀察性配置 - 指標和追蹤。

--show-hidden-metrics-for-version

啟用自指定版本以來已隱藏的已棄用 Prometheus 指標。例如,如果一個先前已棄用的指標自 v0.7.0 版本以來已被隱藏,您可以使用 `--show-hidden-metrics-for-version=0.7` 作為臨時應急措施,同時遷移到新的指標。該指標很可能會在即將釋出的版本中完全移除。

預設值: None

--otlp-traces-endpoint

將傳送 OpenTelemetry 追蹤的目標 URL。

預設值: None

--collect-detailed-traces

可選值: all, model, worker, None, model,worker, model,all, worker,model, worker,all, all,model, all,worker

僅在設定了 `--otlp-traces-endpoint` 時設定此項才有意義。如果設定,它將為指定的模組收集詳細的追蹤。這涉及使用可能昂貴和/或阻塞的操作,因此可能會對效能產生影響。

請注意,為每個請求收集詳細的計時資訊可能會很昂貴。

預設值: None

--kv-cache-metrics, --no-kv-cache-metrics

啟用 KV 快取駐留指標(生命週期、空閒時間、重用間隔)。使用取樣來最小化開銷。需要啟用日誌統計資訊(即,未設定 --disable-log-stats)。

預設值: False

--kv-cache-metrics-sample

KV 快取指標的取樣率 (0.0, 1.0]。預設 0.01 = 1%% 的塊。

預設值: 0.01

--cudagraph-metrics, --no-cudagraph-metrics

啟用 CUDA 圖指標(填充/未填充令牌的數量、執行時 cudagraph 分派模式,以及它們在每個日誌記錄間隔觀察到的頻率)。

預設值: False

--enable-layerwise-nvtx-tracing, --no-enable-layerwise-nvtx-tracing

啟用逐層 NVTX 跟蹤。這會跟蹤模型中每個層或模組的執行,並將輸入/輸出形狀等資訊附加到 nvtx 範圍標記。請注意,這與 CUDA 圖啟用不相容。

預設值: False

--enable-mfu-metrics, --no-enable-mfu-metrics

啟用模型 FLOPs 利用率(MFU)指標。

預設值: False

SchedulerConfig

排程器配置。

--max-num-batched-tokens

單次迭代中要處理的最大令牌數。

此處的預設值主要是為了方便測試。在實際使用中,應在 `EngineArgs.create_engine_config` 中設定此值。

解析像 '1k', '2M' 等人類可讀的整數。包括帶小數乘數的小數值。

Examples:
- '1k' -> 1,000
- '1K' -> 1,024
- '25.6k' -> 25,600

預設值: None

--max-num-seqs

單次迭代中要處理的最大序列數。

此處的預設值主要是為了方便測試。在實際使用中,應在 `EngineArgs.create_engine_config` 中設定此值。

預設值: None

--max-num-partial-prefills

對於分塊預填充,可以同時部分預填充的最大序列數。

預設值: 1

--max-long-partial-prefills

對於分塊預填充,將同時預填充的、提示長度超過 long_prefill_token_threshold 的最大提示數。將此值設定得小於 max_num_partial_prefills 將允許較短的提示在某些情況下插隊到較長提示的前面,從而改善延遲。

預設值: 1

--long-prefill-token-threshold

對於分塊預填充,如果提示長度超過此令牌數,則請求被視為長請求。

預設值: 0

--scheduling-policy

可選值: fcfs, priority

要使用的排程策略

  • "fcfs" 表示先到先得,即按到達順序處理請求。

  • "priority" 表示根據給定的優先順序(值越小表示處理越早)和到達時間(決定平局)處理請求。

預設值: fcfs

--enable-chunked-prefill, --no-enable-chunked-prefill

如果為 True,可以根據剩餘的 `max_num_batched_tokens` 對預填充請求進行分塊。

此處的預設值主要是為了方便測試。在實際使用中,應在 `EngineArgs.create_engine_config` 中設定此值。

預設值: None

--disable-chunked-mm-input, --no-disable-chunked-mm-input

如果設定為 true 並且啟用了分塊預填充,我們不希望部分排程多模態項。僅在 V1 中使用。這確保瞭如果一個請求有混合提示(如文字令牌 TTTT 後跟影像令牌 IIIIIIIIII),其中只有部分影像令牌可以被排程(如 TTTTIIIII,剩下 IIIII),它將被排程為 TTTT 在一個步驟中,IIIIIIIIII 在下一個步驟中。

預設值: False

--scheduler-cls

要使用的排程器類。"vllm.v1.core.sched.scheduler.Scheduler" 是預設排程器。可以是一個類本身,也可以是 "mod.custom_class" 形式的類路徑。

預設值: None

--disable-hybrid-kv-cache-manager, --no-disable-hybrid-kv-cache-manager

如果設定為 True,KV 快取管理器將為所有注意力層分配相同大小的 KV 快取,即使存在多種型別的注意力層,如全注意力層和滑動視窗注意力層。如果設定為 None,則預設值將根據環境和啟動配置確定。

預設值: None

--async-scheduling, --no-async-scheduling

如果設定為 True,則執行非同步排程。這有助於避免 GPU 利用率的間隙,從而帶來更好的延遲和吞吐量。非同步排程目前不支援某些功能,如推測解碼和流水線並行。

預設值: False

--stream-interval

流式傳輸的間隔(或緩衝區大小),以令牌長度為單位。較小的值(1)透過立即傳送每個令牌使流式傳輸更平滑,而較大的值(例如 10)透過在傳送前批處理多個令牌來減少主機開銷並可能增加吞吐量。

預設值: 1

CompilationConfig

編譯配置。

You must pass CompilationConfig to VLLMConfig constructor.
VLLMConfig's post_init does further initialization. If used outside of the
VLLMConfig, some fields will be left in an improper state.

It has three parts:

- Top-level Compilation control:
    - [`mode`][vllm.config.CompilationConfig.mode]
    - [`debug_dump_path`][vllm.config.CompilationConfig.debug_dump_path]
    - [`cache_dir`][vllm.config.CompilationConfig.cache_dir]
    - [`backend`][vllm.config.CompilationConfig.backend]
    - [`custom_ops`][vllm.config.CompilationConfig.custom_ops]
    - [`splitting_ops`][vllm.config.CompilationConfig.splitting_ops]
    - [`compile_mm_encoder`][vllm.config.CompilationConfig.compile_mm_encoder]
- CudaGraph capture:
    - [`cudagraph_mode`][vllm.config.CompilationConfig.cudagraph_mode]
    - [`cudagraph_capture_sizes`]
    [vllm.config.CompilationConfig.cudagraph_capture_sizes]
    - [`max_cudagraph_capture_size`]
    [vllm.config.CompilationConfig.max_cudagraph_capture_size]
    - [`cudagraph_num_of_warmups`]
    [vllm.config.CompilationConfig.cudagraph_num_of_warmups]
    - [`cudagraph_copy_inputs`]
    [vllm.config.CompilationConfig.cudagraph_copy_inputs]
- Inductor compilation:
    - [`compile_sizes`][vllm.config.CompilationConfig.compile_sizes]
    - [`compile_ranges_split_points`]
        [vllm.config.CompilationConfig.compile_ranges_split_points]
    - [`inductor_compile_config`]
    [vllm.config.CompilationConfig.inductor_compile_config]
    - [`inductor_passes`][vllm.config.CompilationConfig.inductor_passes]
    - custom inductor passes

Why we have different sizes for cudagraph and inductor:
- cudagraph: a cudagraph captured for a specific size can only be used
    for the same size. We need to capture all the sizes we want to use.
- inductor: a graph compiled by inductor for a general shape can be used
    for different sizes. Inductor can also compile for specific sizes,
    where it can have more information to optimize the graph with fully
    static shapes. However, we find the general shape compilation is
    sufficient for most cases. It might be beneficial to compile for
    certain small batchsizes, where inductor is good at optimizing.

--cudagraph-capture-sizes

捕獲 cudagraph 的大小。- None (預設):捕獲大小從 vllm 配置中推斷。- list[int]:捕獲大小按給定值指定。

預設值: None

--max-cudagraph-capture-size

最大 cudagraph 捕獲大小。

如果指定了 cudagraph_capture_sizes,此值將設定為該列表中的最大大小(或在指定時檢查一致性)。如果未指定 cudagraph_capture_sizes,則會自動生成大小列表,遵循模式

[1, 2, 4] + list(range(8, 256, 8)) + list(
range(256, max_cudagraph_capture_size + 1, 16))

如果未指定,max_cudagraph_capture_size 預設為 min(max_num_seqs*2, 512)。這可以在記憶體緊張且 max_num_seqs 較小的情況下避免 OOM,並防止捕獲許多大型圖(>512),這會大大增加啟動時間而效能提升有限。

預設值: None

VllmConfig

包含所有 vllm 相關配置的資料類。這簡化了在程式碼庫中傳遞不同配置的過程。

--speculative-config

推測解碼配置。

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設值: None

--kv-transfer-config

分散式 KV 快取傳輸的配置。

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設值: None

--kv-events-config

事件釋出的配置。

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設值: None

--ec-transfer-config

分散式 EC 快取傳輸的配置。

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設值: None

--compilation-config, -cc

模型的 `torch.compile` 和 cudagraph 捕獲配置。

作為簡寫,可以透過 -cc.parameter=argument 附加編譯引數,例如 `-cc.mode=3` (與 `-cc='{"mode":3}'` 相同)。

您可以像這樣指定完整的編譯配置:`{"mode": 3, "cudagraph_capture_sizes": [1, 2, 4, 8]}`

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設:{'level': None, 'mode': None, 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': [], 'splitting_ops': None, 'compile_mm_encoder': False, 'compile_sizes': None, 'compile_ranges_split_points': None, 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': None, 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': None, 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': None, 'pass_config': {}, 'max_cudagraph_capture_size': None, 'dynamic_shapes_config': {'type': <DynamicShapesType.BACKED: 'backed'>, 'evaluate_guards': False}, 'local_cache_dir': None}

--attention-config, -ac

注意力配置。

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設:AttentionConfig(backend=None, flash_attn_version=None, use_prefill_decode_attention=False, flash_attn_max_num_splits_for_cuda_graph=32, use_cudnn_prefill=False, use_trtllm_ragged_deepseek_prefill=False, use_trtllm_attention=None, disable_flashinfer_prefill=False, disable_flashinfer_q_quantization=False)

--additional-config

用於指定平臺的附加配置。不同平臺可能支援不同的配置。請確保所用配置對您使用的平臺有效。內容必須是可雜湊的。

預設值: {}

--structured-outputs-config

結構化輸出配置。

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設:StructuredOutputsConfig(backend='auto', disable_fallback=False, disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False)

--profiler-config

分析配置。

應為有效的 JSON 字串或單獨傳遞的 JSON 鍵。

預設:ProfilerConfig(profiler=None, torch_profiler_dir='', torch_profiler_with_stack=True, torch_profiler_with_flops=False, torch_profiler_use_gzip=True, torch_profiler_dump_cuda_time_total=True, torch_profiler_record_shapes=False, torch_profiler_with_memory=False, ignore_frontend=False, delay_iterations=0, max_iterations=0)

--optimization-level

最佳化級別。這些級別透過啟動時間成本換取效能,-O0 啟動時間最短,-O3 效能最佳。預設使用 -O2。完整描述請參閱 OptimizationLevel。

預設:2