vLLM 服务器参数


Red Hat AI Inference Server 3.2

运行 Red Hat AI Inference Server 的服务器参数

Red Hat AI Documentation Team

摘要

了解如何配置和运行 Red Hat AI Inference Server。

前言

Red Hat AI Inference Server 为 inference 服务提供 OpenAI 兼容 API 服务器。您可以使用参数控制服务器的行为。

第 1 章 关键 vLLM 服务器参数

您可以使用 4 个关键参数来配置在硬件上运行的 AI Inference 服务器:

  1. --tensor-parallel-size: 将您的模型分布到主机 GPU 中。
  2. --GPU-memory-utilization :调整模型权重、激活和 KV 缓存的加速器内存使用率。作为 0.0 到 1.0 的比例测量,默认为 0.9.例如,您可以将此值设置为 0.8,将 AI Inference Server 的 GPU 内存消耗限制为 80%。使用部署稳定的最大值来最大化吞吐量。
  3. --max-model-len: 限制模型的最大上下文长度,以令牌表示。如果模型的默认上下文长度太长,则将其设置为防止内存出现问题。
  4. --max-num-batched-tokens: 将令牌的最大批处理大小限制为每个步骤处理(以令牌表示)。增加这可以提高吞吐量,但可能会影响输出令牌延迟。

例如,要运行 Red Hat AI Inference Server 容器并使用 vLLM 提供模型,请根据需要运行以下命令更改服务器参数:

$ podman run --rm -it \
--device nvidia.com/gpu=all \
--security-opt=label=disable \
--shm-size=4GB -p 8000:8000 \
--userns=keep-id:uid=1001 \
--env "HUGGING_FACE_HUB_TOKEN=$HF_TOKEN" \
--env "HF_HUB_OFFLINE=0" \
-v ./rhaiis-cache:/opt/app-root/src/.cache \
registry.redhat.io/rhaiis/vllm-cuda-rhel9:3.2 \
--model RedHatAI/Llama-3.2-1B-Instruct-FP8 \
--tensor-parallel-size 2 \
--gpu-memory-utilization 0.8 \
--max-model-len 16384 \
--max-num-batched-tokens 2048 \
Copy to Clipboard Toggle word wrap

第 2 章 vLLM server usage

$ vllm [-h] [-v] {chat,complete,serve,bench,collect-env,run-batch}
Copy to Clipboard Toggle word wrap
chat
通过运行的 API 服务器生成 chat 完成。
complete
根据给定的 API 服务器提示生成文本完成。
serve
启动 vLLM OpenAI 兼容 API 服务器。
bench
vLLM bench 子命令.
collect-env
开始收集环境信息。
run-batch
运行批处理提示并将结果写入文件。

2.1. vllm serving 参数

vllm service 启动一个本地服务器来加载并提供语言模型。

2.1.1. JSON CLI 参数

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

2.1.2. 选项

2.1.2.1. --headless

在无头模式下运行。如需了解更多详细信息,请参阅多节点数据并行文档。

默认False

2.1.2.2. --api-server-count, -asc

要运行多少个 API 服务器进程。

默认1

2.1.2.3. --config

从配置文件读取 CLI 选项。必须是带有以下选项的 YAML :https://docs.vllm.ai/en/latest/configuration/serve_args.html

默认None

2.1.2.4. --disable-log-stats

禁用日志记录统计信息。

默认False

2.1.2.5. --enable-log-requests, --no-enable-log-requests

启用日志记录请求。

默认False

2.1.2.6. --disable-log-requests, --no-disable-log-requests
重要

这个参数已弃用。

禁用日志记录请求。

默认True

2.1.3. frontend

OpenAI 兼容前端服务器的参数。

2.1.3.1. --host

主机名.

默认None

2.1.3.2. --port

端口号。

默认8000

2.1.3.3. --uds

UNIX 域套接字路径.如果设置,则忽略 host 和 port 参数。

默认None

2.1.3.4. --uvicorn-log-level

可能的选项: critical,debug,error,info,trace,warning

uvicorn 的日志级别。

默认info

禁用 uvicorn 访问日志。

默认False

2.1.3.6. --allow-credentials, --no-allow-credentials

允许凭证。

默认False

2.1.3.7. --allowed-origins

允许的源。

默认['*']

2.1.3.8. --allowed-methods

允许的方法。

默认['*']

2.1.3.9. --allowed-headers

允许的标头。

默认['*']

2.1.3.10. --api-key

如果提供,服务器将需要其中一个密钥才能显示在标头中。

默认None

2.1.3.11. --lora-modules

