跳到內容

vLLM CLI 指南

vllm 命令列工具用於執行和管理 vLLM 模型。您可以透過以下命令檢視幫助資訊:

vllm --help

可用命令

vllm {chat,complete,serve,bench,collect-env,run-batch}

serve

啟動 vLLM OpenAI 相容 API 伺服器。

示例
# Start with a model
vllm serve meta-llama/Llama-2-7b-hf

# Specify the port
vllm serve meta-llama/Llama-2-7b-hf --port 8100

# Check with --help for more options
# To list all groups
vllm serve --help=listgroup

# To view a argument group
vllm serve --help=ModelConfig

# To view a single argument
vllm serve --help=max-num-seqs

# To search by keyword
vllm serve --help=max

# To view full help with pager (less/more)
vllm serve --help=page

選項

--headless

在無頭模式下執行。有關更多詳細資訊,請參閱多節點資料並行文件。

預設值:False

--api-server-count, -asc

要執行的 API 伺服器程序數量。

預設值:1

--config

從配置檔案讀取 CLI 選項。必須是包含以下選項的 YAML 檔案:https://docs.vllm.tw/en/latest/configuration/serve_args.html

預設值:None

--disable-log-stats

停用日誌統計。

預設值:False

--enable-prompt-adapter

[已廢棄] 提示介面卡已被移除。將此標誌設定為 True 或 False 不影響 vLLM 的行為。

預設值:False

--disable-log-requests

停用請求日誌記錄。

預設值:False

前端

OpenAI 相容前端伺服器的引數。

--host

主機名。

預設值:None

--port

埠號。

預設值:8000

--uvicorn-log-level

可選值:critical, debug, error, info, trace, warning

uvicorn 的日誌級別。

預設值:info

--disable-uvicorn-access-log, --no-disable-uvicorn-access-log

停用 uvicorn 訪問日誌。

預設值:False

--allow-credentials, --no-allow-credentials

允許憑據。

預設值:False

--allowed-origins

允許的源。

預設值:['*']

--allowed-methods

允許的方法。

預設值:['*']

--allowed-headers

允許的頭。

預設值:['*']

--api-key

如果提供,伺服器將要求在請求頭中包含此金鑰。

預設值:None

--lora-modules

LoRA 模組配置,可以是 'name=path' 格式或 JSON 格式或 JSON 列表格式。示例(舊格式):'name=path' 示例(新格式):{"name": "name", "path": "lora_path", "base_model_name": "id"}

預設值:None

--chat-template

指定模型的聊天模板檔案路徑,或單行形式的模板。

預設值:None

--chat-template-content-format

可選值:auto, openai, string

在聊天模板中渲染訊息內容的格式。

  • "string" 將內容渲染為字串。示例:"Hello World"
  • "openai" 將內容渲染為字典列表,類似於 OpenAI 架構。示例:[{"type": "text", "text": "Hello world!"}]

預設值:auto

--response-role

如果 request.add_generation_prompt=true,則返回的角色名稱。

預設值:assistant

--ssl-keyfile

SSL 金鑰檔案的檔案路徑。

預設值:None

--ssl-certfile

SSL 證書檔案的檔案路徑。

預設值:None

--ssl-ca-certs

CA 證書檔案。

預設值:None

--enable-ssl-refresh, --no-enable-ssl-refresh

當 SSL 證書檔案更改時重新整理 SSL 上下文。

預設值:False

--ssl-cert-reqs

是否需要客戶端證書(參見 stdlib ssl 模組)。

預設值:0

--root-path

當應用位於基於路徑的路由代理後時,FastAPI 的 root_path。

預設值:None

--middleware

應用於應用程式的額外 ASGI 中介軟體。我們接受多個 --middleware 引數。該值應為匯入路徑。如果提供函式,vLLM 將使用 @app.middleware('http') 將其新增到伺服器。如果提供類,vLLM 將使用 app.add_middleware() 將其新增到伺服器。

預設值:[]

--return-tokens-as-token-ids, --no-return-tokens-as-token-ids

當指定 --max-logprobs 時,將單個令牌表示為 'token_id:{token_id}' 形式的字串,以便識別無法進行 JSON 編碼的令牌。

預設值:False

--disable-frontend-multiprocessing, --no-disable-frontend-multiprocessing

如果指定,將在與模型服務引擎相同的程序中執行 OpenAI 前端伺服器。

預設值:False

--enable-request-id-headers, --no-enable-request-id-headers

