Skip to content

SGLang Model Gateway 入门

在大规模部署 LLM 的生产环境中,核心挑战在于如何高效管理异构模型实例、平衡高并发请求负载,并确保企业级服务可靠性。SGLang 推出的 SGLang Model Gateway(模型网关,前称 SGLang Router)正是为解决这些问题设计的高性能、多功能路由网关。

1. 什么是 Model Gateway

Model Gateway 是所有 LLM Worker 集群的前端门面与中央调度系统。设想有 4 台 GPU 服务器运行同一个大模型:

  • 无调度器时,请求可能固定落到某台服务器,导致其他机器空闲。
  • 随机分配时,每台服务器都要重新计算完整上下文,浪费算力。

Gateway 作为智能调度中心:

  • 了解哪台服务器已缓存相似问题,优先复用 KV Cache。
  • 某台服务器故障时自动重试或路由到其他可用节点。
  • 集中管理不同协议(HTTP、gRPC)的 Worker 生命周期。

核心功能可概括为三点:

  1. 集中管理:注册、监控与管理所有后端 LLM Worker 实例。
  2. 智能路由:根据实时负载、缓存状态(Cache-Aware)等因素,将请求分配给最合适的 Worker。
  3. 企业级特性:提供重试、熔断、限流、会话历史存储等企业级能力。

2. 架构核心

2.1 控制平面与数据平面分离

  • 控制平面

    • Worker 生命周期管理:通过 /get_server_info 等接口发现 Worker 能力,跟踪负载状态。
    • 健康检查与容错:持续探测 Worker 状态,更新就绪性与熔断器状态。
  • 数据平面

    • 多协议路由:统一处理 HTTP、gRPC 与 OpenAI 兼容 API 请求。
    • 高吞吐 gRPC 管线:Rust 实现,集成原生分词器、推理解析器与工具调用执行器。
    • OpenAI 兼容代理:可代理外部 OpenAI 兼容服务,同时在本地保留会话历史。

2.2 智能调度与可靠性

功能模块说明
负载均衡策略round_robin(轮询)、power_of_two、以及 LLM 关键的 cache_aware(缓存感知)
可靠性与流控指数退避重试、基于失败阈值的熔断器、基于令牌桶的速率限制与排队
数据隐私与历史存储集中存储会话与响应历史,支持内存、Oracle ATP 等后端
可观测性Prometheus 指标、结构化追踪、请求 ID 传播

3. 核心特性

3.1 缓存感知负载均衡

默认策略不再是简单轮询,而是优先选择缓存匹配度高的服务器。例如,当请求前 100 个 Token 与某服务器缓存一致时,可直接接续生成,无需从头计算。在长对话或多轮问答中性能提升尤为显著。

3.2 多种部署模式

模式适用场景特点
一体化模式单机测试一条命令启动 Router + 多个 Worker
独立部署模式多机集群Router 与 Worker 分开部署,灵活组合
Prefill / Decode 解耦模式异构硬件优化GPU 负责 Prefill,CPU 负责轻量 Decode

3.3 自动容错

  • 请求失败时自动重试最多 3 次,采用指数退避。
  • 某服务器连续失败达到阈值时暂时隔离,恢复后重新加入。
  • 有效避免雪崩效应。

3.4 动态扩缩容

运行中动态添加节点:

bash
curl -X POST "http://router:30000/add_worker?url=http://new-worker:8000"

在 Kubernetes 环境中支持通过标签自动发现 Pod。

4. 五种部署模式

4.1 一体化启动

Gateway 与 SGLang Worker 在同一进程启动,适合单节点或快速测试。

bash
python -m sglang_router.launch_server \
  --model meta-llama/Meta-Llama-3.1-8B-Instruct \
  --dp-size 4 \
  --host 0.0.0.0 \
  --port 30000 \
  --router-policy round_robin

完整示例:

