vLLM Production Stack 的语义智能层
1. 概述
本文旨在概述 vLLM Semantic Router 与 vLLM Production Stack 之 间的全面集成策略。vLLM Production Stack 是一个用于大规模部署 vLLM 的云原生参考系统,提供了多种部署方式来启动 vLLM 服务器、请求路由和可观测性堆栈。请求路由可以将流量导向不同的模型,通过 Kubernetes API 执行服务发现和容错,并支持轮询 (Round-robin)、基于会话、前缀感知 (Prefix-aware)、KV 感知 (KV-aware) 以及具有 LMCache 原生支持的分离式预填充路由。Semantic Router 增加了一个 系统智能层,用于对每个用户请求进行分类,从模型池中选择最合适的模型,注入特定领域的系统提示词 (System Prompt),执行语义缓存,并强制执行企业级安全检查(如 PII 和 Jailbreak 检测)。
通过结合这两个系统,我们构建了一个统一的推理堆栈。Semantic Router 确保每个请求都由最合适的模型回答;Production Stack 路由最大限度地提高了基础设施和推理效率,并公开了丰富的指标。它们共同提供:
- 系统级智能 — 理解用户意图,选择正确的模型,注入适当的系统提示词并预过滤工具。
- 基础设施效率 — 从单个实例扩展到分布式 vLLM 部署而无需更改应用程序代码,通过 Token 级优化和 LMCache 原生支持在多个模型之间路由流量。
- 安全与合规 — 在 PII 和 Jailbreak 提示词到达模型之前将其拦截。
- 可观测性 — 通过 Production Stack 的 Grafana 仪表板监控请求、延迟和 GPU 使用情况,并追踪 Semantic Router 的决策。
2. 动机:为什么在 Production Stack 中使用 Semantic Router?
2.1 Production Stack 能力(当前状态)
vLLM Production Stack 为大规模服务大语言模型提供了构建模块:
| 能力 | 描述 |
|---|---|
| 分布式部署 | 部署具有 LMCache 原生支持的多个 vLLM 实例,在不更改应用程序代码的情况下从单实例扩展到多实例集群。 |
| 请求路由 | 将请求路由到不同的模型和实例,支持包括分离式预填充、KV Cache 感知、前缀感知、会话和基于轮询的多种路由逻辑。 |
| 服务发现与容错 | 使用 Kubernetes API 进行自动发现,并从池中移除故障节点。 |
| 可观测性 | 提供 Grafana 仪表板以显示延迟分布、首字延迟 (TTFT)、运行中或挂起的请求数量以及 GPU KV Cache 使用情况。 |
| 部署简易性 | 使用 Helm Charts/CRD/推理网关安装堆栈并公开 OpenAI 兼容的 API。 |
这些功能优化了基础设施的使用,但在路由 Token 和请求的级别上运行,而不是基于请求的含义。路由无法感知任务的复杂性或领域,除了简单的用户指定模型 ID 之外,不会决定由哪个模型处理给定的提示词。
2.2 Semantic Router 能力(语义智能层)
Semantic Router 在 vLLM 之上增加了系统级智能:
| 能力 | 描述 |
|---|---|
| 模型混合路由 | 对每个传入的 OpenAI API 请求进行分类,并根据任务复杂性和领域选择最合适的模型。通过将任务路由到专门的模型而不是单一的通用模型,提高了准确性。 |
| 自动工具选择 | 识别哪些外部工具与提示词相关,减少不必要的工具调用。 |
| 特定类别的系统提示词 | 根据查询分类注入专门的系统提示词(数学、编码、业务等),以提高推理能力和 Token 效率。 |
| 安全过滤器 | 检测 PII 并拦截包含敏感数据的提示词;识别 Jailbreak 提示词并防止其被发送到 LLM。 |
| 相似性缓存 | 使用嵌入 (Embedding) 来缓存提示词的语义表示;如果新提示词与之前的提示词相似,则可以立即返回缓存的响应。 |
| 分布式追踪 | 发出涵盖分类、安全检查、缓存和路由决策的 OpenTelemetry 追踪。 |
这些能力实现了任务感知推理,可以根据每个请求调整推理深度和模型选择。然而,Semantic Router 不管理 GPU 资源或 KV Cache,在与可扩展的服务堆栈耦合时运行效果最佳。