vLLM API 接口详解

1,224 阅读4分钟

vLLM 提供了丰富的命令行接口参数,方便用户在不同的环境和需求下灵活配置。以下是各个接口参数的详细介绍:

基本配置

  • --host HOST: 指定服务器主机名。
  • --port PORT: 指定服务器端口号。
  • --uvicorn-log-level {debug,info,warning,error,critical,trace}: 设置 Uvicorn 的日志级别。
  • --allow-credentials: 允许跨域请求时携带凭证。
  • --allowed-origins ALLOWED_ORIGINS: 允许跨域请求的来源。
  • --allowed-methods ALLOWED_METHODS: 允许跨域请求的方法。
  • --allowed-headers ALLOWED_HEADERS: 允许跨域请求的头部。
  • --api-key API_KEY: 如果提供,该服务器将要求在请求头中提供此密钥。

模型配置

  • --served-model-name SERVED_MODEL_NAME: API 使用的模型名称。如果未指定,则默认为 Hugging Face 模型名称。
  • --model MODEL: 使用的 Hugging Face 模型名称或路径。
  • --tokenizer TOKENIZER: 使用的 Hugging Face 分词器名称或路径。
  • --revision REVISION: 使用的特定模型版本(分支名、标签名或提交 ID)。若未指定,将使用默认版本。
  • --code-revision CODE_REVISION: 使用 Hugging Face Hub 上的特定模型代码版本。
  • --tokenizer-revision TOKENIZER_REVISION: 使用的特定分词器版本(分支名、标签名或提交 ID)。
  • --tokenizer-mode {auto,slow}: 分词器模式。"auto" 使用快速分词器(如有),"slow" 始终使用慢速分词器。
  • --trust-remote-code: 信任 Hugging Face 远程代码。

模型加载和量化

  • --download-dir DOWNLOAD_DIR: 下载和加载权重的目录,默认为 Hugging Face 默认缓存目录。
  • --load-format {auto,pt,safetensors,npcache,dummy}: 模型权重的加载格式。 "auto" 尝试使用 safetensors 格式加载权重,如果不可用则回退到 pytorch bin 格式。
  • --dtype {auto,half,float16,bfloat16,float,float32}: 模型权重和激活的数据类型。"auto" 对于 FP32 和 FP16 模型使用 FP16 精度,对于 BF16 模型使用 BF16 精度。
  • --kv-cache-dtype {auto,fp8_e5m2}: 键值缓存存储的数据类型。 "auto" 使用模型数据类型。注意,FP8 仅在 CUDA 版本高于 11.8 时支持。
  • --max-model-len MAX_MODEL_LEN: 模型上下文长度。如果未指定,将自动从模型中推导。

性能优化

  • --pipeline-parallel-size PIPELINE_PARALLEL_SIZE, -pp PIPELINE_PARALLEL_SIZE: 管道并行阶段的数量。
  • --tensor-parallel-size TENSOR_PARALLEL_SIZE, -tp TENSOR_PARALLEL_SIZE: 张量并行副本的数量。
  • --max-parallel-loading-workers MAX_PARALLEL_LOADING_WORKERS: 使用多个批次顺序加载模型,以避免使用张量并行和大模型时的内存不足。
  • --gpu-memory-utilization GPU_MEMORY_UTILIZATION: 模型执行器使用的 GPU 内存百分比,范围为 0 到 1。若未指定,将使用默认值 0.9。
  • --swap-space SWAP_SPACE: 每个 GPU 的 CPU 交换空间大小(以 GiB 为单位)。
  • --block-size {8,16,32,128}: 令牌块大小。
  • --max-num-batched-tokens MAX_NUM_BATCHED_TOKENS: 每次迭代的最大批处理令牌数。
  • --max-num-seqs MAX_NUM_SEQS: 每次迭代的最大序列数。
  • --max-logprobs MAX_LOGPROBS: 返回的最大日志概率数量。

SSL 配置

  • --ssl-keyfile SSL_KEYFILE: SSL 密钥文件的路径。
  • --ssl-certfile SSL_CERTFILE: SSL 证书文件的路径。
  • --ssl-ca-certs SSL_CA_CERTS: CA 证书文件。
  • --ssl-cert-reqs SSL_CERT_REQS: 是否需要客户端证书(参见标准库的 SSL 模块)。

其他配置

  • --root-path ROOT_PATH: 在基于路径的路由代理后面时使用的 FastAPI 根路径。
  • --middleware MIDDLEWARE: 应用到应用程序的额外 ASGI 中间件。可以接受多个 --middleware 参数,值应为导入路径。
  • --max-log-len MAX_LOG_LEN: 日志中打印的最大提示字符或提示 ID 数量,默认无限制。
  • --enable-prefix-caching: 启用自动前缀缓存。
  • --use-v2-block-manager: 使用 BlockSpaceMangerV2。
  • --num-lookahead-slots NUM_LOOKAHEAD_SLOTS: 实验性调度配置,必要时进行投机解码。

分布式和异步配置

  • --worker-use-ray: 使用 Ray 进行分布式服务,当使用超过 1 个 GPU 时将自动设置。
  • --engine-use-ray: 使用 Ray 在单独的进程中启动 LLM 引擎。
  • --ray-workers-use-nsight: 如果指定,使用 nsight 对 Ray 工作者进行分析。
  • --max-cpu-loras MAX_CPU_LORAS: 存储在 CPU 内存中的最大 LoRAs 数量。必须 >= max_num_seqs,默认为 max_num_seqs
  • --device {auto,cuda,neuron,cpu}: vLLM 执行的设备类型。
  • --enable-lora: 如果为 True,启用 LoRA 适配器处理。

图像输入配置

  • --image-input-type {pixel_values,image_features}: 传递给 vLLM 的图像输入类型,应为 "pixel_values" 或 "image_features"。
  • --image-token-id IMAGE_TOKEN_ID: 图像令牌的输入 ID。
  • --image-input-shape IMAGE_INPUT_SHAPE: 给定输入类型的最大图像输入形状(最差内存占用),仅用于 vLLM 的 profile_run。
  • --image-feature-size IMAGE_FEATURE_SIZE: 沿上下文维度的图像特征大小。

使用示例

以下是一个使用这些参数启动 vLLM 服务器的示例:

vllm-server --host 0.0.0.0 --port 8000 --model gpt-3 --tokenizer gpt-3 --dtype float16 --pipeline-parallel-size 2 --tensor-parallel-size 4 --gpu-memory-utilization 0.8 --ssl-keyfile /path/to/keyfile --ssl-certfile /path/to/certfile

通过这些参数配置,您可以根据不同的需求和环境灵活调整 vLLM 服务器的行为和性能。