bash
python3 -m sglang_router.launch_server \
  --host 0.0.0.0 \
  --port 8080 \
  --model meta-llama/Llama-3.1-8B-Instruct \
  --tp-size 1 \
  --dp-size 8 \
  --grpc-mode \
  --log-level debug \
  --router-prometheus-port 10001 \
  --router-tool-call-parser llama \
  --router-health-success-threshold 2 \
  --router-health-check-timeout-secs 6000 \
  --router-health-check-interval-secs 60 \
  --router-model-path meta-llama/Llama-3.1-8B-Instruct \
  --router-policy round_robin \
  --router-log-level debug

4.2 独立 HTTP 模式

Worker 独立运行并暴露 HTTP API,Gateway 通过 URL 列表发现并连接。

bash
# 在 Worker 节点启动 SGLang Worker
python -m sglang.launch_server --model ... --port 8000 &

# 在 Gateway 节点启动 Router
python -m sglang_router.launch_router \
  --worker-urls http://worker1:8000 http://worker2:8001 \
  --policy cache_aware \
  --host 0.0.0.0 --port 30000

4.3 高性能 gRPC 模式

利用 SGLang SRT gRPC 协议获得最高吞吐,并复用 Rust 实现的原生推理与工具解析管线。

bash
# Worker 以 gRPC 模式启动
python -m sglang.launch_server \
  --model meta-llama/Llama-3.1-8B-Instruct \
  --grpc-mode \
  --port 20000

# 启动 Router
python -m sglang_router.launch_router \
  --worker-urls grpc://127.0.0.1:20000 \
  --model-path meta-llama/Llama-3.1-8B-Instruct \
  --host 0.0.0.0 --port 8080

gRPC Router 需提供 --tokenizer-path--model-path(Hugging Face 模型路径或本地目录),以及可选 --chat-template

4.4 Prefill / Decode 解耦模式

bash
python -m sglang_router.launch_router \
  --pd-disaggregation \
  --prefill http://prefill1:30001 \
  --decode http://decode1:30011 \
  --policy cache_aware \
  --prefill-policy cache_aware \
  --decode-policy power_of_two

4.5 代理外部服务

Gateway 作为代理层,将请求转发给外部 OpenAI 兼容 API。多轮会话历史与 MCP 状态在 Gateway 本地管理,保护数据隐私。

bash
python -m sglang_router.launch_router \
  --backend openai \
  --worker-urls https://api.openai.com \
  --history-backend memory

OpenAI 后端模式要求每个 Router 实例仅配置一个 --worker-urls 条目。

5. 高级调优

5.1 增强缓存复用

调整缓存匹配阈值(默认 0.5):

bash
--cache-threshold 0.7

5.2 负载不均

放宽负载均衡判断条件:

bash
--balance-abs-threshold 64   # 默认 32
--balance-rel-threshold 1.1  # 默认 1.0001

5.3 Kubernetes 部署

bash
python -m sglang_router.launch_router \
  --service-discovery \
  --selector app=sglang-worker env=prod \
  --service-discovery-namespace production

5.4 启用监控

bash
--prometheus-host 0.0.0.0 --prometheus-port 29000

然后访问 http://your-router:29000/metrics 查看实时指标。

6. 常见问题

  • Worker 启动慢,Router 报错连不上:增加等待时间 --worker-startup-timeout-secs 600
  • 内存占用越来越高:限制缓存树大小 --max-tree-size 8388608(约 800 万节点)。
  • 想关闭熔断器:添加 --disable-circuit-breaker

总结

SGLang Model Gateway 为构建高性能、可扩展 LLM 服务提供了:

  • 极致性能:gRPC 管线与 cache_aware 调度最大化集群吞吐。
  • 企业级可靠性:内置熔断、重试与限流。
  • 数据主权:即使使用外部 LLM,也能通过本地历史存储保护敏感会话数据。

Model Gateway 是 SGLang 生态中解决现代 LLM 大规模部署路由与管理挑战的核心组件。

参考

Maintained by Robin