LoRA 模块配置格式为 'name=path' 格式或 JSON 列表格式。示例(旧格式): 'name=path' 示例(新格式) :{name": "name", "path": "lora_path", "base_model_name": "id"}

默认None

2.1.3.12. --chat-template

到 chat 模板的文件路径,或指定模型的单行形式的模板。

默认None

2.1.3.13. --chat-template-content-format

可能的选项: autoopenai字符串

在聊天模板中呈现消息内容的格式。

  • "字符串"会将内容呈现为字符串。示例:" Hello World"
  • "openai"将内容呈现为字典列表,类似于 OpenAI 模式。示例: [{"type": "text", "text": "Hello world!"}]

默认auto

是否信任请求中提供的 chat 模板。如果 False,服务器始终使用由-chat -template 指定的 chat 模板,或者来自令牌程序的 chat 模板。

默认False

2.1.3.15. --response-role

如果 request.add_generation_prompt=true 则返回的角色名称。

默认 助手

2.1.3.16. --ssl-keyfile

SSL 密钥文件的文件路径。

默认None

2.1.3.17. --ssl-certfile

SSL 证书文件的文件路径。

默认None

2.1.3.18. --ssl-ca-certs

CA 证书文件。

默认None

2.1.3.19. --enable-ssl-refresh, --no-enable-ssl-refresh

当 SSL 证书文件更改时刷新 SSL 上下文

默认False

2.1.3.20. --ssl-cert-reqs

是否需要客户端证书(请参阅 stdlib ssl 模块)。

默认:0

2.1.3.21. --root-path

当应用程序位于基于路径的路由代理后面时,快速API root_path。

默认None

2.1.3.22. --middleware

应用到应用程序的附加 ASGI 中间件。我们接受多个 --middleware 参数。该值应该是导入路径。如果提供了函数,vLLM 将使用 @app.middleware ('http') 将其添加到服务器。如果提供了类,vLLM 将使用 app.add_middleware () 将其添加到服务器。

默认:[]

指定 when-max-logprobs 时,代表单个令牌作为字符串 'token_id:{token_id}',以便无法识别不是 JSON 影响的令牌。

默认False

如果指定,将在与模型服务引擎相同的过程中运行 OpenAI frontend 服务器。

默认False

如果指定,API 服务器会将 X-Request-Id 标头添加到响应中。

默认False

为支持的模型启用自动工具选择。use --tool-call-parser 用来指定要使用的解析器。

默认False

如果指定,排除工具定义在 tool_choice='none' 时提示。

默认False

2.1.3.28. --tool-call-parser

根据您使用的型号,选择工具调用解析器。这用于将模型生成的工具调用解析为 OpenAI API 格式。需要 for -enable-auto-tool-choice。您可以从内置解析器中选择任何选项,或者通过-- tool-parser-plugin 注册插件

默认None

2.1.3.29. --tool-parser-plugin

特殊工具解析器插件写入将模型生成的工具解析为 OpenAI API 格式,此插件中的名称注册可在 --tool-call-parser 中使用。

默认: ''

2.1.3.30. --tool-server

以逗号分隔的 host:port 对列表(IPv4、IPv6 或主机名)。示例: 127.0.0.1:8000, [::1]:8000, localhost:1234.或 demo 用于演示目的。

默认None

2.1.3.31. --log-config-file

vllm 和 uvicorn 日志记录配置 JSON 文件的路径

默认None

2.1.3.32. --max-log-len

在日志中打印的最大提示字符或提示 ID 号数。默认值 None 表示无限。

默认None

2.1.3.33. --disable-fastapi-docs, --no-disable-fastapi-docs

禁用 FastAPI 的 OpenAPI 模式、Swagger UI 和 ReDoc 端点。

默认False

如果设置为 True,请在 usage 中启用 prompt_tokens_details。

默认False

如果设置为 True,请在 app 状态中启用跟踪 server_load_metrics。

默认False

如果设置为 True,包括每个请求的使用情况。

默认False

启用 /get_tokenizer_info 端点。可能公开 chat 模板和其他令牌程序配置。

默认False

2.1.3.38. --enable-log-outputs, --no-enable-log-outputs

如果为 True,日志模型输出(生成)。需要 --enable-log-requests。

默认False

2.1.3.39. --h11-max-incomplete-event-size

h11 解析器不完整的 HTTP 事件(header 或 body)的最大大小(字节)。帮助缓解标头滥用。

默认:4194304 (4 MB)

2.1.3.40. --h11-max-header-count

h11 解析器请求中允许的最大 HTTP 标头数。帮助缓解标头 abuse.s

默认256

2.1.3.41. --log-error-stack, --no-log-error-stack

如果设置为 True,请记录错误响应的堆栈追踪

默认False

2.1.4. ModelConfig

模型的配置。

2.1.4.1. --model

要使用的 Hugging Face 模型的名称或路径。在未指定 served_ model_name 时,它也用作指标输出中 model_name 标签的内容。

默认Qwen/Qwen3-0.6B

2.1.4.2. --runner

可能的选项: auto,draft,generate,pooling

要使用的模型运行程序类型。每个 vLLM 实例只支持一个模型运行程序,即使同一模型可用于多种类型。

默认auto

2.1.4.3. --convert

可能的选项: auto, classify, embed,none,reward

使用 [vllm.model_executor.models.adapters][]. 中定义的适配器转换模型。最常见的用例是调整用于池任务的文本生成模型。

默认auto

2.1.4.4. --task

可能的选项: auto,classify,draft,embed,embedding,generate,reward,score,transcription,None

重要

这个参数已弃用。

使用模型的任务。如果模型支持多个模型运行程序,这将用于选择要运行的模型运行程序。

请注意,该模型可能会支持使用相同模型运行程序的其他任务。

默认None

2.1.4.5. --tokenizer

要使用的 Hugging Face tokenizer 的名称或路径。如果未指定,则使用模型名称或路径。

默认None

2.1.4.6. --tokenizer-mode

可能的选项: auto,custom,mistral,slow

Tokenizer 模式:

  • "auto"将使用快速令牌程序(如果可用)。
  • "slow" 将始终使用较慢的令牌程序。
  • "mistral" 将始终使用 mistral_common 中的令牌程序。
  • "custom" 将使用 --tokenizer 选择预注册的令牌工具程序。

默认auto

2.1.4.7. --trust-remote-code, --no-trust-remote-code

下载模型和令牌程序时,信任远程代码(例如,来自 HuggingFace)。

默认False

2.1.4.8. --dtype

可能的选项: auto,bfloat16, float, float16,float32,half

模型权重和激活的数据类型:

  • "auto"将为 FP32 和 FP16 模型使用 FP16 精度,并将 BF16 精度用于 BF16 模型。
  • FP16 的"半"建议 AWQ 量化。
  • "float16"与 "half" 相同。
  • "bfloat16",代表精度和范围之间的平衡。
  • "浮点"的缩写为 FP32 精度。
  • "float32"表示 FP32 精度。

默认auto

2.1.4.9. --seed

随机 seed 以实现可重复性。在 V0 中初始化为 None,但在 V1 中初始化为 0。

默认None

2.1.4.10. --hf-config-path

要使用的 Hugging Face 配置的名称或路径。如果未指定,则使用模型名称或路径。

默认None

2.1.4.11. --allowed-local-media-path

允许 API 请求从服务器文件系统指定的目录中读取本地镜像或视频。这是一个安全风险。应该只在可信环境中启用。

默认: ''

2.1.4.12. --allowed-media-domains

如果设置,则只有属于此域的介质 URL 才能用于多模式输入。

默认None

2.1.4.13. --revision

要使用的特定模型版本。它可以是分支名称、标签名称或提交 id。如果未指定,将使用默认版本。

默认None

2.1.4.14. --code-revision

用于 Hugging Face Hub 上模型代码的特定修订版本。它可以是分支名称、标签名称或提交 id。如果未指定,将使用默认版本。

默认None

2.1.4.15. --rope-scaling

RoPE 扩展配置.例如: {"rope_type":"dynamic","factor":2.0}

应该是有效的 JSON 字符串或 JSON 密钥。

默认 :{}

2.1.4.16. --rope-theta

RoPE 达州.与 rope_scaling 一起使用。在某些情况下,更改 RoPE 可提高扩展模型的性能。

默认None

2.1.4.17. --tokenizer-revision

用于 Hugging Face Hub 上令牌程序的特定修订版本。它可以是分支名称、标签名称或提交 id。如果未指定,将使用默认版本。

默认None

2.1.4.18. --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
Copy to Clipboard Toggle word wrap

默认None

2.1.4.19. --quantization, -q

用于量化权重的方法。如果没有,则首先检查模型配置文件中的 quantization_config 属性。如果是 None,则假设模型权重不会量化,并使用 dtype 来确定权重的数据类型。

默认None

2.1.4.20. --enforce-eager, --no-enforce-eager

是否总是使用 eager-mode PyTorch。如果为 True,我们将禁用 CUDA 图形,并始终以 eager 模式执行模型。如果为 False,我们将在混合中使用 CUDA 图形和 eager 的执行,以获得最大性能和灵活性。

默认False

2.1.4.21. --max-logprobs

logprobsSamplingParams 中指定时,要返回的最大日志数量。默认值是 OpenAI Chat Completions API 的默认值。-1 代表没有上限,例如 all (output_length * vocab_size) logprobs,可能会导致 OOM。

默认 :20

2.1.4.22. --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 意味着在应用任何日志处理器之前的值,如错误的单词。processed 表示应用所有处理器后的值,包括温度和 top_k/top_p。

默认raw_logprobs

是否禁用滑动窗口。如果为 True,我们将禁用模型的滑动窗口功能,上限为 sliding 窗口大小。如果模型不支持滑动窗口,则忽略此参数。

默认False

2.1.4.24. --disable-cascade-attn, --no-disable-cascade-attn

对 V1 禁用级关注。虽然级联的关注不会更改数学正确性,但禁用它对于防止潜在的数字问题非常有用。请注意,即使将其设置为 False,仅当性能告诉其好处时,才会使用级联的关注。

默认False

2.1.4.25. --skip-tokenizer-init, --no-skip-tokenizer-init

跳过令牌程序和解码初始化。预期从输入中有效的 prompt_token_idsNone 以提示。生成的输出将包含令牌 ID。

默认False

2.1.4.26. --enable-prompt-embeds, --no-enable-prompt-embeds

如果为 True,启用通过 prompt_embeds 键传递文本以输入形式。请注意,启用这将加倍图形编译所需的时间。

默认False

2.1.4.27. --served-model-name

API 中使用的模型名称。如果提供了多个名称,服务器将响应任何提供的名称。响应的 model 字段中的型号名称将是此列表中的名字。如果没有指定,模型名称将与 the- model 参数相同。请注意,如果提供了多个名称,则此名称也会在 prometheus 指标的 model_name 标签内容中使用,则 metrics 标签将采用第一个名称。

默认None

2.1.4.28. --config-format

可能的选项: auto,hf,mistral

要载入的模型配置的格式:

  • "auto"将尝试以 hf 格式加载配置(如果可用),否则它将尝试以 mistral 格式加载。
  • "HF"将以 hf 格式加载配置。
  • "mistral"将加载 mistral 格式的配置。

默认auto

2.1.4.29. --hf-token

用作远程文件的 HTTP bearer 授权的令牌。如果为 True,将使用在运行 huggingface-cli 登录时 生成的令牌(以 ~/.huggingface形式存储)。

默认None

2.1.4.30. --hf-overrides

如果字典,包含要转发到 Hugging Face 配置的参数。如果可以调用,则会调用它来更新 HuggingFace 配置。

默认 :{}

2.1.4.31. --pooler-config

池配置,控制池模型中输出池的行为。

应该是有效的 JSON 字符串或 JSON 密钥。

默认None

2.1.4.32. --override-pooler-config
重要

这个参数已弃用。

使用 pooler_config 替代。此字段将在 v0.12.0 或 v1.0.0 中删除,以更早为准。

应该是有效的 JSON 字符串或 JSON 密钥。

默认None

2.1.4.33. --logits-processor-pattern

可选正则表达式模式指定可以使用 logits_processors extra completion 参数传递的有效日志限定名称。默认为 None,不允许任何处理器。

默认None

2.1.4.34. --generation-config

生成配置的文件夹路径。默认为 "auto",生成配置将从模型路径加载。如果设置为 "vllm",则不会加载生成配置,则使用 vLLM 默认值。如果设置为文件夹路径,则生成配置将从指定的文件夹路径加载。如果在生成配置中指定了 max_new_tokens,它会为所有请求设置服务器端令牌数量。

默认auto

2.1.4.35. --override-generation-config

覆盖或设置生成配置。例如: {"temperature": 0.5}。如果与 -generation-config auto 一起使用,则覆盖参数将与模型中的默认配置合并。如果与 -generation-config vllm 一起使用,则只使用覆盖参数。

应该是有效的 JSON 字符串或 JSON 密钥。

默认 :{}

2.1.4.36. --enable-sleep-mode, --no-enable-sleep-mode

为引擎启用睡眠模式(只支持 CUDA 平台)。

默认False

2.1.4.37. --model-impl

可能的选项: auto,terratorch,transformers,vllm

要使用哪个模型实现:

  • "auto"将尝试使用 vLLM 实施(如果存在),并在没有 vLLM 实施时回退到 Transformers 实施。
  • "vllm"将使用 vLLM 模型实施。
  • "转换器"将使用 Transformers 模型实施。
  • "terratorch"将使用 TerraTorch 模型实施。

默认auto

2.1.4.38. --override-attention-dtype

覆盖 dtype 以备注意

默认None

2.1.4.39. --logits-processors

一个或多个处理器的完全限定域名或类定义

默认None

2.1.4.40. --io-processor-plugin

在模型启动时载入的 IOProcessor 插件名称

默认None

2.1.5. LoadConfig

加载模型权重的配置。

2.1.5.1. --load-format

要载入的模型权重的格式:

  • "auto"将尝试以安全编写器格式加载权重,并在 securetensors 格式不可用时回退到 pytorch bin 格式。
  • "pt" 将以 pytorch bin 格式加载权重。
  • "safetensors"将以更安全的格式加载权重。
  • "npcache"将以 pytorch 格式加载权重,并存储 numpy 缓存以加快加载。
  • "dummy"将使用随机值初始化权重,这主要用于性能分析。
  • "tensorizer"将使用 CoreWeave 的十个程序库进行快速权重加载。如需更多信息,请参阅 Examples 部分中的 Tensorize vLLM Model 脚本。
  • "runai_streamer"将使用 Run:ai Model Streamer 加载 Safetensors 权重。
  • "bitsandbytes"将使用位字节量来加载权重。
  • "sharded_state" 将从预先分片的检查点文件中加载权重,支持有效地加载 10sor-parallel 模型。
  • "Gguf"将加载来自 GGUF 格式的文件的权重(在 https://github.com/ggml-org/ggml/blob/master/docs/gguf.md中指定)。
  • "mistral" 将加载来自 Mistral 模型使用的合并安全者文件的权重。
  • 其他自定义值可以通过 插件支持。

默认auto

2.1.5.2. --download-dir

用于下载和加载权重的目录,默认为 Hugging Face 的默认缓存目录。

默认None

2.1.5.3. --safetensors-load-strategy

指定安全攻击权重的加载策略。

  • "lazy" (默认):Wights 是从文件中映射的内存。这可实现按需加载,并对本地存储上的模型具有高效率。
  • "eager": 整个文件在加载前预先读取 CPU 内存。建议对网络文件系统(例如,Lustre、NFS)上的模型进行模型,因为它避免了低效的随机读取,从而显著提高了模型初始化。但是,它使用更多 CPU RAM。

默认lazy

2.1.5.4. --model-loader-extra-config

模型加载程序的额外配置。这将传递给与所选 load_format 对应的模型加载程序。

默认 :{}

2.1.5.5. --ignore-patterns

加载模型时要忽略的模式列表。默认为 "original/*/",以避免重复加载 llama 的检查点。

默认None

2.1.5.6. --use-tqdm-on-load, --no-use-tqdm-on-load

是否在加载模型权重时启用 tqdm 显示进度条。

默认True

2.1.5.7. --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 原始 doc

默认cpu

2.1.6. StructuredOutputsConfig

包含引擎的结构化输出配置的 Dataclass。

2.1.6.1. --reasoning-parser

可能的选项: deepseek_r1,glm45,openai_gptoss,granite,hunyuan_a13b,mistral,qwen3,seed_oss,step3

根据您使用的型号,选择原因解析器。这用于将内容解析为 OpenAI API 格式。

默认: ''

2.1.6.2. --guided-decoding-backend
重要

这个参数已弃用。

--Guided-decoding-backend 将在 v0.12.0 中删除。

默认None

2.1.6.3. --guided-decoding-disable-fallback
重要

这个参数已弃用。

--Guided-decoding-disable-fallback 将在 v0.12.0 中删除。

默认None

2.1.6.4. --guided-decoding-disable-any-whitespace
重要

这个参数已弃用。

--Guided-decoding-disable-any-whitespace 将在 v0.12.0 中删除。

默认None

2.1.6.5. --guided-decoding-disable-additional-properties
重要

这个参数已弃用。

--Guided-decoding-disable-additional-properties 将在 v0.12.0 中删除。

默认None

2.1.7. ParallelConfig

分布式执行配置。

2.1.7.1. --distributed-executor-backend

可能的选择: external_launcher,mp,ray,uni

用于分布式模型 worker 的后端,可以是 "ray" 或 "mp" (多处理)。如果 pipeline_parallel_size 和 10sor_parallel_size 的产品小于或等于可用的 GPU 数,则将使用"mp"在单个主机上保持处理。否则,如果安装了 Ray,则默认为 "ray",否则会失败。请注意,tpu 仅支持分布式推销的 Ray。

默认None

2.1.7.2. --pipeline-parallel-size, -pp

管道并行组数量。

默认1

2.1.7.3. --tensor-parallel-size, -tp

十个并行组的数量。

默认1

2.1.7.4. --decode-context-parallel-size, -dcp

解码上下文并行组的数量,因为全局大小不会由 dcp 更改,只需要重复使用 TP 组的 GPU,tp_size 需要被 dcp_size 分离。

默认1

2.1.7.5. --data-parallel-size, -dp

数据并行组数量。moe 层将根据数十个并行大小和数据并行大小的产品进行分片。

默认1

2.1.7.6. --data-parallel-rank, -dpn

此实例的数据并行等级。设置后,启用外部负载均衡器模式。

默认None

2.1.7.7. --data-parallel-start-rank, -dpr

为二级节点启动数据并行等级。

默认None

2.1.7.8. --data-parallel-size-local, -dpl

此节点上运行的数据并行副本数。

默认None

2.1.7.9. --data-parallel-address, -dpa

数据并行集群头节点地址。

默认None

2.1.7.10. --data-parallel-rpc-port, -dpp

数据并行 RPC 通信的端口。

默认None

2.1.7.11. --data-parallel-backend, -dpb

数据并行的后端,可以是 "mp" 或 "ray"。

默认mp

是否使用 "hybrid" DP LB 模式。仅适用于在线服务,以及 data_parallel_size > 0 时。启用以"per-node"为基础运行 AsyncLLM 和 API 服务器,其中 vLLM 负载均衡本地数据并行等级,但 vLLM 节点/副本之间有一个外部 LB 平衡。明确与 --data-parallel-start-rank 结合使用。

默认False

对于 MoE 层,使用专家并行性而不是十个并行性。

默认False

2.1.7.14. --enable-dbo, --no-enable-dbo

为模型执行器启用双批处理重叠。

默认False

2.1.7.15. --dbo-decode-token-threshold

双批处理重叠的阈值仅包含解码。如果请求中的令牌数量大于这个阈值,则会使用 microbatching。否则,请求将在单个批处理中进行处理。

默认32

2.1.7.16. --dbo-prefill-token-threshold

双批处理重叠的阈值,用于包含一个或多个预先填充的批处理。如果请求中的令牌数量大于这个阈值,则会使用 microbatching。否则,请求将在单个批处理中进行处理。

默认 :512

2.1.7.17. --enable-eplb, --no-enable-eplb

为 MoE 层启用专家并行负载平衡。

默认False

2.1.7.18. --eplb-config

专家并行配置。

应该是有效的 JSON 字符串或 JSON 密钥。

默认:EPLBConfig (window_size=1000, step_interval=3000, num_redundant_experts=0, log_balancedness=False)

2.1.7.19. --expert-placement-strategy

可能的选项: linear,round_robin

MoE 层的专家放置策略:

  • "线性":是以连续的方式放置的。例如,在 4 个专家和 2 个排名中,排名 0 将拥有专家 [0、1],并将有专家 [2, 3]。
  • "ROUND_ROBIN":ADDRESSs 以轮循方式放置。例如,在 4 个专家和 2 个排名中,0 位将拥有专家 [0、2],并将有专家 [1, 3]。此策略有助于在没有冗余专家的情况下,为分组的专家模型提高负载平衡。

默认linear

2.1.7.20. --num-redundant-experts
重要

这个参数已弃用。

--num-redundant-experts 将在 v0.12.0 中删除。

默认None

2.1.7.21. --eplb-window-size
重要

这个参数已弃用。

--eplb-window-size 将在 v0.12.0 中删除。

默认None

2.1.7.22. --eplb-step-interval
重要

这个参数已弃用。

--eplb-step-interval 将在 v0.12.0 中删除。

默认None

重要

这个参数已弃用。

--eplb-log-balancedness 将在 v0.12.0 中删除。

默认None

2.1.7.24. --max-parallel-loading-workers

当在多个批处理中按顺序加载模型时,并行加载 worker 的最大数量。避免在使用 10sor 并行和大型模型时的 RAM OOM。

默认None

是否使用 nsight 对 Ray worker 进行性能分析,请参阅 https://docs.ray.io/en/latest/ray-observability/user-guides/profiling.html#profiling-nsight-profiler

默认False

禁用自定义 all-reduce 内核,并回退到 NCCL。

默认False

2.1.7.27. --worker-cls

要使用的 worker 类的完整名称。如果为 "auto",则会根据平台确定 worker 类。

默认auto

2.1.7.28. --worker-extension-cls

要使用的 worker 扩展类的完整名称。worker 扩展类由 worker 类动态继承。这用于注入 worker 类的新属性和方法,以便在 collective_rpc 调用中使用。

默认: ''

2.1.7.29. --enable-multimodal-encoder-data-parallel

默认False

2.1.8. CacheConfig

配置 KV 缓存。

2.1.8.1. --block-size

可能的选项: 1、 8163264128

令牌数中连续缓存块的大小。在 CUDA 设备中,只支持块大小最多 32 个。

这个配置没有静态默认值。如果用户未指定,它将根据当前平台在 Platform.check_and_update_config () 中设置。

默认None

2.1.8.2. --gpu-memory-utilization

用于模型 executor 的 GPU 内存的比例,范围从 0 到 1。例如,值 0.5 会意味着 50%% 的 GPU 内存使用率。如果未指定,将使用默认值 0.9.这是一个针对每个实例的限制,仅适用于当前的 vLLM 实例。如果您有另一个 vLLM 实例在同一 GPU 上运行,则无关紧要。例如,如果您在同一 GPU 上运行两个 vLLM 实例,您可以将每个实例的 GPU 内存使用率设置为 0.5。

默认:0.9

2.1.8.3. --kv-cache-memory-bytes

每个 GPU 的 KV 缓存大小(以字节为单位)。默认情况下,设置为 None,vllm 可以根据 gpu_memory_utilization 自动推断 kv 缓存大小。但是,用户可能希望手动指定 kv 缓存内存大小。kv_cache_memory_bytes 允许更多地控制与使用 gpu_memory_memory_utilization 相比使用多少内存。请注意,kv_cache_memory_bytes (当 not-None)忽略 gpu_memory_utilization

解析人类可读的整数,如 '1k'、'2M' 等。包含十进制倍数的十进制值。

Examples:
- '1k' -> 1,000
- '1K' -> 1,024
- '25.6k' -> 25,600
Copy to Clipboard Toggle word wrap

默认None

2.1.8.4. --swap-space

每个 GPU 的 CPU 交换空间大小(以 GiB 为单位)。

默认4

2.1.8.5. --kv-cache-dtype

可能的选项: auto,bfloat16,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)。有些模型(即 DeepSeekV3.2)默认为 fp8,设置为 bfloat16 以使用 bfloat16,这是对没有默认为 fp8 的模型的无效选项。

默认auto

2.1.8.6. --num-gpu-blocks-override

要使用的 GPU 块数。如果指定,这将覆盖 profiled num_gpu_blocks。如果没有,则 什么都不做。用于测试抢占。

默认None

是否启用前缀缓存。默认启用 V1。

默认None

2.1.8.8. --prefix-caching-hash-algo

可能的选项: sha256,sha256_cbor

为前缀缓存设置哈希算法:

  • "sha256"在哈希前将 Pickle 用于对象序列化。
  • "sha256_cbor"提供可重复生成的、跨语言兼容哈希。它使用规范 CBOR 序列化对象,并使用 SHA-256 进行哈希处理。

默认sha256

2.1.8.9. --cpu-offload-gb

GiB 中每个 GPU 卸载 CPU 的空间。默认值为 0,表示没有卸载。直观地,此参数可以被看成一种增加 GPU 内存大小的虚拟方式。例如,如果您有一个 24 GB GPU 并把它设置为 10,则虚拟您可以将其视为 34 GB GPU。然后,您可以使用 BF16 权重加载 13B 模型,它至少需要 26GB GPU 内存。请注意,这需要快速 CPU-GPU 互连,因为模型部分是从 CPU 内存加载到每个模型转发传递的 GPU 内存。

默认:0

2.1.8.10. --calculate-kv-scales, --no-calculate-kv-scales

这可启用 k_scalev_scale 的动态计算,当 kv_cache_dtype 为 fp8 时。如果为 False,则会从模型检查点加载扩展(如果可用)。否则,扩展将默认为 1.0。

默认False

此功能正在进行中,目前没有启用此标志的预填充优化。

在一些 KV 共享设置中,如 YOCO (https://arxiv.org/abs/2405.05254),一些层可以跳过与预先填充对应的令牌。此标志支持通过在某些模型(如 Gemma3n)中实施此优化所需的元数据覆盖符合条件的层的元数据。

默认False

2.1.8.12. --mamba-cache-dtype

可能的选项: auto,float32

用于 Mamba 缓存的数据类型( conv 和 sm 状态)。如果设置为 'auto',则数据类型将从模型配置中推断出来。

默认auto

2.1.8.13. --mamba-ssm-cache-dtype

可能的选项: auto,float32

用于 Mamba 缓存的数据类型(仅sm 状态,conv 状态仍将由 mamba_cache_dtype 控制)。如果设置为 'auto',ssm 状态的数据类型将由 mamba_cache_dtype 决定。

默认auto

2.1.9. MultiModalConfig

控制多模式模型的行为。

2.1.9.1. --limit-mm-per-prompt

每个提示的每个输入项目允许的最大输入数。对于每个模态,默认为 1 (V0)或 999 (V1)。

例如,每个提示允许最多 16 个镜像和 2 个视频: {"image": 16, "video": 2}

应该是有效的 JSON 字符串或 JSON 密钥。

默认 :{}

2.1.9.2. --media-io-kwargs

传递给进程介质输入的额外参数,按模态键。例如,要为视频设置 num_frames,set --media-io-kwargs '{"video": {"num_frames": 40} }'

应该是有效的 JSON 字符串或 JSON 密钥。

默认 :{}

2.1.9.3. --mm-processor-kwargs

要转发到模型处理器的参数,用于多模式数据,如镜像处理器。从 transformers.AutoProcessor.from_pretrained 获取的多模式处理器覆盖。

可用的覆盖取决于正在运行的模型。

例如,对于 Phi-3-Vision: {"num_crops": 4}

应该是有效的 JSON 字符串或 JSON 密钥。

默认None

2.1.9.4. --mm-processor-cache-gb

多模式处理器缓存的大小(以 GiB 为单位),用于避免重新处理以前的多模式输入。

这个缓存会为每个 API 进程和引擎核心进程重复,从而导致 mm_processor_cache_gb *(api_server_count + data_parallel_size) 的内存用量总量。

设置为 0 以完全禁用此缓存(不推荐)。

默认4

2.1.9.5. --disable-mm-preprocessor-cache

默认False

2.1.9.6. --mm-processor-cache-type

可能的选项: lru,shm

用于多模式预处理器/映射的缓存类型。如果 shm,请使用共享内存 FIFO 缓存。如果 lru,则使用镜像的 LRU 缓存。

默认lru

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

存储在多模式处理器共享内存缓存中的每个对象的大小限制(以 MiB 为单位)。仅在 mm_processor_cache_type"shm" 时有效。

默认 :128

2.1.9.8. --mm-encoder-tp-mode

可能的选项: 数据权重

指明如何使用 10sor parallelism (TP)优化多模式编码器。

  • "weights": 在相同的 vLLM 引擎中,在 TP 中分割每个层的权重。(默认 TP 行为)
  • "数据" :在同一 vLLM 引擎中,在 TP 中分割批处理输入数据以并行处理数据,同时在每个 TP 等级上托管完全权重。此批处理级别 DP 无法与 API 请求级别 DP 混淆(由 数据提供可比并行大小控制)。这只在每个模型中被支持,如果编码器不支持 DP,则回退到 "weights "。

默认:weights

在使用 --chat-template-content-format=string 时,启用对多模式提示的完全交错支持。

默认False

2.1.9.10. --skip-mm-profiling, --no-skip-mm-profiling

启用后,在引擎初始化过程中跳过多模式内存配置集,以及仅使用语言主模型的配置文件。

这减少了引擎启动时间,但将责任转移到用户,以估算多模式编码器激活和嵌入缓存的峰值内存用量。

默认False

2.1.9.11. --video-pruning-rate

通过 Efficient Video Sampling 为视频修剪设置修剪率。值位于范围 [0;1),并确定要修剪每个视频中介质令牌的比例。

默认None

2.1.10. LoRAConfig

LoRA 配置.

2.1.10.1. --enable-lora, --no-enable-lora

如果为 True,启用对 LoRA 适配器的处理。

默认None

2.1.10.2. --enable-lora-bias, --no-enable-lora-bias
重要

这个参数已弃用。

为 LoRA 适配器启用 bias。这个选项将在 v0.12.0 中删除。

默认False

2.1.10.3. --max-loras

单个批处理中的最大 LoRA 数。

默认1

2.1.10.4. --max-lora-rank

最大 LoRA 排名.

默认16

2.1.10.5. --lora-extra-vocab-size

(已弃用)可在 LoRA 适配器显示的额外 vocabulary 的最大大小。将在 v0.12.0 中删除。

默认256

2.1.10.6. --lora-dtype

可能的选项: auto,bfloat16,float16

LoRA 的数据类型.如果为 auto,则默认为 base model dtype。

默认auto

2.1.10.7. --max-cpu-loras

在 CPU 内存中存储的最大 LoRA 数。必须是 >= 大于 max_loras

默认None

2.1.10.8. --fully-sharded-loras, --no-fully-sharded-loras

默认情况下,只有一半的 LoRA 计算使用 10sor parallelism 进行分片。启用这将使用完全分片的层。在高序列长度中,最大排名或几十个并行大小可能更快。

默认False

2.1.10.9. --default-mm-loras

字典将特定的模式映射到 LoRA 模型路径;该字段仅适用于多模式模型,当模型始终需要给定模态时,应该利用 LoRA。请注意,如果请求提供了多个额外的模式,则每个请求都有自己的 LoRA,我们不会应用 default_mm_loras,因为我们目前对每个提示只支持一个 lora 适配器。在离线模式下运行时,n modalities 的 lora ID 将使用字母顺序中的模态名称自动分配给 1-n。

应该是有效的 JSON 字符串或 JSON 密钥。

默认None

2.1.11. ObservabilityConfig

可观察性配置 - 指标和追踪。

2.1.11.1. --show-hidden-metrics-for-version

启用自指定版本后隐藏的已弃用的 Prometheus 指标。例如,自 v0.7.0 发布以来,如果之前已弃用的指标已被隐藏,您可以在 迁移到新指标时,使用--show-hidden-metrics-for-version=0.7 作为临时转义。指标可能会在即将推出的发行版本中完全删除。

默认None

2.1.11.2. --otlp-traces-endpoint

将 OpenTelemetry 跟踪发送到的目标 URL。

默认None

2.1.11.3. --collect-detailed-traces

可能的选项: all,model,worker,None,model,worker,model,all,worker,model,worker,all,all,model,all,worker

仅在设置了 if- otlp-traces-endpoint 时设置它才有意义。如果设置,它将为指定模块收集详细的 trace。这涉及使用可能昂贵的或阻塞操作,因此可能会对性能有影响。

请注意,收集每个请求的详细时间信息可能会昂贵。

默认None

2.1.12. SchedulerConfig

调度程序配置。

2.1.12.1. --max-num-batched-tokens

在单个迭代中处理的最大令牌数。

这个配置没有静态默认值。如果用户未指定,它将根据使用情况上下文在 EngineArgs.create_engine_config 中设置。

解析人类可读的整数,如 '1k'、'2M' 等。包含十进制倍数的十进制值。

Examples:
- '1k' -> 1,000
- '1K' -> 1,024
- '25.6k' -> 25,600
Copy to Clipboard Toggle word wrap

默认None

2.1.12.2. --max-num-seqs

在单个迭代中处理的最大序列号。

这个配置没有静态默认值。如果用户未指定,它将根据使用情况上下文在 EngineArgs.create_engine_config 中设置。

默认None

2.1.12.3. --max-num-partial-prefills

对于块预填充,可以同时预先填充的最大序列数。

默认1

2.1.12.4. --max-long-partial-prefills

对于块预填充,会同时预先填充的 long_prefill_token_threshold 的提示的最大数量。设置小于 max_num_partial_prefills 时,可以缩短提示,在一些情况下,在较长的提示前跳过队列,从而提高了延迟。

默认1

2.1.12.5. --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),然后捕获列表将遵循提供的列表。

默认:[]

2.1.12.6. --long-prefill-token-threshold

对于块预先填充,如果提示符的时间超过这个数量的令牌,则请求会被视为很长时间。

默认:0

2.1.12.7. --num-lookahead-slots

除已知令牌 ID 外,要按顺序分配的插槽数量。这用于规范解码来存储可能或不接受的令牌的 KV 激活。

注意

这将在以后被 speculative config 替换。它会被正确的测试替代,直到它们为止。

默认:0

2.1.12.8. --scheduling-policy

可能的选项: fcfspriority

要使用的调度策略:

  • "fcfs"意味着首先提供第一个服务,即按 arrival 的顺序处理请求。
  • "优先级"意味着根据给定优先级处理请求(较低值意味着早期处理)和 arrival 决定任何绑定的时间。

默认:fcfs

如果为 True,则预先填充请求可以根据剩余的 max_num_batched_tokens 进行块。

默认None

如果设置为 true,并且启用了块的预先填充,我们不希望部分调度多模式项目。仅在 V1 中使用,这样可确保在请求具有混合提示(如文本令牌 TTTTTTTTTTTTTTTTTTTTTTIIIII)时,它会被调度为镜像令牌 IIIIIIIIIIII),其中只能调度到下一步骤(如 TTTTIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII),其中仅能调度某些镜像令牌(如 TTTTTTIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII),其中只能调度某些镜像令牌(如 TTTTTIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

默认False

2.1.12.11. --scheduler-cls

要使用的调度程序类。"vllm.core.scheduler.Scheduler" 是默认的调度程序。可以直接是一个类,也可以是形式为"mod.custom_class"的类的路径。

默认:vllm.core.scheduler.Scheduler

如果设置为 True,KV 缓存管理器会为所有关注层分配相同的 KV 缓存大小,即使存在多种关注层,如完整关注和滑动窗口注意。

默认False

2.1.12.13. --async-scheduling, --no-async-scheduling
注意

这是一个实验性功能。

如果设置为 True,请执行 async 调度。这有助于减少 CPU 开销,从而提高延迟和吞吐量。但是,目前不支持 async 调度,如结构化输出、规范解码和管道并行性。

默认False

2.1.13. VllmConfig

Dataclass 包含所有与 vllm 相关的配置。这简化了在代码库中传递不同配置的过程。

2.1.13.1. --speculative-config

规范解码配置。

应该是有效的 JSON 字符串或 JSON 密钥。

默认None

2.1.13.2. --kv-transfer-config

分布式 KV 缓存传输的配置。

应该是有效的 JSON 字符串或 JSON 密钥。

默认None

2.1.13.3. --kv-events-config

事件发布的配置。

应该是有效的 JSON 字符串或 JSON 密钥。

默认None

2.1.13.4. --compilation-config, -O

torch.compile and cudagraph 捕获模型配置。

作为一个简写,-O<n > 可用于直接指定编译级别 n:-O3 等同于 -O.level=3 (same as -O='{"level":3}')。目前,-O <n>and -O=<n>are supported as well but this will likely be removed in favor of clearer -O<n>syntax in the future.</n></n></n>

注意

级别 0 是没有任何优化的默认级别。级别 1 和 2 仅用于内部测试。3 级是生产环境的建议级别,在 V1 中是默认级别。

您可以指定完整的编译配置,如 so: {"level": 3, "cudagraph_capture_sizes": [1, 2, 4, 8]}

应该是有效的 JSON 字符串或 JSON 密钥。

Default:

{
   "level":null,
   "debug_dump_path":"",
   "cache_dir":"",
   "backend":"",
   "custom_ops":[

   ],
   "splitting_ops":null,
   "use_inductor":true,
   "compile_sizes":null,
   "inductor_compile_config":{
      "enable_auto_functionalized_v2":false
   },
   "inductor_passes":{

   },
   "cudagraph_mode":null,
   "use_cudagraph":true,
   "cudagraph_num_of_warmups":0,
   "cudagraph_capture_sizes":null,
   "cudagraph_copy_inputs":false,
   "full_cuda_graph":false,
   "use_inductor_graph_partition":false,
   "pass_config":{

   },
   "max_capture_size":null,
   "local_cache_dir":null
}
Copy to Clipboard Toggle word wrap
2.1.13.5. --additional-config

指定平台的额外配置。不同的平台可能支持不同的配置。确保配置对您要使用的平台有效。内容必须可以哈希。

默认 :{}

2.1.13.6. --structured-outputs-config

结构化输出配置。

应该是有效的 JSON 字符串或 JSON 密钥。

Default:

config = StructuredOutputsConfig(
    backend='auto',
    disable_fallback=False,
    disable_any_whitespace=False,
    disable_additional_properties=False,
    reasoning_parser=''
)
Copy to Clipboard Toggle word wrap

2.2. vllm chat 参数

使用正在运行的 API 服务器生成 chat 完成。

$ vllm chat [options]
Copy to Clipboard Toggle word wrap
--api-key API_KEY

OpenAI API 密钥。如果提供,此 API 密钥会覆盖环境变量中设置的 API 密钥。

默认 : None

--model-name MODEL_NAME

提示完成中使用的模型名称,默认为列表模型 API 调用中的第一个模型。

默认 : None

--system-prompt SYSTEM_PROMPT

要添加到 chat 模板的系统提示,用于支持系统提示的型号。

默认 : None

--url URL

正在运行的 OpenAI 兼容 RESTful API 服务器的 URL

默认:http://localhost:8000/v1

-q MESSAGE, --quick MESSAGE

MESSAGE 身份发送单个提示,并打印响应,然后退出。

默认 : None

2.3. vllm complete 参数

根据给定的提示,通过正在运行的 API 服务器生成文本完成。

$ vllm complete [options]
Copy to Clipboard Toggle word wrap
--api-key API_KEY

OpenAI 服务的 API 密钥。如果提供,此 API 密钥会覆盖环境变量中设置的 API 密钥。

默认 : None

--model-name MODEL_NAME

提示完成中使用的模型名称,默认为列表模型 API 调用中的第一个模型。

默认 : None

--url URL

正在运行的 OpenAI 兼容 RESTful API 服务器的 URL

默认:http://localhost:8000/v1

-Q PROMPT, --quick PROMPT

发送单个提示并打印完成输出,然后退出。

默认 : None

2.4. vllm bench 参数

在线服务吞吐量基准.

$ vllm bench [options]
Copy to Clipboard Toggle word wrap
bench

positional 参数:

  • 延迟 基准单个请求的延迟。
  • 在线服务吞吐量服务基准。
  • 吞吐量 基准离线推测吞吐量.

2.5. vllm collect-env 参数

收集环境信息。

$ vllm collect-env
Copy to Clipboard Toggle word wrap

2.6. vllm run-batch 参数

为指定模型运行批处理 inference 作业。

$ vllm run-batch
Copy to Clipboard Toggle word wrap
--disable-log-requests

禁用日志记录请求。

默认 :False

--disable-log-stats

禁用日志记录统计信息。

默认 :False

--enable-metrics

启用 Prometheus 指标。

默认 :False

--enable-prompt-tokens-details

当设置为 True 时,启用 prompt_tokens_details 用量。

默认 :False

--max-log-len MAX_LOG_LEN

日志中打印的最大提示字符数或提示 ID 号。

默认 : unlimited

--output-tmp-dir OUTPUT_TMP_DIR

要存储输出文件的目录,然后上传到输出 URL。

默认 : None

--port PORT

Prometheus 指标服务器的端口号。仅在设置 enable-metrics 时才需要。

默认 : 8000

--response-role RESPONSE_ROLE

如果 request.add_generation_prompt=True 则返回的角色名称。

默认 助手

--url URL

Prometheus 指标服务器 URL。仅在设置了 enable-metrics 时才需要。

默认 : 0.0.0.0

--use-v2-block-manager

弃用。块管理器 v1 已被删除。SelfAttnBlockSpaceManager (块管理器 v2)现在是默认的。将 --use-v2-block-manager 标志设置为 True 或 False 对 vLLM 行为没有影响。

默认 :True

-I INPUT_FILE, --input-file INPUT_FILE

单个输入文件的路径或 URL。支持本地文件路径和 HTTP 或 HTTPS。如果指定了 URL,则该文件应该可使用 HTTP GET 可用。

默认 : None

-o OUTPUT_FILE, --output-file OUTPUT_FILE

单个输出文件的路径或 URL。支持本地文件路径和 HTTP 或 HTTPS。如果指定了 URL,则该文件应当可使用 HTTP PUT 可用。

默认 : None

第 3 章 环境变量

您可以使用环境变量来配置系统级别的安装、构建、记录 AI Inference Server 的行为。

重要

VLLM_PORTVLLM_HOST_IP 设置主机端口和 IP 地址,供 AI Inference Server 的内部使用。这不是 API 服务器的端口和 IP 地址。不要使用- host $VLLM_HOST_IP 和-- port $VLLM_PORT 来启动 API 服务器。

重要

AI Inference 服务器使用的所有环境变量都以 VLLM_ 前缀。如果您使用 Kubernetes,请不要命名服务 vllm,否则 Kubernetes 设置的环境变量可能会与 AI Inference Server 环境变量冲突。这是因为 Kubernetes 为每个服务设置环境变量,使用大写服务名称作为前缀。如需更多信息,请参阅 Kubernetes 环境变量

Expand
表 3.1. AI Inference 服务器环境变量
环境变量描述

VLLM_TARGET_DEVICE

支持 vLLM 的目标设备,支持 cuda (默认)、rocmneuroncpuopenvino

MAX_JOBS

并行运行的最大编译作业数量。默认情况下,这是 CPU 数量。

NVCC_THREADS

nvcc 使用的线程数量。默认情况下,这是 1。如果设置,MAX_JOBS 将减少,以避免过度订阅 CPU。

VLLM_USE_PRECOMPILED

如果设置,AI Inference 服务器使用预编译的二进制文件(\*.so)。

VLLM_TEST_USE_PRECOMPILED_NIGHTLY_WHEEL

是否强制在 Python 构建中使用 nightly wheel 进行测试。

CMAKE_BUILD_TYPE

Cmake 构建类型。可用选项:"Debug", "Release", "RelWithDebInfo"。

详细

如果设置,AI Inference 服务器在安装过程中打印详细日志。

VLLM_CONFIG_ROOT

AI Inference 服务器配置文件的根目录。

VLLM_CACHE_ROOT

AI Inference 服务器缓存文件的根目录。

VLLM_HOST_IP

用于分布式环境来确定当前节点的 IP 地址。

VLLM_PORT

用于分布式环境中的手动设置通信端口。

VLLM_RPC_BASE_PATH

当 frontend API 服务器以多处理模式运行时,用于 IPC 的路径。

VLLM_USE_MODELSCOPE

如果为 true,将从 ModelScope 而不是 Hugging Face Hub 加载模型。

VLLM_RINGBUFFER_WARNING_INTERVAL

环缓冲满时记录警告消息的时间间隔(以秒为单位)。

CUDA_HOME

cudatoolkit 主目录的路径,其应位于 bin、include 和 lib 目录下。

VLLM_NCCL_SO_PATH

NCCL 库文件的路径。由于 PyTorch 中的一个错误,对 NCCL >= 2.19 的版本需要。

LD_LIBRARY_PATH

当未设置 VLLM_NCCL_SO_PATH 时使用,AI Inference Server 会尝试在这个路径中找到 NCCL 库。

VLLM_USE_TRITON_FLASH_ATTN

控制是否 wantAI Inference Server 使用 Triton Flash Attention 的标志。

VLLM_FLASH_ATTN_VERSION

强制 AI Inference 服务器使用特定的闪存版本(2 或 3),仅对闪存后端有效。

VLLM_TEST_DYNAMO_FULLGRAPH_CAPTURE

用于启用 Dynamo 完整捕获的内部标志。

LOCAL_RANK

分布式设置中进程的本地排名,用于确定 GPU 设备 ID。

CUDA_VISIBLE_DEVICES

用于控制分布式设置中的可见设备。

VLLM_ENGINE_ITERATION_TIMEOUT_S

引擎中每个迭代的超时。

VLLM_API_KEY

AI Inference Server API 服务器的 API 密钥。

S3_ACCESS_KEY_ID

S3 access key ID for tensorizer to load model from S3。

S3_SECRET_ACCESS_KEY

S3 secret access key for tensorizer to load model from S3。

S3_ENDPOINT_URL

从 S3 加载模型的 S3 端点 URL,用于加载 S3 的模型。

VLLM_USAGE_STATS_SERVER

AI Inference Server usage stats server 的 URL。

VLLM_NO_USAGE_STATS

如果为 true,则禁用使用统计的集合。

VLLM_DO_NOT_TRACK

如果为 true,则禁用对 AI Inference Server usage stats 的跟踪。

VLLM_USAGE_SOURCE

使用统计集合的源。

VLLM_CONFIGURE_LOGGING

如果设置为 1,AI Inference 服务器使用默认配置或指定的配置路径配置日志。

VLLM_LOGGING_CONFIG_PATH

日志配置文件的路径。

VLLM_LOGGING_LEVEL

vLLM 的默认日志记录级别。

VLLM_LOGGING_PREFIX

如果设置,AI Inference 服务器会将这个前缀添加到所有日志消息中。

VLLM_LOGITS_PROCESSOR_THREADS

用于自定义日志处理器的线程数。

VLLM_TRACE_FUNCTION

如果设置为 1,AI Inference 服务器追踪调试的功能调用。

VLLM_ATTENTION_BACKEND

用于关注计算的后端,如 "TORCH_SDPA", "FLASH_ATTN", "XFORMERS")。

