OpenAI 兼容服务器
vLLM 提供了一个实现 OpenAI Completions 和 Chat API 的 HTTP 服务器。
您可以使用 Python 或 Docker 启动服务器:
vllm serve NousResearch/Meta-Llama-3-8B-Instruct --dtype auto --api-key token-abc123
如需要调用服务器,您可以使用官方的 OpenAI Python 客户端库,或任何其他 HTTP 客户端。
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="token-abc123",
)
completion = client.chat.completions.create(
model="NousResearch/Meta-Llama-3-8B-Instruct",
messages=[
{"role": "user", "content": "Hello!"}
]
)
print(completion.choices[0].message)
API 参考
有关 API 的更多信息,请参阅 OpenAI API 参考。我们支持除以下参数的所有参数:
-
Chat:
tools
和tool_choice
。 -
Completions:
suffix
。
vLLM 还 提供对 OpenAI Vision API 兼容推理的实验性支持。有关更多详细信息,请参阅使用 VLMs。
附加参数
vLLM 支持一组不属于 OpenAI API 的部分参数。如需使用这些参数,你可以将它们作为额外参数传递给 OpenAI 客户端,或者直接将它们合并到 JSON 负载中(如果你直接使用 HTTP 调用)。
completion = client.chat.completions.create(
model="NousResearch/Meta-Llama-3-8B-Instruct",
messages=[
{"role": "user", "content": "Classify this sentiment: vLLM is wonderful!"}
],
extra_body={
"guided_choice": ["positive", "negative"]
}
)
Chat API 的附加参数
以下采样参数(点击查看文档)均被支持。
best_of: Optional[int] = None
use_beam_search: bool = False
top_k: int = -1
min_p: float = 0.0
repetition_penalty: float = 1.0
length_penalty: float = 1.0
early_stopping: bool = False
stop_token_ids: Optional[List[int]] = Field(default_factory=list)
include_stop_str_in_output: bool = False
ignore_eos: bool = False
min_tokens: int = 0
skip_special_tokens: bool = True
spaces_between_special_tokens: bool = True
truncate_prompt_tokens: Optional[Annotated[int, Field(ge=1)]] = None
prompt_logprobs: Optional[int] = None
以下附加参数均被支持:
echo: bool = Field(
default=False,
description=(
"If true, the new message will be prepended with the last message "
"if they belong to the same role."),
)
add_generation_prompt: bool = Field(
default=True,
description=
("If true, the generation prompt will be added to the chat template. "
"This is a parameter used by chat template in tokenizer config of the "
"model."),
)
add_special_tokens: bool = Field(
default=False,
description=(
"If true, special tokens (e.g. BOS) will be added to the prompt "
"on top of what is added by the chat template. "
"For most models, the chat template takes care of adding the "
"special tokens so this should be set to false (as is the "
"default)."),
)
documents: Optional[List[Dict[str, str]]] = Field(
default=None,
description=
("A list of dicts representing documents that will be accessible to "
"the model if it is performing RAG (retrieval-augmented generation)."
" If the template does not support RAG, this argument will have no "
"effect. We recommend that each document should be a dict containing "
"\"title\" and \"text\" keys."),
)
chat_template: Optional[str] = Field(
default=None,
description=(
"A Jinja template to use for this conversion. "
"As of transformers v4.44, default chat template is no longer "
"allowed, so you must provide a chat template if the tokenizer "
"does not define one."),
)
chat_template_kwargs: Optional[Dict[str, Any]] = Field(
default=None,
description=("Additional kwargs to pass to the template renderer. "
"Will be accessible by the chat template."),
)
guided_json: Optional[Union[str, dict, BaseModel]] = Field(
default=None,
description=("If specified, the output will follow the JSON schema."),
)
guided_regex: Optional[str] = Field(
default=None,
description=(
"If specified, the output will follow the regex pattern."),
)
guided_choice: Optional[List[str]] = Field(
default=None,
description=(
"If specified, the output will be exactly one of the choices."),
)
guided_grammar: Optional[str] = Field(
default=None,
description=(
"If specified, the output will follow the context free grammar."),
)
guided_decoding_backend: Optional[str] = Field(
default=None,
description=(
"If specified, will override the default guided decoding backend "
"of the server for this specific request. If set, must be either "
"'outlines' / 'lm-format-enforcer'"))
guided_whitespace_pattern: Optional[str] = Field(
default=None,
description=(
"If specified, will override the default whitespace pattern "
"for guided json decoding."))
Completions API 的附加参数
以下采样参数(点击查看文档)均被支持。
use_beam_search: bool = False
top_k: int = -1
min_p: float = 0.0
repetition_penalty: float = 1.0
length_penalty: float = 1.0
early_stopping: bool = False
stop_token_ids: Optional[List[int]] = Field(default_factory=list)
include_stop_str_in_output: bool = False
ignore_eos: bool = False
min_tokens: int = 0
skip_special_tokens: bool = True
spaces_between_special_tokens: bool = True
truncate_prompt_tokens: Optional[Annotated[int, Field(ge=1)]] = None
allowed_token_ids: Optional[List[int]] = None
prompt_logprobs: Optional[int] = None
以下附加参数均被支持:
add_special_tokens: bool = Field(
default=True,
description=(
"If true (the default), special tokens (e.g. BOS) will be added to "
"the prompt."),
)
response_format: Optional[ResponseFormat] = Field(
default=None,
description=
("Similar to chat completion, this parameter specifies the format of "
"output. Only {'type': 'json_object'} or {'type': 'text' } is "
"supported."),
)
guided_json: Optional[Union[str, dict, BaseModel]] = Field(
default=None,
description="If specified, the output will follow the JSON schema.",
)
guided_regex: Optional[str] = Field(
default=None,
description=(
"If specified, the output will follow the regex pattern."),
)
guided_choice: Optional[List[str]] = Field(
default=None,
description=(
"If specified, the output will be exactly one of the choices."),
)
guided_grammar: Optional[str] = Field(
default=None,
description=(
"If specified, the output will follow the context free grammar."),
)
guided_decoding_backend: Optional[str] = Field(
default=None,
description=(
"If specified, will override the default guided decoding backend "
"of the server for this specific request. If set, must be one of "
"'outlines' / 'lm-format-enforcer'"))
guided_whitespace_pattern: Optional[str] = Field(
default=None,
description=(
"If specified, will override the default whitespace pattern "
"for guided json decoding."))
聊天模板
为了使语言模型支持聊天协议,vLLM 要求模型在其 tokenizer 配置中包含一个聊天模板。聊天模板是一个 Jinja2 模板,它指定了角色、消息和其他特定于聊天对 tokens 如何在输入中编码。
NousResearch/Meta-Llama-3-8B-Instruct
的示例聊天模板可以在这里找到。
一些模型即使经过了指令/聊天微调,仍然不提供聊天模板。对于这些模型,你可以在 --chat-template
参数中手动指定聊天模板的文件路径或字符串形式。如果没有聊天模板,服务器将无法处理聊天请求,所有聊天请求将出错。
vllm serve <model> --chat-template ./path-to-chat-template.jinja
vLLM 社区为流行的模型提供了一组聊天模板,可以在示例目录这里找到它们。
服务器的命令行参数
usage: vllm serve [-h] [--host HOST] [--port PORT]
[--uvicorn-log-level {debug,info,warning,error,critical,trace}]
[--allow-credentials] [--allowed-origins ALLOWED_ORIGINS]
[--allowed-methods ALLOWED_METHODS]
[--allowed-headers ALLOWED_HEADERS] [--api-key API_KEY]
[--lora-modules LORA_MODULES [LORA_MODULES ...]]
[--prompt-adapters PROMPT_ADAPTERS [PROMPT_ADAPTERS ...]]
[--chat-template CHAT_TEMPLATE]
[--response-role RESPONSE_ROLE] [--ssl-keyfile SSL_KEYFILE]
[--ssl-certfile SSL_CERTFILE] [--ssl-ca-certs SSL_CA_CERTS]
[--ssl-cert-reqs SSL_CERT_REQS] [--root-path ROOT_PATH]
[--middleware MIDDLEWARE] [--return-tokens-as-token-ids]
[--disable-frontend-multiprocessing]
[--enable-auto-tool-choice]
[--tool-call-parser {mistral,hermes}] [--model MODEL]
[--tokenizer TOKENIZER] [--skip-tokenizer-init]
[--revision REVISION] [--code-revision CODE_REVISION]
[--tokenizer-revision TOKENIZER_REVISION]
[--tokenizer-mode {auto,slow,mistral}] [--trust-remote-code]
[--download-dir DOWNLOAD_DIR]
[--load-format {auto,pt,safetensors,npcache,dummy,tensorizer,sharded_state,gguf,bitsandbytes,mistral}]
[--config-format {auto,hf,mistral}]
[--dtype {auto,half,float16,bfloat16,float,float32}]
[--kv-cache-dtype {auto,fp8,fp8_e5m2,fp8_e4m3}]
[--quantization-param-path QUANTIZATION_PARAM_PATH]
[--max-model-len MAX_MODEL_LEN]
[--guided-decoding-backend {outlines,lm-format-enforcer}]
[--distributed-executor-backend {ray,mp}] [--worker-use-ray]
[--pipeline-parallel-size PIPELINE_PARALLEL_SIZE]
[--tensor-parallel-size TENSOR_PARALLEL_SIZE]
[--max-parallel-loading-workers MAX_PARALLEL_LOADING_WORKERS]
[--ray-workers-use-nsight] [--block-size {8,16,32}]
[--enable-prefix-caching] [--disable-sliding-window]
[--use-v2-block-manager]
[--num-lookahead-slots NUM_LOOKAHEAD_SLOTS] [--seed SEED]
[--swap-space SWAP_SPACE] [--cpu-offload-gb CPU_OFFLOAD_GB]
[--gpu-memory-utilization GPU_MEMORY_UTILIZATION]
[--num-gpu-blocks-override NUM_GPU_BLOCKS_OVERRIDE]
[--max-num-batched-tokens MAX_NUM_BATCHED_TOKENS]
[--max-num-seqs MAX_NUM_SEQS] [--max-logprobs MAX_LOGPROBS]
[--disable-log-stats]
[--quantization {aqlm,awq,deepspeedfp,tpu_int8,fp8,fbgemm_fp8,modelopt,marlin,gguf,gptq_marlin_24,gptq_marlin,awq_marlin,gptq,compressed-tensors,bitsandbytes,qqq,experts_int8,neuron_quant,None}]
[--rope-scaling ROPE_SCALING] [--rope-theta ROPE_THETA]
[--enforce-eager]
[--max-context-len-to-capture MAX_CONTEXT_LEN_TO_CAPTURE]
[--max-seq-len-to-capture MAX_SEQ_LEN_TO_CAPTURE]
[--disable-custom-all-reduce]
[--tokenizer-pool-size TOKENIZER_POOL_SIZE]
[--tokenizer-pool-type TOKENIZER_POOL_TYPE]
[--tokenizer-pool-extra-config TOKENIZER_POOL_EXTRA_CONFIG]
[--limit-mm-per-prompt LIMIT_MM_PER_PROMPT] [--enable-lora]
[--max-loras MAX_LORAS] [--max-lora-rank MAX_LORA_RANK]
[--lora-extra-vocab-size LORA_EXTRA_VOCAB_SIZE]
[--lora-dtype {auto,float16,bfloat16,float32}]
[--long-lora-scaling-factors LONG_LORA_SCALING_FACTORS]
[--max-cpu-loras MAX_CPU_LORAS] [--fully-sharded-loras]
[--enable-prompt-adapter]
[--max-prompt-adapters MAX_PROMPT_ADAPTERS]
[--max-prompt-adapter-token MAX_PROMPT_ADAPTER_TOKEN]
[--device {auto,cuda,neuron,cpu,openvino,tpu,xpu}]
[--num-scheduler-steps NUM_SCHEDULER_STEPS]
[--scheduler-delay-factor SCHEDULER_DELAY_FACTOR]
[--enable-chunked-prefill [ENABLE_CHUNKED_PREFILL]]
[--speculative-model SPECULATIVE_MODEL]
[--speculative-model-quantization {aqlm,awq,deepspeedfp,tpu_int8,fp8,fbgemm_fp8,modelopt,marlin,gguf,gptq_marlin_24,gptq_marlin,awq_marlin,gptq,compressed-tensors,bitsandbytes,qqq,experts_int8,neuron_quant,None}]
[--num-speculative-tokens NUM_SPECULATIVE_TOKENS]
[--speculative-draft-tensor-parallel-size SPECULATIVE_DRAFT_TENSOR_PARALLEL_SIZE]
[--speculative-max-model-len SPECULATIVE_MAX_MODEL_LEN]
[--speculative-disable-by-batch-size SPECULATIVE_DISABLE_BY_BATCH_SIZE]
[--ngram-prompt-lookup-max NGRAM_PROMPT_LOOKUP_MAX]
[--ngram-prompt-lookup-min NGRAM_PROMPT_LOOKUP_MIN]
[--spec-decoding-acceptance-method {rejection_sampler,typical_acceptance_sampler}]
[--typical-acceptance-sampler-posterior-threshold TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_THRESHOLD]
[--typical-acceptance-sampler-posterior-alpha TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_ALPHA]
[--disable-logprobs-during-spec-decoding [DISABLE_LOGPROBS_DURING_SPEC_DECODING]]
[--model-loader-extra-config MODEL_LOADER_EXTRA_CONFIG]
[--ignore-patterns IGNORE_PATTERNS]
[--preemption-mode PREEMPTION_MODE]
[--served-model-name SERVED_MODEL_NAME [SERVED_MODEL_NAME ...]]
[--qlora-adapter-name-or-path QLORA_ADAPTER_NAME_OR_PATH]
[--otlp-traces-endpoint OTLP_TRACES_ENDPOINT]
[--collect-detailed-traces COLLECT_DETAILED_TRACES]
[--disable-async-output-proc]
[--override-neuron-config OVERRIDE_NEURON_CONFIG]
[--disable-log-requests] [--max-log-len MAX_LOG_LEN]
命名参数
--host
主机名
--port
端口号
默认值:8000
--uvicorn-log-level
可选项:debug, info, warning, error, critical, trace
uvicorn 的日志级别
默认值: 「info」
--allow-credentials
允许凭据
默认值:False
--allowed-origins
允许的来源
默认值:['*']
--allowed-methods
允许的方法
默认值:['*']
--allowed-headers
允许的标头
默认值:['*']
--api-key
如果提供这个密钥,服务器将要求在标头中显示此密钥。
--lora-modules
LoRA 模块配置的格式为 name=path,可以指定多个模块。
--prompt-adapters
以 name=path 的格式提示适配器配置,可以指定多个适配器。
--chat-template
聊天模板的文件路径,或针对指定模型的单行形式的模板。
--response-role
如果设置了 request.add_generation_prompt=true,则返回的角色名称。
默认值:assistant
--ssl-keyfile
SSL 密钥文件的文件路径
--ssl-certfile
SSL 证书文件的文件路径
--ssl-ca-certs
CA 证书文件
--ssl-cert-reqs
是否需要客户端证书(请参阅 stdlib ssl 模块)
默认值:0
--root-path
当应用程序位于基于路径的路由代理之后时的 FastAPI 根路径。
--middleware
要应用于应用程序的额外 ASGI 中间件。我们接受多个 –middleware 参数。该值应为一个导入路径。如果提供了一个函数,vLLM 将使用 @app.middleware('http') 将其添加到服务器中。如果提供了一个类,vLLM 将使用 app.add_middleware() 将其添加到服务器中。
默认值:[]
--return-tokens-as-token-ids
当指定了 –max-logprobs 参数时,它表示将单个标记表示为 "token_id:{token_id}" 形式的字符串,以便可以识别那些无法进行 JSON 编码的标记。
默认值:False
--disable-frontend-multiprocessing
如果指定了该选项,将在与模型服务引擎相同的进程中运行 OpenAI 前端服务器。
默认值:False
--enable-auto-tool-choice
为支持的型号启用自动工具选择。使用 –tool-call-parser 参数指定要使用的解析器
默认值:False
--tool-call-parser
可选项:mistral, hermes
根据您使用的模型选择合适的工具调用解析器。这用于将模型生成的工具调用解析为 OpenAI API 格式。 参数 –enable-auto-tool-choice 是必需的。
--model
要使用的 Huggingface 模型的名称或路径。
默认值:「facebook/opt-125m」
--tokenizer
要使用的 Huggingface tokenizer 的名称或路径。如果未指定,将使用模型名称或路径。
--skip-tokenizer-init
跳过 tokenizer 和 detokenizer 的初始化
默认值:False
--revision
要使用的指定模型版本。它可以是分支名称、标签名称或提交 ID。如果未指定,将使用默认版本。
--code-revision
在 Hugging Face Hub 上用 于模型代码的指定修订版本。它可以是分支名称、标签名称或提交 ID。如果未指定,将使用默认版本。
--tokenizer-revision
使用 Huggingface tokenizer 的修订版本。它可以是分支名称、标签名称或提交 ID。如果未指定,将使用默认版本。
--tokenizer-mode
可选项:auto, slow, mistral
tokenizer 模式。
-
「auto」将使用快速 tokenizer (如果可用)。
-
「slow」将始终使用慢 tokenizer。
-
「mistral」将始终使用 mistral_common tokenizer 。
默认值:「auto」
--trust-remote-code
信任来自 Huggingface 的远程代码。
默认值:False
--download-dir
用于下载和加载权重的目录,默认为 huggingface 的默认缓存目录。
--load-format
可选项:auto、pt、safetensors、npcache、dummy、tensorizer、sharded_state、gguf、bitsandbytes、mistral
要加载的模型权重的格式。
-
「auto」将尝试以 safetensors 格式加载权重,如果 safetensors 格式不可用,则会回退到 pytorch bin 格式。
-
「pt」将以 pytorch bin 格式加载权重。
-
「safetensors」将以 safetensors 格式加载权重。
-
「npcache」将以 pytorch 格式加载权重,并存储 numpy 缓存以加快加载速度。
-
「dummy」将使用随机值初始化权重,主要用于性能分析。
-
「tensorizer」将使用 CoreWeave 的张量器加载权重。有关详细信息,请参阅示例部分中的 Tensorize vLLM 模型脚本。
-
「bitsandbytes」将使用 bitsandbytes 量化来加载权重。
默认值:「auto」
--config-format
可选项:auto、hf、mistral
要加载的模型配置的格式。
「auto」将尝试以 hf 格式加载配置(如果可用),否则它将尝试以 Mistra 格式加载
默认值:「auto」
--dtype
可选项:auto、half、float16、bfloat16、float、float32
模型权重和激活的数据类型。
-
「auto」将对 FP32 和 FP16 型号使用 FP16 精度,对 BF16 型号使用 BF16 精度。
-
「half」用于 FP16,推荐用于 AWQ 量化。
-
「float16」与「half」相同。
-
「bfloat16」用于在精度和范围之间取得平衡。
-
「float」是 FP32 精度的简写。
-
「float32」表示 FP32 精度。
默认值:「auto」
--kv-cache-dtype
可选项:auto、fp8、fp8_e5m2、fp8_e4m3
kv 缓存存储的数据类型。如果设置为 "auto",将使用模型的数据类型。CUDA 11.8+ 版本支持 fp8 (=fp8_e4m3) 和 fp8_e5m2。ROCm (AMD GPU) 支持 fp8 (=fp8_e4m3)。
默认值:「auto」
--quantization-param-path
路径指向包含 KV 缓存缩放因子的JSON文件。通常,当 KV 缓存数据类型设定为 FP8 时,需要提供此文件。否则,KV 缓存缩放因子默认为 1.0,这可能会影响准确性。只有在 CUDA 版本高于 11.8 时,才支持不使用缩放的 FP8_E5M2。对于 ROCm (AMD GPU) ,则支持 FP8_E4M3,以满足一般推理标准。
--max-model-len
模型的上下文长度。如果未指定,将自动从模型配置中推导出来。
--guided-decoding-backend
可选项:outlines, lm-format-enforcer
默认情况下,用于引导解码(如 JSON 模式、正则表达式等)的引擎是哪种。当前支持的选项包括 outlines-dev/outlines 和 noamgat/lm-format-enforcer。此外,可以通过 guided_decoding_backend 在每个请求中自定义选择不同的引擎。
默认值:「outlines」
--distributed-executor-backend
可选项:ray, mp
用于分布式服务的后端。当使用超过 1 个 GPU 时,如果已安装 ray,将自动设置为「ray」,否则将自动设置为「mp」(multiprocessing)。
--worker-use-ray
已弃用,请使用 –distributed-executor-backend=ray。
默认值:False
--pipeline-parallel-size,
管道阶段的数量。
默认值:1
--tensor-parallel-size,
张量并行副本的数量。
默认值:1
--max-parallel-loading-workers
分多个批次顺序加载模型,这样可以避免使用张量并行和大型模型时出现内存不足 (RAM OOM) 的情况。
--ray-workers-use-nsight
如果指定了该选项,则使用 Nsight 对 Ray 工作进程进行性能分析。
默认值:False
--block-size
可选项:8、16、32
用于连续 token 块的 token 块大小。在神经元设备上此参数被忽略,并设置为最大模型长度。
默认值: 16
--enable-prefix-caching
启用自动前缀缓存。
默认值:False
--disable-sliding-window
禁用滑动窗口,将其限制为滑动窗口大小。
默认值:False
--use-v2-block-manager
使用 BlockSpaceMangerV2。
默认值:False
--num-lookahead-slots
用于推测解码的实验性调度配置。未来,它将被推测性配置所替代;在此之前,它是为了确保正确性测试的进行而保留的。
默认值:0
--seed
用于操作的随机种子。
默认值:0
--swap-space
每个 GPU 的 CPU 交换空间大小 (GiB)。
默认值:4
--cpu-offload-gb
每个 GPU 用于卸载到 CPU 的空间大小(以 GiB 为单位)。默认值为 0,表示不卸载。直观地说,这个参数可以被视为一种虚拟地增加 GPU 内存大小的方式。例如,如果您有一个 24 GB GPU 并将其参数设置为 10,那么实际上您可以把它看作是一个 34GB 的 GPU。这样您就可以加载一个 BF16 权重的 13B 模型,该模型至少需要 26GB 的 GPU 内存。请注意,这需要快速的 CPU-GPU 互连,因为在每次模型前向传播中,部分模型是从 CPU 内存动态加载到 GPU 内存中的。
默认值:0
--gpu-memory-utilization
用于模型执行器的 GPU 内存比例,其范围从 0 到 1。例如,值为 0.5 表示 GPU 内存利用率为 50%。如果未指定,将使用默认值 0.9。
默认值:0.9
--num-gpu-blocks-override
如果指定了该参数,则忽略 GPU 分析结果并使用这个数量的 GPU 块。此操作用于测试抢占。
--max-num-batched-tokens
每次迭代的最大批处理 token 数量。
--max-num-seqs
每次迭代的最大序列数量。
默认值:256
--max-logprobs
在采样参数 (SamplingParams) 中指定了对数概率 (logprobs) 返回的最大值。
默认值:20
--disable-log-stats
禁用日志记录统计。
默认值:False
--quantization,-q
可选项:aqlm, awq, deepspeedfp, tpu_int8, fp8, fbgemm_fp8, modelopt, marlin, gguf, gptq_marlin_24, gptq_marlin, awq_marlin, gptq, compressed-tensors, bitsandbytes, qqq, experts_int8, neuron_quant, None
用于量化权重的方法。如果没有制定,我们首先检查模型配置文件中的 quantization_config 属性。如果为 None,我们假设模型权重未量化,并使用 dtype 来确定权重的数据类型。
--rope-scaling
JSON 格式的 RoPE 扩展配置。例如,{"type":"dynamic","factor":2.0}
--rope-theta
RoPE theta。与 rope_scaling 一起使用。在某些情况下,更改 RoPE theta 可以提高缩放模型的性能。
--enforce-eager
始终使用 eager 模式的 PyTorch。如果为 False,将会使用 eager 模式和 hybrid CUDA 图混合模式,以获得最大性能和灵活性。
默认值:False
--max-context-len-to-capture
CUDA 图表覆盖的最大上下文长度。当序列的上下文长度大于此值时,我们会回退到 eager 模式。 (已弃用。请使用 –max-seq-len-to-capture 代替)
--max-seq-len-to-capture
CUDA 图涵盖的最大序列长度。当序列的上下文长度大于此值时,我们会退回到 eager 模式。
默认值:8192
--disable-custom-all-reduce
请参阅并行配置 (ParallelConfig)。
默认值:False
--tokenizer-pool-size
用于异步标记化的标记 tokenizer 池的大小。如果为 0,将使用同步标记化。
默认值:0
--tokenizer-pool-type
用于异步标记化 (asynchronous tokenization) 的标记 tokenizer 池的类型。如果 tokenizer_pool_size 为 0,则使用同步标记化。
默认值:「ray」
--tokenizer-pool-extra-config
tokenizer 池的额外配置。这应该是一个将被解析为字典的 JSON 字符串。如果 tokenizer_pool_size 为 0,则被忽略。
--limit-mm-per-prompt
对于每个多模态插件,限制每个提示允许的输入实例数量。需要提供一个以逗号分隔的项目列表,例如:「image=16,video=2」表示每个提示最多可以包含 16 个图像和 2 个视频。默认情况下,每种模态对应的数量为 1。
--enable-lora