跳到主要内容

概述与架构

1.1 项目分类

类型: 混合型 — 服务器/服务 + CLI 工具 + 库/SDK

SGLang 主要是一个长期运行的推理服务器(SRT = SGLang Runtime),暴露与 OpenAI 兼容的 HTTP/gRPC API,用于 LLM 和多模态模型服务。它还提供:

  • 一个 CLI 工具sglang servesglang generate)用于启动和与服务器交互
  • 一个 Python 库/SDKEngine 类)用于在无需运行独立服务器进程的情况下进行编程访问
  • 一个 前端语言sglang.lang)用于以领域特定语法编写 LLM 程序
  • 一个 模型网关sgl-model-gateway)用 Rust 编写,用于跨多个后端的路由和负载均衡

1.2 技术栈

组件技术版本 / 备注
主要语言Python3.10+,2788 个 .py 文件
网关语言RustEdition 2021,248 个 .rs 文件
CUDA 内核C++/CUDA53 个 .h + 37 个 .cpp/.cu 文件
Go 工具Go22 个 .go 文件
ML 框架PyTorch2.9.1
Transformer 库HuggingFace Transformers5.3.0
HTTP 框架FastAPI + Uvicorn使用 uvloop 实现异步
异步运行时uvloop高性能事件循环
IPCZeroMQ (pyzmq)用于 scheduler/tokenizer/detokenizer 进程间通信
Attention 内核FlashInfer0.6.7.post3
自定义内核sglang-kernel0.4.1(CMake + scikit-build-core)
语法引擎xgrammar / llguidance / outlines结构化输出
序列化orjson, msgspec快速 JSON
指标prometheus-clientOpenMetrics 格式
链路追踪OpenTelemetry分布式追踪
量化torchao, compressed-tensorsFP4/FP8/INT4/AWQ/GPTQ
分布式NCCL (pynccl), MSCCL++, 自定义 all-reduce张量/流水线/专家并行
构建系统(Python)setuptoolspyproject.toml
构建系统(内核)scikit-build-core + CMakesgl-kernel/pyproject.toml
构建系统(网关)Cargosgl-model-gateway/Cargo.toml

可选/条件后端

  • NVIDIA CUDA — 主要 GPU 后端(GB200/B300/H100/A100/5090)
  • AMD ROCm — 通过 AITER/Wave 后端支持 MI355/MI300
  • Intel CPU — 支持 AMX 的 Xeon
  • Intel XPU — GPU 支持
  • Google TPU — 通过 SGLang-Jax 后端
  • Ascend NPU — 华为 Ascend 支持
  • MoRI — AMD 的 MoE 路由优化

1.3 目录映射

目录用途
python/sglang/主要 Python 包根目录
python/sglang/srt/SGLang Runtime (SRT) — 核心服务引擎:调度器、模型执行器、KV 缓存、层、模型
python/sglang/srt/entrypoints/HTTP/gRPC 服务器入口点,OpenAI/Anthropic/Ollama API 处理器
python/sglang/srt/managers/进程管理器:Scheduler、TokenizerManager、DetokenizerManager、TpWorker
python/sglang/srt/mem_cache/KV 缓存:RadixAttention 树、内存池、存储后端(aibrix, lmcache, mooncake, nixl, hf3fs)
python/sglang/srt/layers/神经网络层:RadixAttention、linear、sampler、communicator、quantization、vocab embedding
python/sglang/srt/models/模型实现 — 169 个文件,覆盖 Llama、DeepSeek、Qwen、Gemma、Mistral、GPT 等
python/sglang/srt/disaggregation/Prefill-Decode 分离:传输后端(mooncake, nixl, mori, ascend)
python/sglang/srt/distributed/分布式训练/服务:并行状态、NCCL 通信器、自定义 all-reduce
python/sglang/srt/speculative/推测解码:EAGLE、ngram、独立 draft worker
python/sglang/srt/constrained/结构化输出 / 约束解码:xgrammar、llguidance、outlines 后端
python/sglang/srt/lora/多 LoRA 批处理:注册表、管理器、Triton/Torch/Ascend 后端
python/sglang/srt/sampling/采样逻辑:参数、惩罚库、自定义 logit 处理器
python/sglang/srt/observability/可观测性:Prometheus 指标、OpenTelemetry 追踪、CPU 监控
python/sglang/srt/configs/配置数据类:ModelConfig、ServerArgs、LoadConfig、DeviceConfig
python/sglang/srt/grpc/gRPC 服务器协议定义
python/sglang/srt/hardware_backend/NPU、CPU 等的硬件抽象
python/sglang/srt/eplb/MoE 模型的专家并行负载均衡
python/sglang/srt/elastic_ep/弹性专家并行:动态专家重新分配
python/sglang/srt/dllm/扩散 LLM 支持(LLaDA 风格)
python/sglang/srt/multiplex/多路复用服务支持
python/sglang/srt/function_call/工具/函数调用解析器和执行器
python/sglang/srt/parser/聊天模板和补全模板解析器
python/sglang/srt/tokenizer/分词器封装
python/sglang/srt/utils/共享工具:网络、PyTorch 补丁、看门狗、内存节省器
python/sglang/lang/SGLang 前端语言:解释器、IR、追踪器、后端
python/sglang/cli/CLI 命令:serve、generate、killall
python/sglang/multimodal_gen/扩散模型服务(WAN、Qwen-Image)
python/sglang/jit_kernel/JIT 编译的 Triton/CUDA 内核
sgl-kernel/预编译 CUDA 内核库:attention、MoE、allreduce、mamba、quantization
sgl-model-gateway/基于 Rust 的 LLM 网关:路由、负载均衡、熔断、认证
benchmark/基准测试:hellaswag、mmlu、gsm8k、deepseek_v3、mtbench 等
test/测试套件:pytest、SRT 集成测试
docs/Sphinx 文档站点
examples/使用示例:聊天模板、监控、运行时、性能分析器
docker/各平台 Dockerfile(CUDA、ROCm、XPU、NPU、Xeon)
scripts/实用脚本:发布、CI、实验场
3rdparty/第三方代码(AMD)