VLLM_USE_FLASHINFER_SAMPLER

如果设置,AI Inference 服务器则使用 FlashInfer sampler。

VLLM_FLASHINFER_FORCE_TENSOR_CORES

强制 FlashInfer 使用十个内核;否则使用 heuristics。

VLLM_PP_LAYER_PARTITION

Pipeline 阶段分区策略。

VLLM_CPU_KVCACHE_SPACE

CPU 键值缓存空间(默认为 4GB)。

VLLM_CPU_OMP_THREADS_BIND

OpenMP 线程绑定的 CPU 内核 ID。

VLLM_CPU_MOE_PREPACK

是否在不支持的 CPU 上对 MoE 层使用 prepack。

VLLM_OPENVINO_DEVICE

OpenVINO 设备选择(默认为 CPU)。

VLLM_OPENVINO_KVCACHE_SPACE

OpenVINO 键值缓存空间(默认为 4GB)。

VLLM_OPENVINO_CPU_KV_CACHE_PRECISION

OpenVINO KV 缓存的精度。

VLLM_OPENVINO_ENABLE_QUANTIZED_WEIGHTS

使用 HF Optimum 在模型导出期间启用权重压缩。

VLLM_USE_RAY_SPMD_WORKER

启用 Ray SPMD worker 以便在所有 worker 上执行。

