基于 vLLM 和 SGLang 的模型推理服务架构旨在结合两个框架的优势:vLLM 提供高性能的 LLM 推理(通过 PagedAttention 等技术实现高吞吐低延迟),SGLang 则提供强大的结构化生成能力(约束解码、多轮对话管理、复杂 prompt 编程)。下面详细描述这种架构的设计思路、组件交互以及部署考量。


1. 核心组件简介

  • vLLM
    一个专为 LLM 推理和服务优化的库,核心创新是 PagedAttention 内存管理机制,可显著提升 KV 缓存的利用率,支持连续批处理、量化、张量并行等特性,并提供 OpenAI 兼容的 API 接口。

  • SGLang
    一个面向 LLM 的结构化生成语言框架,包含:

    • 前端语言:基于 Python 的嵌入式 DSL,用于描述包含控制流、约束(如正则、JSON 模式)的生成任务。

    • 运行时(SRT, SGLang Runtime):负责解析前端程序、管理请求队列、调度后端引擎执行,并支持与多种推理后端(vLLM、LightLLM、PyTorch 等)集成。


2. 总体架构

下图展示了基于 vLLM 和 SGLang 的推理服务典型架构:

┌─────────────┐      ┌─────────────────────────────────┐      ┌─────────────┐
│  客户端     │─────▶│        SGLang 运行时 (SRT)       │─────▶│  vLLM 引擎  │
│  (HTTP/gRPC)│      │  - 解析结构化请求                 │      │  - 模型加载 │
└─────────────┘      │  - 约束编译/缓存                  │      │  - PagedAttention │
                     │  - 请求调度与负载均衡              │      │  - 连续批处理 │
                     │  - 多模型/多副本管理               │      └─────────────┘
                     └─────────────────────────────────┘            │
                                                                     │
                              ┌──────────────────────────────────────┘
                              │
                    ┌─────────▼─────────┐
                    │   可选:多个 vLLM   │
                    │   实例(分布式)    │
                    └───────────────────┘

工作流程

  1. 客户端通过 HTTP 或 gRPC 向 SGLang 运行时发送请求,请求内容可以是一个结构化生成任务(例如一段包含 select 和 gen 语句的 Python 代码)或纯文本提示。

  2. SGLang 运行时解析任务,将其转换为内部中间表示(IR),并应用约束编译(如正则表达式编译为有限状态机)。

  3. 运行时根据请求类型、模型名称、当前负载等因素,选择合适的后端引擎(此处为 vLLM)并提交执行请求。

  4. vLLM 引擎执行推理:加载模型权重,利用 PagedAttention 管理 KV 缓存,以连续批处理方式处理请求,生成 token 并返回结果。

  5. SGLang 运行时收集输出,可能根据前端定义的格式进行后处理,最后返回给客户端。


3. 组件交互细节

3.1 SGLang 运行时(SRT)与 vLLM 的集成方式

SGLang 支持两种模式与 vLLM 协同工作:

  • 内嵌模式:将 vLLM 作为 Python 库直接导入 SGLang 运行时进程。这种方式延迟最低,但要求运行时与 vLLM 共享 GPU 资源,适合单机部署。

  • 远程模式:SGLang 运行时通过 HTTP 或 gRPC 调用独立部署的 vLLM 服务。这种方式可以实现更好的隔离、弹性伸缩和多模型管理,适合大规模生产环境。

SGLang 提供了一个抽象的后端接口,可以轻松接入不同的推理引擎。对于 vLLM,SGLang 官方已内置适配器,能够将 SGLang 的内部请求格式转换为 vLLM 的 API 调用(如 vllm.LLM 类或 OpenAI 兼容接口)。

3.2 结构化生成的实现

SGLang 的前端语言允许开发者编写类似以下代码的生成逻辑:

@function
def multi_turn(s, question):
    s += "User: " + question + "\n"
    s += "Assistant: " + gen("answer", max_tokens=256, regex="\d+\.\d+") + "\n"