如果指定,API 伺服器將向響應新增 X-Request-Id 頭。注意:在高 QPS 下這會影響效能。

預設值:False

--enable-auto-tool-choice, --no-enable-auto-tool-choice

如果指定,當 tool_choice='none' 時,在提示中排除工具定義。

預設值:False

--exclude-tools-when-tool-choice-none, --no-exclude-tools-when-tool-choice-none

為受支援的模型啟用自動工具選擇。使用 --tool-call-parser 指定要使用的解析器。

預設值:False

--tool-call-parser

可選值:deepseek_v3, glm45, granite-20b-fc, granite, hermes, hunyuan_a13b, internlm, jamba, kimi_k2, llama4_pythonic, llama4_json, llama3_json, minimax, mistral, phi4_mini_json, pythonic, qwen3_coder, xlam

根據您正在使用的模型選擇工具呼叫解析器。這用於將模型生成的工具呼叫解析為 OpenAI API 格式。--enable-auto-tool-choice 所必需。您可以從內建解析器中選擇任何選項,或透過 --tool-parser-plugin 註冊外掛。

預設值:None

--tool-parser-plugin

特殊的工具解析器外掛,用於將模型生成的工具解析為 OpenAI API 格式,此外掛中註冊的名稱可以在 --tool-call-parser 中使用。

預設值:``

--log-config-file

vllm 和 uvicorn 的日誌配置 JSON 檔案路徑

預設值:None

--max-log-len

日誌中列印的提示字元或提示 ID 號的最大數量。預設 None 表示無限制。

預設值:None

--disable-fastapi-docs, --no-disable-fastapi-docs

停用 FastAPI 的 OpenAPI 架構、Swagger UI 和 ReDoc 端點。

預設值:False

--enable-prompt-tokens-details, --no-enable-prompt-tokens-details

如果設定為 True,則在使用中啟用 prompt_tokens_details。

預設值:False

--enable-server-load-tracking, --no-enable-server-load-tracking

如果設定為 True,則在應用程式狀態中啟用跟蹤 server_load_metrics。

預設值:False

--enable-force-include-usage, --no-enable-force-include-usage

如果設定為 True,則在每個請求中都包含使用情況。

預設值:False

--enable-tokenizer-info-endpoint, --no-enable-tokenizer-info-endpoint

啟用 /get_tokenizer_info 端點。可能暴露聊天模板和其他分詞器配置。

預設值:False

ModelConfig

模型的配置。

--model

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

預設值:Qwen/Qwen3-0.6B

--task

可選值:auto, classify, draft, embed, embedding, generate, reward, score, transcription

模型要執行的任務。如果模型支援多個模型執行器,則此引數用於選擇要執行的模型執行器。

請注意,模型可能支援使用相同模型執行器的其他任務。

預設值:auto

--tokenizer

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

預設值:None

--tokenizer-mode

可選值:auto, custom, mistral, slow

分詞器模式

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

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

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

  • "custom" 將使用 --tokenizer 選擇預註冊的分詞器。

預設值: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

用於重現性的隨機種子。在 V0 中初始化為 None,但在 V1 中初始化為 0。

預設值:None

--hf-config-path

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

預設值:None

--allowed-local-media-path

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

預設值:``

--revision

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

預設值:None

--code-revision

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

預設值:None

--rope-scaling

RoPE 縮放配置。例如,{"rope_type":"dynamic","factor":2.0}

應為有效的 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'

預設值:{}

--rope-theta

RoPE theta。與 rope_scaling 一起使用。在某些情況下,更改 RoPE theta 可以提高縮放模型的效能。

預設值: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

預設值:None

--quantization, -q

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

預設值:None

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

是否始終使用 eager-mode PyTorch。如果為 True,我們將停用 CUDA 圖並始終以 eager 模式執行模型。如果為 False,我們將使用 CUDA 圖和 eager 執行的混合模式,以實現最大的效能和靈活性。

預設值:False

--max-seq-len-to-capture

CUDA 圖覆蓋的最大序列長度。當序列的上下文長度大於此值時,我們將回退到 eager 模式。此外,對於編碼器-解碼器模型,如果編碼器輸入的序列長度大於此值,我們將回退到 eager 模式。

預設值:8192

--max-logprobs

SamplingParams 中指定 logprobs 時返回的最大對數機率數。預設值來自 OpenAI Chat Completions API 的預設值。

預設值: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 表示應用這些處理器之後的值。

預設值: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_idsNone 作為提示。生成的輸出將包含令牌 ID。