VLLM_USE_RAY_COMPILED_DAG

使用 Ray 提供的编译 Graph API 来优化 control plane 开销。

VLLM_USE_RAY_COMPILED_DAG_NCCL_CHANNEL

在 Ray 提供的编译图形中启用 NCCL 通信。

VLLM_USE_RAY_COMPILED_DAG_OVERLAP_COMM

在 Ray 提供的 Compiled Graph 中启用 GPU 通信重叠。

VLLM_WORKER_MULTIPROC_METHOD

指定多进程 worker 的方法,如 "fork"。

VLLM_ASSETS_CACHE

用于存储下载资产的缓存路径。

VLLM_IMAGE_FETCH_TIMEOUT

在提供多模式模型时获取镜像的超时(默认为 5 秒)。

VLLM_VIDEO_FETCH_TIMEOUT

在提供多模式模型时获取视频的超时(默认为 30 秒)。

VLLM_AUDIO_FETCH_TIMEOUT

在提供多模式模型时获取音频的超时(默认为 10 秒)。

VLLM_MM_INPUT_CACHE_GIB

用于多模式输入缓存的缓存大小(默认为 8GiB)。

VLLM_XLA_CACHE_PATH

XLA 持久缓存目录的路径(仅适用于 XLA 设备)。

VLLM_XLA_CHECK_RECOMPILATION

