在线服务¶
vLLM 提供了一个兼容多种接口的 HTTP 服务器!
兼容 OpenAI 的服务器¶
我们目前支持以下 OpenAI API
- 文本补全 (Completions) API (
/v1/completions)- 仅适用于 文本生成模型。
- 注意:不支持
suffix参数。
- 对话补全 (Chat Completions) API (
/v1/chat/completions) - 对话补全批处理 (Chat Completions batch) API (
/v1/chat/completions/batch) - 响应 (Responses) API (
/v1/responses,/v1/responses/{response_id},/v1/responses/{response_id}/cancel)- 仅适用于 文本生成模型。
- 嵌入 (Embeddings) API (
/v1/embeddings)- 仅适用于 嵌入模型。
- 转录 (Transcriptions) API (
/v1/audio/transcriptions)- 仅适用于 自动语音识别 (ASR) 模型。
- 翻译 (Translation) API (
/v1/audio/translations)- 仅适用于 自动语音识别 (ASR) 模型。
Anthropic API¶
- Anthropic 消息 API (
/v1/messages,/v1/messages/count_tokens)
Cohere API¶
- Cohere Embed API (
/v2/embed)- 兼容 Cohere 的 Embed API
- 适用于任何 嵌入模型,包括多模态模型。
- Cohere Rerank API (
/rerank,/v1/rerank,/v2/rerank)
Pooling API¶
有关 pooling 模型的更多详情,请参考 此页面。
- 分类用法
- 分类 (Classification) API (
/classify) - 仅适用于 分类模型。
- 分类 (Classification) API (
- 嵌入用法
- Cohere Embed API (
/v2/embed) - 兼容 OpenAI 的嵌入 API (
/v1/embeddings) - 仅适用于 嵌入模型。
- Cohere Embed API (
- 评分用法
- 评分 (Score) API (
/score,/v1/score) - Cohere Rerank API (
/rerank,/v1/rerank,/v2/rerank) - 适用于 评分模型(cross-encoder、bi-encoder、late-interaction)。
- 评分 (Score) API (
- Pooling API (
/pooling)- 适用于所有 pooling 模型。
语音转文本 (Speech to Text) API¶
有关语音转文本的更多详情,请参考 此页面。
- 转录 (Transcriptions) API (
/v1/audio/transcriptions)- 仅适用于 自动语音识别 (ASR) 模型。
- 翻译 (Translation) API (
/v1/audio/translations)- 仅适用于 自动语音识别 (ASR) 模型。
- 实时 API (
/v1/realtime)- 仅适用于 自动语音识别 (ASR) 模型。
自定义 API¶
- 分类 API (
/classify)- 仅适用于 分类模型。
- 评分 (Score) API (
/score,/v1/score)- 适用于 评分模型(cross-encoder、bi-encoder、late-interaction)。
- Pooling API (
/pooling)- 适用于所有 pooling 模型。
- 生成式评分 API (
/generative_scoring)- 适用于 CausalLM 模型 (任务类型
"generate")。 - 计算指定
label_token_ids的下一 token 概率。
- 适用于 CausalLM 模型 (任务类型
Instrumentator API¶
基础 API¶
/version- 版本信息/load- 服务器负载指标/v1/models- 列出可用模型/health- 健康检查
指标 (Metrics) API¶
有关指标的更多详情,请参考 此页面。
/metrics- 兼容 Prometheus 的指标 HTTP 端点
离线 API 文档¶
FastAPI 的 /docs 端点默认需要互联网连接。要在离线(气隙)环境中启用访问,请使用 --enable-offline-docs 标志
LoRA 动态加载¶
API 服务器中启用了 LoRA 动态加载和卸载。这应当仅用于本地开发!
/v1/load_lora_adapter- LoRA 动态加载/v1/unload_lora_adapter- LoRA 动态卸载
性能分析 API¶
有关 vLLM 性能分析的更多详情,请参考 此页面。
/start_profile- 启动 PyTorch 分析器/stop_profile- 停止 PyTorch 分析器
SageMaker API¶
/ping- SageMaker 健康检查/invocations- 兼容 SageMaker 的端点(路由到与/v1端点相同的推理函数)
水平扩展 API¶
Tokens 输入输出 (IN <> OUT) API¶
/inference/v1/generate- 生成补全/abort_requests- 中止进行中的请求(仅当同时设置--tokens-only时)
渲染器 (Renderer) API¶
有关渲染器 API 的更多详情,请参考 此页面。
- 文本补全渲染 API (
/v1/completions/render)- 渲染文本补全请求
- 对话补全渲染 API (
/v1/chat/completions/render)- 渲染对话补全请求
Derenderer API¶
/v1/completions/derender- Derenderer 文本补全请求/v1/chat/completions/derender- Derenderer 对话补全请求
分词 (Tokenize) API¶
/tokenize- 文本分词/detokenize- 词元 (tokens) 反分词/tokenizer_info- 获取完整的分词器信息,包括对话模板和配置
弹性专家并行 (EEP)¶
/scale_elastic_ep- 触发缩放操作/is_scaling_elastic_ep- 检查是否正在进行缩放
开发模式下的服务器¶
使用 VLLM_SERVER_DEV_MODE=1 标志时,你将启用开发端点。
安全警告:这些端点不应用于生产环境!
缓存管理 API¶
/reset_prefix_cache- 重置前缀缓存(可能会中断服务)/reset_mm_cache- 重置多模态缓存(可能会中断服务)/reset_encoder_cache- 重置编码器缓存(可能会中断服务)
权重传输 API (强化学习训练)¶
有关权重传输的更多详情,请参考 此页面。
/pause- 暂停生成(会导致拒绝服务)/resume- 恢复生成/is_paused- 检查生成是否已暂停/abort_requests- 在不暂停调度程序的情况下中止进行中的请求(所有请求或给定的request_ids)/init_weight_transfer_engine- 为 RLHF 初始化权重传输引擎/start_weight_update- 为权重更新准备推理引擎。/update_weights- 更新模型权重(可能会改变模型行为)/finish_weight_update- 完成权重更新/get_world_size- 获取分布式 World Size
集体 RPC (Collective RPC)¶
/collective_rpc- 在引擎上执行任意 RPC 方法(极端危险)
服务器信息¶
/server_info- 获取详细的服务器配置
睡眠模式 API¶
有关睡眠模式的更多详情,请参考 此页面。
/sleep- 使引擎进入睡眠状态(会导致拒绝服务)/wake_up- 将引擎从睡眠中唤醒/is_sleeping- 检查引擎是否处于睡眠状态
对话模板¶
为了使语言模型支持对话协议,vLLM 要求模型在其分词器配置中包含对话模板。对话模板是一个 Jinja2 模板,它规定了角色、消息和其他对话特定词元在输入中是如何编码的。
NousResearch/Meta-Llama-3-8B-Instruct 的对话模板示例可以在 这里 找到
有些模型虽然经过了指令/对话微调,但并未提供对话模板。对于这些模型,你可以通过 --chat-template 参数手动指定其对话模板(文件路径或字符串形式)。如果没有对话模板,服务器将无法处理对话,所有对话请求都会报错。
vLLM 社区为热门模型提供了一系列对话模板。你可以在 examples 目录下找到它们。
随着多模态对话 API 的加入,OpenAI 规范现在接受一种新格式的对话消息,该格式同时指定了 type 和 text 字段。示例如下
completion = client.chat.completions.create(
model="NousResearch/Meta-Llama-3-8B-Instruct",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Classify this sentiment: vLLM is wonderful!"},
],
},
],
)
大多数 LLM 的对话模板期望 content 字段是一个字符串,但一些较新的模型(如 meta-llama/Llama-Guard-3-1B)期望内容按照请求中的 OpenAI 架构进行格式化。vLLM 提供尽力而为的自动检测支持,并会记录类似于 "Detected the chat template content format to be..." 的日志,且会在内部转换传入请求以匹配检测到的格式。格式可能是以下之一:
"string":字符串。- 示例:
"Hello world"
- 示例:
"openai":字典列表,类似于 OpenAI 架构。- 示例:
[{"type": "text", "text": "Hello world!"}]
- 示例:
如果结果不符合预期,你可以设置 --chat-template-content-format 命令行参数来覆盖所使用的格式。
Ray Serve LLM¶
Ray Serve LLM 可实现 vLLM 引擎的可扩展、生产级推理服务。它与 vLLM 紧密集成,并扩展了自动缩放、负载均衡和反压 (back-pressure) 等功能。
关键能力
- 提供兼容 OpenAI 的 HTTP API 以及 Pythonic API。
- 无需修改代码即可从单 GPU 扩展到多节点集群。
- 通过 Ray 仪表板和指标提供可观测性和自动缩放策略。
以下示例展示了如何使用 Ray Serve LLM 部署像 DeepSeek R1 这样的大型模型: examples/ray_serving/ray_serve_deepseek.py。
通过官方的 Ray Serve LLM 文档 了解更多信息。