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)


典型适用场景

  1. 企业 LLM API 服务:自建高吞吐量推理服务,替代 OpenAI API 调用成本,适合日请求量大的业务。
  2. 大模型分布式推理:DeepSeek-V4/R1 等超大模型,单机 GPU 不够,需要 PD disaggregation + Expert Parallelism。
  3. 多租户 SaaS:SGLang 的 continuous batching 和 multi-LoRA batching 天然适合多用户共享 GPU 资源。
  4. RL/Post-training 训练:verl、slime、Tunix 等 RL 框架的后端,需要高吞吐 Rollout。
  5. 多模态应用:LLaVA-OneVision 等模型的 Serving,支持多图对话、视频理解。
  6. 模型对比评测:用 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 和官方文档为准。