預設值:False

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

如果為 True,則透過 prompt_embeds 鍵啟用將文字嵌入作為輸入。請注意,啟用此功能將使圖編譯所需時間加倍。

預設值:False

--served-model-name

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

預設值:None

--disable-async-output-proc

停用非同步輸出處理。這可能導致效能下降。

預設值:False

--config-format

可選值:auto, hf, mistral

要載入的模型配置格式

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

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

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

預設值:auto

--hf-token

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

預設值:None

--hf-overrides

如果為字典,則包含要轉發到 Hugging Face 配置的引數。如果為可呼叫物件,則呼叫它以更新 HuggingFace 配置。

預設值:{}

--override-neuron-config

初始化非預設神經元配置或覆蓋特定於神經元裝置的預設神經元配置,此引數將用於配置無法從 vllm 引數中收集的神經元配置。例如 {"cast_logits_dtype": "bfloat16"}

應為有效的 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'

預設值:{}

--override-pooler-config

初始化非預設池化配置或覆蓋池化模型的預設池化配置。例如 {"pooling_type": "mean", "normalize": false}

預設值: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 鍵。例如,以下引數集是等效的:

  • --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'

預設值:{}

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

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

預設值:False

--model-impl

可選值:auto, vllm, transformers

要使用的模型實現

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

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

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

預設值:auto

--override-attention-dtype

覆蓋注意力的 dtype

預設值: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 權重。

  • "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

--model-loader-extra-config

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

預設值:{}

--ignore-patterns

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

預設值:None

--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.org/docs/stable/generated/torch.load.html 中 map_location 的原始文件。

預設值:cpu

DecodingConfig

包含引擎解碼策略的資料類。

--guided-decoding-backend

可選值:auto, guidance, lm-format-enforcer, outlines, xgrammar

預設情況下,哪個引擎將用於引導式解碼(JSON 模式/正則表示式等)。使用 "auto" 時,我們將根據請求內容和後端庫當前支援的功能做出有傾向性的選擇,因此行為可能在每個版本中有所變化。

預設值:auto

--guided-decoding-disable-fallback, --no-guided-decoding-disable-fallback

如果為 True,vLLM 將在出錯時不再回退到其他後端。

預設值:False

--guided-decoding-disable-any-whitespace, --no-guided-decoding-disable-any-whitespace

如果為 True,模型在引導式解碼期間將不會生成任何空格。這僅支援 xgrammar 和 guidance 後端。

預設值:False

--guided-decoding-disable-additional-properties, --no-guided-decoding-disable-additional-properties

如果為 Trueguidance 後端將不會在 JSON 模式中使用 additionalProperties。這僅支援 guidance 後端,用於使其行為更好地與 outlinesxgrammar 對齊。

預設值:False

--reasoning-parser

可選值:deepseek_r1, glm45, granite, hunyuan_a13b, mistral, qwen3

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

預設值:``

ParallelConfig

分散式執行的配置。

--distributed-executor-backend

可選值:external_launcher, mp, ray, uni, None

用於分散式模型工作器的後端,可以是 "ray" 或 "mp"(多程序)。如果 pipeline_parallel_size 和 tensor_parallel_size 的乘積小於或等於可用 GPU 數量,將使用 "mp" 在單個主機上進行處理。否則,如果安裝了 Ray,將預設為 "ray",否則失敗。請注意,tpu 僅支援 Ray 進行分散式推理。

預設值:None

--pipeline-parallel-size, -pp

流水線並行組的數量。

預設值:1

--tensor-parallel-size, -tp

張量並行組的數量。

預設值: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

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

預設值:False

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

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

預設值:False

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

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

預設值:False

--num-redundant-experts

用於專家並行的冗餘專家數量。

預設值:0

--eplb-window-size

專家負載記錄的視窗大小。

預設值:1000

--eplb-step-interval

專家並行中重新安排專家的間隔。

請注意,如果此值大於 EPLB 視窗大小,則只有最後 eplb_window_size 步的指標將用於重新安排專家。

預設值:3000

--eplb-log-balancedness, --no-eplb-log-balancedness

記錄專家並行每一步的平衡性。預設關閉此功能,因為它會增加通訊開銷。

預設值:False

--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 呼叫中使用。

預設值:``

--enable-multimodal-encoder-data-parallel, --no-enable-multimodal-encoder-data-parallel

對視覺編碼器使用資料並行而不是張量並行。目前僅支援 LLama4