如果设置,在每个执行步骤后,在 XLA 重新编译后。

VLLM_FUSED_MOE_CHUNK_SIZE

fused MoE 层的块大小(默认为 32768)。

VLLM_NO_DEPRECATION_WARNING

如果为 true,则跳过弃用警告。

VLLM_KEEP_ALIVE_ON_ENGINE_DEATH

如果为 true,在引擎错误后保持 OpenAI API 服务器处于活动状态。

VLLM_ALLOW_LONG_MAX_MODEL_LEN

允许指定大于模型的默认长度的最大序列长度。

VLLM_TEST_FORCE_FP8_MARLIN

无论硬件支持如何,都强制 FP8 Marlin 进行 FP8 量化。

VLLM_TEST_FORCE_LOAD_FORMAT

强制特定的负载格式。

VLLM_RPC_TIMEOUT

从后端服务器获取响应的超时。

VLLM_PLUGINS

要载入的插件列表。

VLLM_TORCH_PROFILER_DIR

用于保存 Torch 配置集追踪的目录。

VLLM_USE_TRITON_AWQ

如果设置,则使用 AWQ 的 Triton 实施。

VLLM_ALLOW_RUNTIME_LORA_UPDATING

如果设置,允许在运行时更新 Lora 适配器。

VLLM_SKIP_P2P_CHECK

