sgl-project/sglang · 上手攻略
- 仓库:sgl-project/sglang
- 链接:https://github.com/sgl-project/sglang
- 分类:llm-infra / multimodal
- 作者:Tom
- 更新:2026-07-07
它是什么
SGLang 是一个高性能大语言模型(及多模态模型)推理 serving 框架,由 LMSYS 组织开发维护(Apache-2.0 许可证)。它的核心定位是 vLLM 的直接竞争对手,在多项 benchmark 上展示出更高的吞吐量和更低的延迟。SGLang 底层基于 PyTorch,支持 RadixAttention(前缀缓存)、连续批处理(continuous batching)、paged attention、张量/流水线/专家/数据并行,以及结构化输出、 speculative decoding 等关键优化。被 xAI、NVIDIA、AMD、Intel、Google、LinkedIn、Cursor、Oracle Cloud 等超过 400,000 块 GPU 生产部署,每天处理数万亿 tokens。
解决什么问题
- 高成本推理:原生 vLLM/TensorRT-LLM 用户希望压榨 GPU 利用率,SGLang 通过 zero-overhead CPU scheduler、chunked prefill、multi-LoRA batching 等技术提供更高吞吐量。
- 长上下文前缀重复计算:同一提示词不同请求共享 system prompt,前缀缓存效率低;RadixAttention 自动对 KV-cache 做前缀复用。
- Prefill/Decode 资源争抢:Prefill(计算密集)和 Decode(内存密集)混合负载互相拖后腿;SGLang 支持 prefill-decode disaggregation 将两者分离到不同节点。
- 多模态模型Serving:LLaVA-OneVision 等多图/视频模型需要特殊的 batching 逻辑,SGLang v0.3+ 原生支持。
- RL/Post-training 训练后端:不仅推理,SGLang 也是多个知名 RL 后端(verl、slime、Tunix、Miles、AReaL)的 Rollout 引擎。
快速安装
方式一:pip / uv(推荐)
pip install --upgrade pip
pip install uv
uv pip install --prerelease=allow sglang
默认使用 CUDA 13。如需 CUDA 12:
uv pip install --force-reinstall torch==2.11.0 torchaudio==2.11.0 torchvision --index-url https://download.pytorch.org/whl/cu129
uv pip install --force-reinstall sglang-kernel --index-url https://docs.sglang.ai/whl/cu129/
uv pip install --force-reinstall sgl-deep-gemm --index-url https://docs.sglang.ai/whl/cu129/ --no-deps
uv pip install --prerelease=allow sglang
方式二:从源码
git clone -b v0.5.12 https://github.com/sgl-project/sglang.git
cd sglang
pip install --upgrade pip
pip install -e "python"
⚠️ 源码编译需要完整 CUDA 环境,适合开发者参与贡献或需要深度定制场景。
方式三:Docker(开箱即用)
docker run --gpus all \
--shm-size 32g \
-p 30000:30000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env "HF_TOKEN=<secret>" \
--ipc=host \
lmsysorg/sglang:latest \
python3 -m sglang.launch_server \
--model-path meta-llama/Llama-3.1-8B-Instruct \
--host 0.0.0.0 --port 30000
生产环境建议用 runtime 变体(体积小约 40%,不含构建工具):
docker run --gpus all --shm-size 32g -p 30000:30000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env "HF_TOKEN=<secret>" --ipc=host \
lmsysorg/sglang:latest-runtime \
python3 -m sglang.launch_server \
--model-path meta-llama/Llama-3.1-8B-Instruct \
--host 0.0.0.0 --port 30000
⚠️ SGLang 默认使用 CUDA 13。CUDA 12 环境请用带
-cu12或-cu129后缀的镜像(如lmsysorg/sglang:latest-cu129)。
方式四:Kubernetes(企业级)
# 单节点
kubectl apply -f docker/k8s-sglang-service.yaml
# 多节点(DeepSeek-R1 等大模型)
kubectl apply -f docker/k8s-sglang-distributed-sts.yaml
生产级 K8s 管理推荐使用 OME(Kubernetes Operator)。
方式五:SkyPilot(全平台一键部署)
# 安装 SkyPilot
pip install skypilot
# 部署到任意云或 K8s
HF_TOKEN=<secret> sky launch -c sglang --env HF_TOKEN sglang.yaml
# 获取 HTTP API 端点
sky status --endpoint 30000 sglang
核心用法
启动一个模型(最简方式)
python3 -m sglang.launch_server \
--model-path meta-llama/Llama-3.1-8B-Instruct \
--host 0.0.0.0 --port 30000
支持的模型格式:HuggingFace 格式模型路径或模型 ID(如 meta-llama/Llama-3.1-8B-Instruct)。
OpenAI 兼容 API 调用
curl http://localhost:30000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "meta-llama/Llama-3.1-8B-Instruct",
"messages": [{"role": "user", "content": "Hello!"}]
}'
SGLang 提供与 OpenAI API 完全兼容的 /v1/chat/completions、/v1/completions 接口,现有应用无需修改即可切换。
Python SDK 调用
from sglang import sgl
@sgl.function
def chain_of_thought(s, prompt):
s += prompt
s += sgl.gen(max_tokens=128)
# 发送请求
result = chain_of_thought.run(
messages=[{"role": "user", "content": "Why is the sky blue?"}]
)
print(result["text"])
多模态(图像输入)
python3 -m sglang.launch_server \
--model-path lmms-lab/llava-onevision-qwen2-72b-ov-chat \
--chat-template chatml-llava \
--host 0.0.0.0 --port 30000
Speculative Decoding(推测解码,加速生成)
SGLang 支持 DFlash 和 Spec V2(2026-06 发布),在 NVIDIA GB300 NVL72 上实现 25x 推理加速。启用方式在 launch_server 时通过参数指定(具体参数请参考官方文档)。
多 LoRA 同时服务
python3 -m sglang.launch_server \
--model-path meta-llama/Llama-3.1-8B-Instruct \
--lora-weights base=/path/to/base,lora1=/path/to/lora1,lora2=/path/to/lora2 \
--enable-torch-compile
前端接入(Frontend API)
SGLang 有专门的 Frontend Engine,用于构建复杂的多轮对话和 agent 应用场景,详见 Frontend Tutorial。
常见问题修复
# CUDA_HOME 未设置
export CUDA_HOME=/usr/local/cuda-<your-cuda-version>
# FlashInfer 相关报错(sm75+ 如 T4/A10/A100/L4/L40S/H100)
# 切换到 triton 后端:
python3 -m sglang.launch_server \
--attention-backend triton \
--sampling-backend pytorch \
...其他参数
# 重新安装 FlashInfer
pip3 install --upgrade flashinfer-python --force-reinstall --no-deps
rm -rf ~/.cache/flashinfer
核心特性一览
| 特性 | 描述 |
|---|---|
| RadixAttention | 前缀缓存,自动复用相同 system prompt 的 KV-cache |
| Zero-overhead Scheduler | CPU 调度开销极低,支撑高并发 |
| Prefill-Decode Disaggregation | 分离 prefill 和 decode 阶段,分开调度减少相互干扰 |
| Continuous Batching | 动态 batch,最大化 GPU 利用率 |
| Paged Attention | vLLM 同款 KV-cache 管理,减少内存碎片 |
| Speculative Decoding | DFlash / Spec V2(2026-06),GB300 上 25x 加速 |
| Multi-LoRA Batching | 同时服务多个 LoRA adapter |
| Chunked Prefill | 长 prompt 分块处理,降低首 token 延迟 |
| Structured Output | 内置 JSON/正则等结构化输出支持 |
| Quantization | FP4/FP8/INT4/AWQ/GPTQ |
| Tensor/Pipeline/Expert/Data Parallelism | 分布式并行 |
| Diffusion 支持 | WAN/Qwen-Image 等图像/视频生成模型 |
支持的硬件和模型
硬件:NVIDIA GB200/B300/H100/A100/Spectrum/5090、AMD MI355/MI300、Intel Xeon CPUs、Google TPUs、Ascend NPUs
语言模型:Llama、Qwen、DeepSeek、Kimi、GLM、GPT、Gemma、Mistral 等主流模型
多模态:LLaVA-OneVision(多图/视频)、Qwen-VL 等
其他:Embedding 模型(e5-mistral、gte、mcdse)、Reward 模型(Skywork)
典型适用场景
- 企业 LLM API 服务:自建高吞吐量推理服务,替代 OpenAI API 调用成本,适合日请求量大的业务。
- 大模型分布式推理:DeepSeek-V4/R1 等超大模型,单机 GPU 不够,需要 PD disaggregation + Expert Parallelism。
- 多租户 SaaS:SGLang 的 continuous batching 和 multi-LoRA batching 天然适合多用户共享 GPU 资源。
- RL/Post-training 训练:verl、slime、Tunix 等 RL 框架的后端,需要高吞吐 Rollout。
- 多模态应用:LLaVA-OneVision 等模型的 Serving,支持多图对话、视频理解。
- 模型对比评测:用 SGLang 部署多个模型同一环境下横向评测。
坑与注意
| 问题 | 解决方案 |
|---|---|
| CUDA_HOME 未设置 | export CUDA_HOME=/usr/local/cuda-<version> |
| FlashInfer 在 sm75+ 报错 | 加 --attention-backend triton --sampling-backend pytorch,并提 issue |
| CUDA 12/13 版本不匹配 | 用 -cu12/-cu129 镜像,或手动装对应 torch 版本 |
| Docker 共享内存不足 | --shm-size 32g(大模型必须) |
OSError: page not found |
Paged Attention 内存碎片,杀掉重起 |
| 生产环境镜像体积大 | 换用 lmsysorg/sglang:latest-runtime |
| Kubernetes 多节点部署 | 参考 OME Operator 文档,不建议手动 kubectl apply 大规模集群 |
| 源码安装失败 | 优先用 Docker 或 pip,源码仅限需要修改框架本身的开发者 |
与同类对比
| 框架 | 语言 | 前缀缓存 | PD 分离 | Multi-LoRA | 多模态 | 生态 |
|---|---|---|---|---|---|---|
| SGLang | Python | RadixAttention ✅ | ✅ | ✅ | LLaVA-OneVision ✅ | 400k+ GPU 生产 |
| vLLM | Python | Chunked Prefill ✅ | 计划中 | ✅ | 有限 | 最大 |
| TensorRT-LLM | C++/Python | ✅ | ❌ | ❌ | ❌ | NVIDIA 官方 |
| LightLLM | Python | ✅ | ✅ | ❌ | ❌ | 小众 |
| text-generation-inference (TGI) | Rust | ✅ | ❌ | ❌ | ✅ | HuggingFace 官方 |
| LMDeploy | Python | ✅ | ❌ | ✅ | 有限 | 国内为主 |
核心差异:SGLang 在"RadixAttention + Continuous Batching + Multi-LoRA + 多模态"四维度同时做到生产级成熟度,且背靠 LMSYS 学术社区更新速度快(v0.5 于 2025-07 前后发布)。vLLM 生态最大,但 SGLang 在某些 benchmark 上已展示明显吞吐量优势;TensorRT-LLM 性能高但 NVIDIA 强绑定,灵活度低。
一句话推荐结论
SGLang 是当前最值得关注的高性能 LLM Serving 框架之一——前缀缓存、多 LoRA、PD 分离、speculative decoding 全都 production-ready,且背靠 LMSYS 社区保持高速迭代,适合对推理成本敏感、需要多租户服务、或正在做 RL/Post-training 的团队优先评估。
来源
- GitHub README(https://github.com/sgl-project/sglang)
- SGLang 官方文档(https://docs.sglang.io/)
- SGLang 博客(https://lmsys.org/blog/),含 v0.2/v0.3/v0.4 release notes、DeepSeek-V4/R1 支持、GB300 25x 加速等
- SGLang Roadmap(https://roadmap.sglang.io/)
- a16z Open Source AI Grant 公告(https://a16z.com/advancing-open-source-ai-through-benchmarks-and-bold-experimentation/)
- PyTorch Ecosystem 公告(https://pytorch.org/blog/sglang-joins-pytorch/)
- AMD MI300X 部署博客(多篇)
- FlashInfer 官网(https://docs.flashinfer.ai/installation.html)
⚠️ 本攻略基于 2026-07-07 采集的公开信息。pip 版本号(v0.5.12 为源码分支版本,pip 最新版以 PyPI 为准)、具体命令行参数建议以
python3 -m sglang.launch_server --help和官方文档为准。