預設值:False

CacheConfig

KV 快取的配置。

--block-size

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

連續快取塊的令牌數量大小。在神經元裝置上,此引數被忽略並設定為 --max-model-len。在 CUDA 裝置上,僅支援塊大小不超過 32。在 HPU 裝置上,塊大小預設為 128。

此配置沒有靜態預設值。如果使用者未指定,它將在 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

--swap-space

每個 GPU 的 CPU 交換空間大小(GiB)。

預設值:4

--kv-cache-dtype

可選值:auto, fp8, 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)。

預設值:auto

--num-gpu-blocks-override

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

預設值:None

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

是否啟用字首快取。V0 預設停用。V1 預設啟用。

預設值:None

--prefix-caching-hash-algo

可選值:builtin, sha256, sha256_cbor_64bit

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

  • "builtin" 是 Python 的內建雜湊。

  • "sha256" 具有抗碰撞性但有一定開銷。此選項使用 Pickle 進行物件序列化,然後進行雜湊。

  • "sha256_cbor_64bit" 提供可重現、跨語言相容的雜湊。它使用規範 CBOR 序列化物件,並使用 SHA-256 進行雜湊。結果雜湊由 SHA-256 摘要的低 64 位組成。

預設值:builtin

--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_scalev_scale 的動態計算。如果為 False,則將從模型檢查點載入尺度(如果可用)。否則,尺度將預設為 1.0。

預設值:False

MultiModalConfig

控制多模態模型的行為。

--limit-mm-per-prompt

每個模態每條提示允許的最大輸入項數。對於每種模態,V0 預設為 1,V1 預設為 999。

例如,要允許每條提示最多 16 張圖片和 2 個影片:{"images": 16, "videos": 2}

應為有效的 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'

預設值:{}

--media-io-kwargs

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

應為有效的 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'

預設值:{}

--mm-processor-kwargs

覆蓋從 transformers.AutoProcessor.from_pretrained 獲取的多模態處理器。

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

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

應為有效的 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'

預設值:None

--disable-mm-preprocessor-cache, --no-disable-mm-preprocessor-cache

如果為 True,停用已處理多模態輸入的快取。

預設值:False

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

為多模態提示啟用完全交錯支援。

預設值:False

LoRAConfig

LoRA 的配置。

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

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

預設值:None

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

啟用 LoRA 介面卡的偏置。

預設值:False

--max-loras

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

預設值:1

--max-lora-rank

最大 LoRA 等級。

預設值:16

--lora-extra-vocab-size

LoRA 介面卡中可以存在的額外詞彙的最大大小(新增到基礎模型詞彙中)。

預設值:256

--lora-dtype

可選值:auto, bfloat16, float16

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

預設值: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 鍵。例如,以下引數集是等效的:

  • --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'

預設值:None

SpeculativeConfig

推測解碼的配置。

--speculative-config

推測解碼的配置。應為 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

SchedulerConfig

排程器配置。

--max-num-batched-tokens

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

此配置沒有靜態預設值。如果使用者未指定,它將在 EngineArgs.create_engine_config 中根據使用上下文進行設定。

預設值: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

--cuda-graph-sizes

Cuda 圖捕獲大小 1. 如果未提供,則預設設定為 [min(max_num_seqs * 2, 512)] 2. 如果提供一個值,則捕獲列表將遵循模式:[1, 2, 4] + [i for i in range(8, cuda_graph_sizes + 1, 8)] 3. 如果提供多個值(例如 1 2 128),則捕獲列表將遵循提供的列表。

預設值:[]

--long-prefill-token-threshold

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

預設值:0

--num-lookahead-slots

每個序列每步分配的預留槽位數量,超出已知令牌 ID。這用於推測解碼,以儲存可能或可能不被接受的令牌的 KV 啟用。

注意:這將在未來被推測配置取代;在此之前它用於啟用正確性測試。

預設值:0

--scheduler-delay-factor

在排程下一個提示之前,應用一個延遲(延遲因子乘以之前的提示延遲)。

預設值:0.0

--preemption-mode

可選值:recompute, swap, None

是否透過交換或重新計算執行搶佔。如果未指定,我們按如下方式確定模式:我們預設使用重新計算,因為它比交換開銷更低。但是,當序列組有多個序列(例如,束搜尋)時,目前不支援重新計算。在這種情況下,我們改用交換。

預設值:None

--num-scheduler-steps

每個排程器呼叫最大前向步數。

預設值:1