1.4 模块 / 组件图

模块描述

  • CLIpython/sglang/cli/):命令行界面,用于启动服务器、生成文本和管理进程。解析参数并分派到相应的服务器模式。

  • Engine Orchestratorpython/sglang/srt/entrypoints/engine.py):主入口点,协调所有子进程组件。创建 TokenizerManager、Scheduler 和 DetokenizerManager 进程,管理其生命周期,并提供异步和同步 Python API。

  • TokenizerManagerpython/sglang/srt/managers/tokenizer_manager.py):运行在主进程中。对传入的文本请求进行分词,通过 ZMQ 将其路由到 Scheduler,并将响应流式传输回 HTTP 服务器或 Engine API。

  • Schedulerpython/sglang/srt/managers/scheduler.py):以子进程方式运行。实现核心批调度逻辑 — 连续批处理、通过 RadixCache 实现前缀缓存、内存管理、语法约束解码以及推测解码协调。驱动 TpWorker 进行前向传播。

  • TpWorker / ModelRunnerpython/sglang/srt/managers/tp_worker.pymodel_executor/model_runner.py):张量并行 GPU worker,加载模型权重并执行前向传播。ModelRunner 处理 CUDA 图捕获、权重加载、KV 缓存分配,以及分派到相应的模型实现。

  • RadixCachepython/sglang/srt/mem_cache/radix_cache.py):核心 KV 缓存数据结构,实现 RadixAttention — 一种基数树,支持跨请求的自动前缀共享,显著减少共享系统提示和对话上下文的冗余计算。

  • Memory Poolpython/sglang/srt/mem_cache/memory_pool.py):两级内存管理:ReqToTokenPool 将请求映射到其 token 位置,TokenToKVPoolAllocator 管理物理 KV 缓存槽分配,支持可配置的淘汰策略(LRU、LFU、FIFO 等)。

  • 模型实现python/sglang/srt/models/):169 个模型文件,覆盖所有主要架构 — Llama、DeepSeek(V2/V3/R1 含 MLA)、Qwen、Gemma、Mistral、GPT-2/NeoX、Phi、StarCoder 等。每个模型使用 RadixAttention 层实现自动前缀缓存。

  • Attention 后端注册表python/sglang/srt/layers/attention/attention_registry.py):可插拔的 attention 后端系统。可通过 --attention-backend 标志在运行时选择。支持 FlashInfer、FA3、FA4、FlashMLA、Triton 以及平台特定后端(AMD 的 AITER/Wave、Ascend、Intel AMX/XPU)。

  • GrammarManagerpython/sglang/srt/constrained/grammar_manager.py):编排结构化输出生成。通过可插拔后端(xgrammar、llguidance、outlines)支持 JSON 模式、正则表达式和自定义语法约束。

  • 推测解码 Workerpython/sglang/srt/speculative/):用于推测解码的 draft 模型 worker — EAGLE(带 draft 头的推测解码)、ngram(统计 n-gram 预测)和 standalone(独立的 draft 模型)。

  • LoRA 管理器python/sglang/srt/lora/):动态多 LoRA 批处理。支持运行时加载/卸载 LoRA 适配器,使用 Triton 优化的 SGMV 内核实现高效批处理服务。

  • Model Gatewaysgl-model-gateway/):基于 Rust 的 L7 网关,用于多后端路由。支持 SGLang、vLLM、TRT-LLM、OpenAI 和 Anthropic 后端。包括 JWT/API 密钥认证、熔断和负载感知路由。

  • sgl-kernelsgl-kernel/):预编译 CUDA 内核库,提供 attention、MoE、all-reduce、mamba、quantization 和逐元素操作的优化实现。使用 CMake 构建并以 Python wheel 形式分发。

  • 分离层python/sglang/srt/disaggregation/):支持 prefill-decode 分离,即 prefill 和 decode 在不同的 GPU 节点上运行。KV 缓存通过可插拔后端(Mooncake、NIXL、MoRI)在节点间传输。

  • SGLang 前端语言python/sglang/lang/):领域特定语言,用于编写具有控制流、分支和变量绑定的 LLM 程序。编译为 IR,在后端(SRT、OpenAI、Anthropic、LiteLLM)上执行。

  • 可观测性python/sglang/srt/observability/):集成的指标(Prometheus)、分布式追踪(OpenTelemetry)、CPU 监控和请求级时间统计收集。