当 SGLang 运行时接收到此任务时,会:

  • 将 gen 调用中的约束(如正则 \d+\.\d+)编译为约束状态机。

  • 在向 vLLM 发起生成请求时,将约束信息以某种方式传递给后端。vLLM 本身不支持约束解码,因此 SGLang 运行时需要在 vLLM 生成过程中介入:它可以通过“请求-响应”循环模式,逐 token 向 vLLM 请求下一个 token 的概率分布,然后根据约束状态机进行采样或拒绝,直到满足约束。这种方式虽然增加了交互次数,但保证了生成的结构符合预期。SGLang 对此进行了优化,例如批处理多个约束请求以减少开销。

3.3 调度与负载均衡

SGLang 运行时内置了智能调度器,可以根据:

  • 请求的优先级(例如延迟敏感 vs 吞吐量优先)

  • 当前各后端引擎的负载(如 GPU 利用率、队列长度)

  • 模型版本(如通过哈希值区分不同微调版本)

将请求路由到最合适的 vLLM 实例。如果使用远程模式,可以结合服务发现组件(如 etcd、Consul)动态管理 vLLM 实例列表。


4. 部署与扩展性考量

4.1 部署方案

  • 单机部署:将 SGLang 运行时和 vLLM 引擎部署在同一台机器上,共享 GPU 资源。适合开发测试或中小规模场景。

  • 集群部署(Kubernetes)

    • 将 SGLang 运行时作为无状态服务部署,通过 Horizontal Pod Autoscaler 根据 QPS 自动扩缩。

    • 将 vLLM 引擎部署为有状态的工作负载(StatefulSet),每个 Pod 加载一个模型副本,通过内部服务暴露 gRPC/HTTP 端点。

    • 使用服务网格(如 Istio)进行细粒度的流量控制和灰度发布。

4.2 模型并行与多卡推理

vLLM 本身支持张量并行(Tensor Parallelism)和流水线并行(Pipeline Parallelism),可以在多卡或多节点上运行大模型。在架构中,vLLM 引擎可以以分布式方式启动,例如通过 Ray 或直接使用 torch.distributed。SGLang 运行时只需知道如何将请求发送到这些分布式 vLLM 的协调入口(通常是主节点),而无需关心内部并行细节。

4.3 缓存与加速

  • SGLang 缓存:约束编译结果可以缓存,避免重复编译相同正则或 JSON schema。

  • vLLM 缓存:vLLM 的 PagedAttention 本质上是 KV 缓存的复用,同时 vLLM 也支持 prefix caching(前缀缓存),可以在多轮对话或相似请求中复用部分 KV 缓存,显著降低首 token 延迟。SGLang 运行时可以提示 vLLM 利用这一特性(例如传递对话历史)。


5. 优势与应用场景

5.1 优势

  • 高性能推理:vLLM 的 PagedAttention 和连续批处理确保高吞吐量。

  • 灵活结构化生成:SGLang 的前端语言和约束解码使得开发者能精确控制输出格式,特别适合需要 JSON、代码、数学表达式等场景。

  • 资源隔离与弹性:通过分层架构(SGLang 负责控制平面,vLLM 负责数据平面),可以实现更好的资源管理和故障隔离。

  • 多模型支持:SGLang 运行时可以同时对接多个 vLLM 后端(不同模型或不同版本),并实现统一入口。

5.2 典型应用场景

  • 对话系统:利用 SGLang 管理多轮对话状态,vLLM 负责生成回复。

  • 结构化数据提取:从非结构化文本中提取符合 JSON schema 的信息。

  • 代码生成:约束生成符合语法规则的代码片段。

  • 复杂推理任务:例如 Chain-of-Thought 中要求中间步骤符合特定格式。


6. 总结

基于 vLLM 和 SGLang 的推理服务架构将两个前沿技术有机融合:vLLM 提供坚实的推理性能基础,SGLang 带来灵活的结构化生成能力。通过合理的分层设计和集成方式,该架构既能满足高并发生产环境的需求,又能适应复杂的生成任务约束,是当前 LLM 服务化部署的有力选项。未来随着两个项目的演进,集成度与性能有望进一步提升。

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