跳过对等功能检查。

VLLM_DISABLED_KERNELS

为性能比较禁用的量化内核列表。

VLLM_USE_V1

如果设置,则使用 V1 代码路径。

VLLM_ROCM_FP8_PADDING

对于 ROCm,平板的 FP8 权重为 256 字节。

Q_SCALE_CONSTANT

FP8 KV Cache 的动态查询缩放因子计算。

K_SCALE_CONSTANT

FP8 KV Cache 的动态关键规模因子计算。

V_SCALE_CONSTANT

FP8 KV Cache 的动态值扩展因素计算的 divisor。

VLLM_ENABLE_V1_MULTIPROCESSING

如果设置,请在 LLM 中为 V1 代码路径启用多处理。

VLLM_LOG_BATCHSIZE_INTERVAL

日志批处理大小的时间间隔。

VLLM_SERVER_DEV_MODE

如果设置,AI Inference 服务器以开发模式运行,为调试启用额外的端点,如 /reset_prefix_cache

VLLM_V1_OUTPUT_PROC_CHUNK_SIZE

控制在单个 asyncio 任务中处理的最大请求数,以在 V1 AsyncLLM 接口中处理每个令牌输出。它会影响高级用户流请求。

VLLM_MLA_DISABLE

如果设置,AI Inference 服务器将禁用 MLA 关注优化。

