SGLang是UC Berkeley团队开源的高性能LLM/VLM服务框架,Apache-2.0许可。核心RadixAttention实现基数树KV Cache前缀复用,配合零开销CPU调度器、PD分离、投机解码、结构化输出,在Agent/RAG/多轮对话场景较vLLM有10-30%吞吐优势,全球支撑40万+GPU生产部署。
项目概述
SGLang是由UC Berkeley团队开发的大模型与多模态模型高性能服务框架,通过”后端运行时+前端DSL”协同设计,让模型交互更快且可控 。最新PyPI版本v0.4.9.post4,月下载量244K+ ,Apache-2.0许可 。
核心创新:RadixAttention
传统推理引擎在请求结束后丢弃KV Cache,SGLang则通过基数树(Radix Tree)管理KV Cache的前缀复用 :
- 新请求到达时,在基数树中执行前缀搜索,找到最长匹配前缀
- 匹配部分的KV Cache直接复用,仅计算未匹配的新token
- 请求完成后,新计算的KV Cache插入基数树供后续请求复用
- LRU淘汰策略管理GPU显存,避免驱逐正在被活跃请求共享的前缀
- 缓存感知调度策略优先处理缓存匹配更长的请求,进一步提升命中率
RadixAttention的性能影响(按工作负载类型) :
| 工作负载 | RadixAttention缓存命中率 | 无前缀缓存命中率 | 加速比 |
|---|---|---|---|
| Few-shot学习 | 85-95% | 15-25% | 最高5倍 |
| 多轮对话 | 70-90% | 0-30% | 2-4倍 |
| Agent工作流(共享系统提示) | 80-95% | 10-20% | 3-5倍 |
| 检索增强生成(RAG) | 50-80% | 0-20% | 1.5-3倍 |
| 思维树/分支搜索 | 60-90% | 0-15% | 2-6倍 |
| 单轮独立提示 | ~0% | ~0% | ~1倍(无收益) |
2025-2026独立基准测试(Prem AI,H100硬件,Llama-3.1-70B FP16) :
- 批推理吞吐:SGLang 16,215 tok/s vs vLLM 12,553 tok/s,+29%
- 多轮对话吞吐:SGLang ~14,800 tok/s vs vLLM ~11,200 tok/s,+32%
- 单请求延迟:两者相当
- 高并发GPU利用率:SGLang 88-93% vs vLLM 85-92%
这意味着在共享前缀的生产场景(Chatbot、Agent、批处理),SGLang可节省约29%的GPU小时,直接降低基础设施成本 。
v0.4分层KV Cache:冷缓存条目可从GPU显存(HBM)卸载到主机CPU内存(DRAM)甚至NVMe存储,未来请求匹配时再提升回GPU ,有效缓存容量远超单GPU显存,特别适合超长共享系统提示或文档对话应用。
产业采用:SGLang已被xAI、NVIDIA、AMD、Intel、LinkedIn、Cursor、Oracle Cloud、Google Cloud、Microsoft Azure、AWS等采用,全球超过100万GPU部署,每天在生产中生成数万亿token 。
许可策略:Apache-2.0许可 ,允许商用、修改、再分发。
💡 SGLang的独特定位:它是”推理引擎”子分类中结构化生成与Agent场景的王者。与vLLM(通用生产默认)、TensorRT-LLM(NVIDIA极限吞吐)、LMDeploy(国产INT4量化)形成差异化:SGLang的核心竞争力在RadixAttention前缀缓存,使得在Agent/RAG/多轮对话/思维树等”前缀共享”场景中,SGLang通过KV Cache复用获得10-30%的吞吐优势 。其前端DSL让开发者可以用Python嵌入式语法表达多步生成工作流、分支逻辑、条件控制流和约束生成,且运行时感知这些调用之间的关系——这正是RadixAttention能跨调用复用KV状态的编程基础 。SGLang严格属于”推理引擎”子分类,提供OpenAI兼容API,不涉及训练、微调或前端界面。
核心能力
- RadixAttention前缀缓存:基数树管理KV Cache,令牌粒度前缀匹配,LRU淘汰,缓存感知调度
- 零开销CPU调度器:v0.4引入的零开销批处理调度器
- Prefill-Decode分离(PD分离):在96卡H100上部署DeepSeek实现大规模专家并行,解码吞吐提升2.7倍
- 投机解码(Speculative Decoding):加速自回归生成
- 连续批处理(Continuous Batching):动态请求批处理
- 分页注意力(Paged Attention):高效显存管理
- 四维并行:张量并行(TP)+ 流水线并行(PP)+ 专家并行(EP)+ 数据并行(DP)
- 结构化输出:内置压缩有限状态机,JSON/XML等约束生成比普通引擎快3倍
- 分块预填充(Chunked Prefill):长上下文请求分块处理
- 量化支持:FP4/FP8/INT4/AWQ/GPTQ全精度矩阵
- 多LoRA批处理:单基座多适配器并发服务
- 分层KV Cache:v0.4+支持HBM→DRAM→NVMe三级缓存层次
- 模型支持广泛:Llama、Qwen、DeepSeek、Kimi、GPT、Gemma、Mistral等LLM;e5-mistral、gte等嵌入模型;Skywork等奖励模型;WAN、Qwen-Image等扩散模型
- 多模态原生支持:LLaVA等VLM模型,图像/视频原语,多模态RadixAttention(图像哈希作为基数树键)
- 硬件覆盖广:NVIDIA GPU(GB200/B300/H100/A100)、AMD GPU(MI355/MI300)、Intel Xeon CPU、Google TPU、华为昇腾(Ascend)NPU
- OpenAI API兼容:与HuggingFace模型生态良好兼容
- 前端DSL:Python嵌入式领域特定语言,支持链式生成、高级提示、控制流、多模态输入、并行、外部交互
优势亮点
- RadixAttention是颠覆性创新:基数树KV Cache前缀复用在Agent/RAG/多轮对话场景带来10-30%吞吐优势,Agent密集场景端到端成本降低约35%
- Apache-2.0最干净许可:商用无门槛,与vLLM、LMDeploy并列”最干净许可”阵营
- 结构化输出3倍加速:压缩有限状态机使JSON/XML约束生成速度比普通引擎快3倍
- 生产验证:全球100万+GPU部署,每天生成数万亿token,xAI、NVIDIA、AMD、Intel、Microsoft Azure、AWS等均在使用
- a16z开源AI资助:第三批a16z开源AI资助获奖项目
- 加入PyTorch生态:2025年3月成为PyTorch官方生态项目
- Day-0模型支持:OpenAI gpt-oss、DeepSeek V3/R1等模型Day-1支持
- 多硬件原生适配:NVIDIA/AMD/Intel/TPU/昇腾全覆盖,国产硬件友好
- 前端DSL编程模型:Python嵌入式语法表达复杂LLM工作流,运行时感知调用关系实现自动KV复用
- v0.4分层缓存突破GPU显存限制:HBM→DRAM→NVMe三级缓存,超长共享提示场景缓存容量近乎无限
- PD分离+大规模EP:96卡H100部署DeepSeek实现2.7倍解码吞吐提升
局限
- 无共享前缀场景无收益:单轮独立提示场景RadixAttention开销略增3-5%,与vLLM性能相当
- LRU淘汰策略次优:默认LRU淘汰不考虑未来访问模式,在可预测前缀复用的Agent工作流中可能驱逐即将需要的缓存
- 贪婪调度可能饿死:缓存感知调度使用贪婪”最长共享前缀优先”策略,可能导致无前缀匹配的请求饥饿
- 单级内存层次:RadixAttention目前主要在GPU显存操作(v0.4开始扩展至CPU/NVMe)
- 无模糊语义匹配:基数树要求令牌级精确前缀匹配,语义相似但措辞略异的提示无法复用
- 部署复杂度中等:相比vLLM的
pip install简易部署,SGLang配置项更多 - 模型支持广度略逊vLLM:vLLM支持200+ HuggingFace架构且新模型适配最快(1-2周),SGLang模型适配稍慢
- 单请求延迟非最优:在低并发单请求延迟优化场景,vLLM仍具竞争力
适用人群
- Agent/多Agent系统:每个Agent有独立System Prompt但共享工具定义和上下文,RadixAttention带来显著收益
- Chatbot平台:长对话线程+一致系统提示,正是RadixAttention设计目标场景
- RAG应用:共享文档前缀的检索增强生成,缓存命中率50-80%
- 批处理推理作业:大文档集共享前缀的离线批评分
- 思维树/分支搜索:Tree-of-Thought等探索性推理,缓存命中率60-90%,加速2-6倍
- Few-shot学习:共享演示示例,缓存命中率85-95%
- 结构化输出需求:JSON/XML约束生成,SGLang比vLLM+outlines快3倍
- MoE模型服务:DeepSeek V3/R1等MoE模型,SGLang大规模EP性能领先
- 多硬件环境:NVIDIA/AMD/Intel/TPU/昇腾混合部署
- 生产高并发服务:已验证100万+GPU全球部署规模
安装与部署
1. 环境要求
- Linux操作系统(推荐Ubuntu 20.04+)
- Python 3.10+
- CUDA 12.x(NVIDIA GPU)
- PyTorch 2.x
- NVIDIA GPU(A100/H100/GB200推荐)
2. 安装
# pip安装 pip install sglang # 源码安装 git clone https://github.com/sgl-project/sglang.git cd sglang pip install -e . # 或使用Docker docker pull lmsysorg/sglang:latest docker run --gpus all -p 30000:30000 lmsysorg/sglang:latest \ --model-path meta-llama/Llama-3.1-8B-Instruct
3. 启动OpenAI兼容API服务
# 基础启动 python -m sglang.launch_server \ --model-path meta-llama/Llama-3.1-8B-Instruct \ --port 30000 # 多GPU张量并行 python -m sglang.launch_server \ --model-path meta-llama/Llama-3.1-70B-Instruct \ --tp 8 \ --port 30000 # 启用RadixAttention前缀缓存(默认开启) python -m sglang.launch_server \ --model-path meta-llama/Llama-3.1-8B-Instruct \ --enable-radix-cache \ --port 30000
4. 客户端调用(OpenAI兼容)
import openai
client = openai.Client(
base_url="http://localhost:30000/v1",
api_key="EMPTY"
)
# 聊天补全
response = client.chat.completions.create(
model="meta-llama/Llama-3.1-8B-Instruct",
messages=[
{"role": "system", "content": "你是一个有帮助的AI助手。"},
{"role": "user", "content": "什么是RadixAttention?"}
],
temperature=0.7,
max_tokens=512
)
print(response.choices[0].message.content)
5. 前端DSL编程(结构化生成)
import sglang as sgl
@sgl.function
def chain_of_thought(s, question):
s += sgl.system("你是一个逻辑推理专家。")
s += sgl.user(question)
s += sgl.assistant(sgl.gen("thinking", max_tokens=256))
s += "所以答案是:"
s += sgl.assistant(sgl.gen("answer", max_tokens=64))
# 批量调用,RadixAttention自动复用共享前缀
states = chain_of_thought.run_batch([
{"question": "如果所有的玫瑰都是花,那么有些花是玫瑰吗?"},
{"question": "如果所有的猫都是动物,那么有些动物是猫吗?"}
])
for state in states:
print(state["answer"])
6. 结构化输出(JSON约束生成)
import sglang as sgl
@sgl.function
def extract_info(s, text):
s += "从以下文本中提取信息并以JSON格式输出:\n" + text
s += sgl.json(
"output",
schema={
"name": "string",
"age": "integer",
"city": "string"
}
)
state = extract_info.run(text="张三今年28岁,居住在北京。")
print(state["output"]) # 自动符合schema的JSON
7. PD分离部署(DeepSeek大规模EP)
# Prefill节点 python -m sglang.launch_server \ --model-path deepseek-ai/DeepSeek-V3 \ --tp 8 \ --port 30000 \ --role prefill # Decode节点 python -m sglang.launch_server \ --model-path deepseek-ai/DeepSeek-V3 \ --tp 8 \ --port 30001 \ --role decode # 路由层 python -m sglang.serve_router \ --prefill-hosts localhost:30000 \ --decode-hosts localhost:30001
8. 量化推理(FP8)
python -m sglang.launch_server \ --model-path meta-llama/Llama-3.1-70B-Instruct \ --tp 4 \ --quantization fp8 \ --port 30000
9. 部署前必检清单
- 确认仓库位于
github.com/sgl-project/sglang(官方) - 许可:Apache-2.0,商用友好
- 最新稳定版v0.4.9.post4(PyPI),建议跟进GitHub Release获取最新特性
- RadixAttention在共享前缀场景收益最大,单轮独立请求场景与vLLM性能相当
- 多GPU部署需配置
--tp(张量并行)或--pp(流水线并行) - 生产环境推荐NVIDIA H100/A100或AMD MI300X
- 华为昇腾NPU需使用对应硬件后端
- 严格属于”推理引擎”子分类,提供OpenAI兼容API,不涉及训练/微调/前端界面
- 全局100万+GPU部署验证,生产稳定性可靠
相关导航

GPT4All

MLC LLM

ExLlamaV3

Ollama

DeepSpeed-MII
MLX

