SGLang 速懂:多副本,不只是轮流分发

SGLang Model Gateway(SMG,前身是 SGLang Router)站在客户端和多个 worker 之间,负责选实例、转发请求,也负责健康检查、排队和故障处理。官方把它定位为生产级 Data Parallelism 的推荐入口,并明确提醒 Native DP 当前不建议用于生产。1

路由器在看什么

SMG 默认使用 cache_aware。它为每个 worker 维护一棵近似 radix tree,用请求文本的前缀匹配度估计「这台机器能不能复用已有缓存」;匹配度超过默认阈值 0.3 时,优先送到匹配度最高的 worker,匹配不足时再考虑缓存容量和负载差。23
这和 round_robin 的思路不同:后者先追求分布均匀,cache_aware 先追求少做重复计算。对共享 system prompt、多轮对话和重复 RAG 文档,这个取舍更有意义;没有共享前缀时,别期待它凭空带来加速。

一条请求怎么走

客户端请求先到 SMG,再由 SMG 选 worker 并把结果按原协议返回。它对外提供 OpenAI 兼容接口,也支持 worker 动态加入或移除。后台健康检查默认每 60 秒探测一次,连续失败的实例会暂时退出接流;队列满返回 429,等待超时返回 408。23
最小部署有两种入口:每个副本单独启动 sglang.launch_server,再用 sglang_router.launch_router --worker-urls ... 汇聚;或者直接用 sglang_router.launch_server --dp-size N 一体启动。生产环境要先确认入口、版本和实际 worker 拓扑,不要只因为参数名都叫 --dp-size 就把两者当成同一件事。1

数字怎么读

SGLang v0.4 官方基准在 8× A100 80GB、Llama 3.1 8B Instruct、dp-size=8、多组共享长前缀的负载下,报告吞吐从 82,665 token/s 提升到 158,596 token/s,缓存命中率从 20% 提升到 75%。这对应吞吐 +92%、缓存命中率 +275%,但它描述的是共享前缀条件下的结果,不是所有业务请求的通用加速承诺。4

方案评估时再问三句

  1. 请求是否真的共享前缀?先看缓存命中率,再看吞吐和 TTFT。
  2. 你要解决的是副本之间的选择,还是 prefill 内部的长短请求干扰?独立论文 LAPS 将 SGLang Router 作为基线,仍观察到混合 prefill 负载中的计算与内存干扰,说明 Router 不是所有调度问题的答案。5
  3. 你是否把 PD、DP、Kubernetes 和网关高可用一起上线?PD+DP 的组合路由有单独的社区整合记录,Router HA 也仍有公开设计提案,部署前应按目标版本和拓扑做故障切换验证。67

This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.

Related content

Comments