VLLM_ENABLE_MOE_ALIGN_BLOCK_SIZE_TRITON

如果设置,AI Inference 服务器使用 moe_align_block_size 的 Triton 实施,例如 fused_moe.py 中的 moe_align_block_size_triton

VLLM_RAY_PER_WORKER_GPUS

Ray 中每个 worker 的 GPU 数。可以是一个部分,允许 Ray 在单个 GPU 上调度多个参与者。

VLLM_RAY_BUNDLE_INDICES

指定用于每个 worker 的 Ray 捆绑包的索引。格式:以逗号分隔的整数列表(如 "0,1,2,3")。

VLLM_CUDART_SO_PATH

指定 find_loaded_library () 方法的路径,当它可能无法正常工作时。使用 VLLM_CUDART_SO_PATH 环境变量设置。

VLLM_USE_HPU_CONTIGUOUS_CACHE_FETCH

启用连续缓存获取,以避免在 Gaudi3 上进行昂贵的收集操作。仅适用于 HPU 连续缓存。

VLLM_DP_RANK

数据并行设置中的进程的排名。

VLLM_DP_SIZE

数据并行设置全局大小。

VLLM_DP_MASTER_IP

数据并行设置中 master 节点的 IP 地址。

VLLM_DP_MASTER_PORT