--multi-step-stream-outputs, --no-multi-step-stream-outputs

如果為 False,則多步將在所有步驟結束時流式輸出

預設值:True

--scheduling-policy

可選值:fcfs, priority

要使用的排程策略

  • "fcfs" 意味著先進先出,即請求按到達順序處理。

  • "priority" 意味著請求根據給定優先順序(值越低越早處理)和到達時間(決定任何平局)處理。

預設值:fcfs

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

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

預設值:None

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

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

預設值:False

--scheduler-cls

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

預設值:vllm.core.scheduler.Scheduler

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

如果設定為 True,即使存在多種注意力層(如全注意力層和滑動視窗注意力層),KV 快取管理器也將為所有注意力層分配相同大小的 KV 快取。

預設值:False

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

實驗性:如果設定為 True,則執行非同步排程。這可能有助於減少 CPU 開銷,從而改善延遲和吞吐量。但是,非同步排程目前不支援某些功能,例如結構化輸出、推測解碼和管道並行。

預設值:False

VllmConfig

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

--kv-transfer-config

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

應為有效的 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'

預設值:None

--kv-events-config

事件釋出的配置。

應為有效的 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'

預設值:None

--compilation-config, -O

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

作為簡寫,可以使用 -O 直接指定編譯級別 n-O3 等同於 -O.level=3(與 -O='{"level":3}' 相同)。目前,也支援 -O和 -O=,但未來可能會被更清晰的 -O語法取代。

注意:級別 0 是沒有任何最佳化的預設級別。級別 1 和 2 僅用於內部測試。級別 3 是生產推薦級別,也是 V1 中的預設級別。

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

應為有效的 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'

預設值:{"level":0,"debug_dump_path":"","cache_dir":"","backend":"","custom_ops":[],"splitting_ops":[],"use_inductor":true,"compile_sizes":null,"inductor_compile_config":{"enable_auto_functionalized_v2":false},"inductor_passes":{},"use_cudagraph":true,"cudagraph_num_of_warmups":0,"cudagraph_capture_sizes":null,"cudagraph_copy_inputs":false,"full_cuda_graph":false,"max_capture_size":null,"local_cache_dir":null}

--additional-config

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

預設值:{}

chat

透過執行中的 API 伺服器生成聊天補全。

# Directly connect to localhost API without arguments
vllm chat

# Specify API url
vllm chat --url http://{vllm-serve-host}:{vllm-serve-port}/v1

# Quick chat with a single prompt
vllm chat --quick "hi"

complete

透過執行中的 API 伺服器根據給定提示生成文字補全。

# Directly connect to localhost API without arguments
vllm complete

# Specify API url
vllm complete --url http://{vllm-serve-host}:{vllm-serve-port}/v1

# Quick complete with a single prompt
vllm complete --quick "The future of AI is"

bench

執行基準測試,包括線上服務延遲和離線推理吞吐量。

要使用基準測試命令,請使用 pip install vllm[bench] 安裝額外依賴項。

可用命令

vllm bench {latency, serve, throughput}

latency

對單批請求的延遲進行基準測試。

vllm bench latency \
    --model meta-llama/Llama-3.2-1B-Instruct \
    --input-len 32 \
    --output-len 1 \
    --enforce-eager \
    --load-format dummy

serve

對線上服務吞吐量進行基準測試。

vllm bench serve \
    --model meta-llama/Llama-3.2-1B-Instruct \
    --host server-host \
    --port server-port \
    --random-input-len 32 \
    --random-output-len 4  \
    --num-prompts  5

throughput

對離線推理吞吐量進行基準測試。

vllm bench throughput \
    --model meta-llama/Llama-3.2-1B-Instruct \
    --input-len 32 \
    --output-len 1 \
    --enforce-eager \
    --load-format dummy

collect-env

開始收集環境資訊。

vllm collect-env

run-batch

執行批次提示並將結果寫入檔案。

示例
# Running with a local file
vllm run-batch \
    -i offline_inference/openai_batch/openai_example_batch.jsonl \
    -o results.jsonl \
    --model meta-llama/Meta-Llama-3-8B-Instruct

# Using remote file
vllm run-batch \
    -i https://raw.githubusercontent.com/vllm-project/vllm/main/examples/offline_inference/openai_batch/openai_example_batch.jsonl \
    -o results.jsonl \
    --model meta-llama/Meta-Llama-3-8B-Instruct

更多幫助

有關任何子命令的詳細選項,請使用

vllm <subcommand> --help