数据并行设置中 master 节点的端口。

VLLM_CI_USE_S3

是否使用 S3 路径使用 RunAI Streamer 在 CI 中进行模型加载。

VLLM_MARLIN_USE_ATOMIC_ADD

是否在 gptq/awq marlin 内核中使用 atomicAdd。

VLLM_V0_USE_OUTLINES_CACHE

是否打开 V0 的概述缓存。这个缓存是未绑定的,在磁盘上,对于具有恶意用户的环境会变得不安全。

VLLM_TPU_DISABLE_TOPK_TOPP_OPTIMIZATION

如果设置,请禁用 top-k 和 top-p 抽样的特定于 TPU 的优化。

第 4 章 查看 AI Inference 服务器指标

vLLM 通过 AI Inference Server OpenAI-compatible API 服务器上的 /metrics 端点公开各种指标。

您可以使用 Python 或 Docker 启动服务器。

流程

  1. 启动 AI Inference 服务器并加载您的模型,如下例所示。该命令还会公开 OpenAI 兼容 API。

    $ vllm serve unsloth/Llama-3.2-1B-Instruct
    Copy to Clipboard Toggle word wrap
  2. 查询 OpenAI-compatible API 的 /metrics 端点,以获取服务器的最新指标:

    $ curl http://0.0.0.0:8000/metrics
    Copy to Clipboard Toggle word wrap

    输出示例

    # HELP vllm:iteration_tokens_total Histogram of number of tokens per engine_step.
    # TYPE vllm:iteration_tokens_total histogram
    vllm:iteration_tokens_total_sum{model_name="unsloth/Llama-3.2-1B-Instruct"} 0.0
    vllm:iteration_tokens_total_bucket{le="1.0",model_name="unsloth/Llama-3.2-1B-Instruct"} 3.0
    vllm:iteration_tokens_total_bucket{le="8.0",model_name="unsloth/Llama-3.2-1B-Instruct"} 3.0
    vllm:iteration_tokens_total_bucket{le="16.0",model_name="unsloth/Llama-3.2-1B-Instruct"} 3.0
    vllm:iteration_tokens_total_bucket{le="32.0",model_name="unsloth/Llama-3.2-1B-Instruct"} 3.0
    vllm:iteration_tokens_total_bucket{le="64.0",model_name="unsloth/Llama-3.2-1B-Instruct"} 3.0
    vllm:iteration_tokens_total_bucket{le="128.0",model_name="unsloth/Llama-3.2-1B-Instruct"} 3.0
    vllm:iteration_tokens_total_bucket{le="256.0",model_name="unsloth/Llama-3.2-1B-Instruct"} 3.0
    vllm:iteration_tokens_total_bucket{le="512.0",model_name="unsloth/Llama-3.2-1B-Instruct"} 3.0
    #...
    Copy to Clipboard Toggle word wrap

第 5 章 AI Inference 服务器指标

AI Inference Server 会公开 vLLM 指标,用于监控系统的健康状况。

Expand
表 5.1. vLLM 指标
指标名称描述

vllm:num_requests_running

当前在 GPU 上运行的请求数。

vllm:num_requests_waiting

等待处理的请求数。

vllm:lora_requests_info

在 LoRA 请求上运行统计信息。

vllm:num_requests_swapped

交换到 CPU 的请求数。弃用:V1 中不使用 KV 缓存卸载。

vllm:gpu_cache_usage_perc

GPU KV-cache 使用。值 1 表示 100% 使用。

vllm:cpu_cache_usage_perc

CPU KV-cache 使用。值 1 表示 100% 使用。弃用:V1 中不使用 KV 缓存卸载。

vllm:cpu_prefix_cache_hit_rate

CPU 前缀缓存块命中率。弃用:V1 中不使用 KV 缓存卸载。

vllm:gpu_prefix_cache_hit_rate

GPU 前缀缓存块命中率。deprecated: 使用 vllm:gpu_prefix_cache_queriesvllm:gpu_prefix_cache_hits in V1。

vllm:num_preemptions_total

引擎的抢占数量。

vllm:prompt_tokens_total

处理预先填充令牌的总数。

vllm:generation_tokens_total

处理的生成令牌总数。

vllm:iteration_tokens_total

每个引擎步骤的令牌数量直方图。

vllm:time_to_first_token_seconds

以秒为单位到第一个令牌的直方图。

vllm:time_per_output_token_seconds

每输出令牌的直方图(以秒为单位)。

vllm:e2e_request_latency_seconds

端到端请求延迟(以秒为单位)。

vllm:request_queue_time_seconds

请求在 WAITING 阶段花费的时间直方图。

vllm:request_inference_time_seconds

请求在 RUNNING 阶段花费的时间直方图。

vllm:request_prefill_time_seconds

请求在 PREFILL 阶段花费的时间直方图。

vllm:request_decode_time_seconds

请求在 DECODE 阶段花费的时间直方图。

vllm:time_in_queue_requests

请求在队列中花费的时间(以秒为单位)。deprecated: 使用 vllm:request_queue_time_seconds 替代。

vllm:model_forward_time_milliseconds

模型向前传递的时间直方图(毫秒)。弃用 :使用 prefill/decode/inference 时间指标。

vllm:model_execute_time_milliseconds

模型执行功能所花费的时间(毫秒)。弃用 :使用 prefill/decode/inference 时间指标。

vllm:request_prompt_tokens

处理预填充令牌数量的直方图。

vllm:request_generation_tokens

处理的生成令牌数量的直方图。

vllm:request_max_num_generation_tokens

请求生成令牌的最大数量的直方图。

vllm:request_params_n

n 请求参数的直方图。

vllm:request_params_max_tokens

max_tokens 请求参数的直方图。

vllm:request_success_total

成功处理的请求计数。

vllm:spec_decode_draft_acceptance_rate

规范令牌接受率。

vllm:spec_decode_efficiency

监管解码系统效率.

vllm:spec_decode_num_accepted_tokens_total

接受的令牌总数。

vllm:spec_decode_num_draft_tokens_total

令牌草案总数.

vllm:spec_decode_num_emitted_tokens_total

发出的令牌总数。

第 6 章 弃用的指标

以下指标已弃用,并将在以后的 AI Inference 服务器版本中删除:

  • vllm:num_requests_swapped
  • vllm:cpu_cache_usage_perc
  • vllm:cpu_prefix_cache_hit_rate (KV cache offloading 不会在 V1)中使用。
  • vllm:gpu_prefix_cache_hit_rate.此指标由 V1 中的 queries+hits 计数器替换。
  • vllm:time_in_queue_requests.此指标由 vllm:request_queue_time_seconds 重复。
  • vllm:model_forward_time_milliseconds
  • vllm:model_execute_time_milliseconds.应改为使用预先填充、解码或推测时间指标。
重要

当指标在 X.Y 中被弃用时,它们会在 X.Y+1 版本中被隐藏,但可以使用-- show-hidden-metrics-for-version=X.Y 转义 Redch 重新启用。弃用的指标将在以下 X.Y+2 版本中完全删除。

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat