一、什么是 SGLang?为什么选择它?
SGLang 是 LMSYS Org 开源的高性能大模型推理与服务框架,主打低延迟、超高吞吐、结构化生成,全球已有 40 万 + GPU 部署落地,是 RAG、多轮对话、Agent、生产级 LLM 服务的首选引擎之一稀土掘金。
核心优势
- RadixAttention 前缀缓存:跨请求复用 KV Cache,多轮对话、RAG 场景大幅减少 Prefill 耗时,显著降低首包延迟 TTFTCSDN;
- 全链路推理优化:连续批处理、预填充 / 解码拆分、投机解码、多 LoRA 批量推理、量化加速;
- 模型生态全覆盖:Llama、Qwen、DeepSeek、GLM、Mistral 等主流模型,兼容 Hugging Face 权重与 OpenAI 标准 API;
- 多硬件跨平台:NVIDIA GPU、AMD、Apple Metal、Intel CPU、Google TPU、昇腾 NPU 均原生支持;
- 灵活部署方案:本地 pip、源码、Docker、K8s、云厂商 SageMaker、SkyPilot 一键多云部署全覆盖。
前置要求
Python ≥3.10,本文默认基于 NVIDIA GPU 环境,其他硬件可查阅官方专用文档。
二、方式 1:pip/uv 快速安装(本地开发首选)
官方推荐使用uv加速依赖安装,分默认 CUDA13、CUDA12.9两套方案。
方案 A:默认 CUDA13(最简安装)
bash
运行
# 升级pip
pip install --upgrade pip
# 安装uv包管理器
pip install uv
# 一键安装sglang
uv pip install sglang
方案 B:CUDA12.9 环境强制适配
机器 CUDA 版本为 12 时,需手动指定 Torch 与内核包:
bash
运行
pip install --upgrade pip
pip install uv
uv pip install sglang
# 重装适配CUDA12.9的PyTorch
uv pip install --force-reinstall torch==2.11.0 torchaudio==2.11.0 torchvision --index-url https://download.pytorch.org/whl/cu129
# 重装sglang CUDA内核
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
常见报错修复
- OSError: CUDA_HOME environment variable is not set
bash
运行
# 替换为你的cuda版本,如cuda-12.9
export CUDA_HOME=/usr/local/cuda-12.9
- FlashInfer 兼容异常(仅支持 sm75 及以上显卡:T4/A10/A100/L4/H100)
bash
运行
# 强制重装FlashInfer并清理缓存
pip3 install --upgrade flashinfer-python --force-reinstall --no-deps
rm -rf ~/.cache/flashinfer
# 启动服务时切换备用内核
python3 -m sglang.launch_server --attention-backend triton --sampling-backend pytorch
三、方式 2:源码编译安装(二次开发 / 定制内核)
适合需要修改 SGLang 底层代码、参与开发的场景,拉取稳定发布分支 v0.5.12:
bash
运行
# 克隆代码仓库
git clone -b v0.5.12 https://github.com/sgl-project/sglang.git
cd sglang
# 升级pip并本地可编辑安装
pip install --upgrade pip
pip install -e "python"
开发调试推荐官方开发镜像:
lmsysorg/sglang:dev,无需本地编译环境。
四、方式 3:Docker 容器部署(生产环境推荐)
Docker 镜像内置完整运行环境,避免本地 CUDA、Torch 版本冲突,分通用镜像、轻量 runtime 生产镜像、CUDA12 专用镜像三类。
1)标准镜像(调试 / 测试)
替换<secret>为你的 Hugging Face Token,挂载模型缓存目录持久化权重:
bash
运行
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
2)runtime 轻量镜像(线上生产,体积缩减 40%)
移除编译工具与开发依赖,节省服务器存储:
bash
运行
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
3)CUDA12 专用镜像
机器 CUDA 为 12 系列,使用带-cu129后缀镜像:
lmsysorg/sglang:latest-cu129 / lmsysorg/sglang:dev-cu12
五、方式 4:容器编排:Docker Compose
适合长期后台常驻服务,复制官方compose.yml到本地,一键启动后台服务:
bash
运行
docker compose up -d
如需 K8s 级稳定生产,优先使用官方 K8s yaml 部署文件。
六、方式 5:Kubernetes 集群部署(企业大规模服务)
官方配套 OME LLM 运维 Operator,分单节点、多分布式大模型两种部署模板:
单节点(模型可单卡 / 单机承载,如 Llama3-8B)
bash
运行
kubectl apply -f docker/k8s-sglang-service.yaml
多节点分布式(超大模型 DeepSeek-R1 等多机推理)
修改模型路径、推理参数后执行:
bash
运行
kubectl apply -f docker/k8s-sglang-distributed-sts.yaml
七、方式 6:SkyPilot 一键多云 / K8s 部署
一套 yaml 文件支持 AWS、阿里云、自建 K8s 等 12 + 云基础设施,自动获取公网 API 地址。
1. 编写 sglang.yaml 配置
yaml
envs:
HF_TOKEN: null
resources:
image_id: docker:lmsysorg/sglang:latest
accelerators: A100
ports: 30000
run: |
conda deactivate
python3 -m sglang.launch_server \
--model-path meta-llama/Llama-3.1-8B-Instruct \
--host 0.0.0.0 \
--port 30000
2. 部署命令
bash
运行
# 填入HF Token启动服务
HF_TOKEN=<secret> sky launch -c sglang --env HF_TOKEN sglang.yaml
# 查询服务公网API地址
sky status --endpoint 30000 sglang
扩容、自动故障恢复可搭配 SkyServe 使用。
八、方式 7:AWS SageMaker 云托管部署
适配 AWS 官方深度学习容器,支持自定义模型与推理参数,流程分为镜像打包推送 ECR、部署推理端点两步。
1. 构建推送镜像脚本 build-and-push.sh
bash
运行
#!/bin/bash
AWS_ACCOUNT="<你的AWS账号>"
AWS_REGION="<区域>"
REPOSITORY_NAME="<仓库名>"
IMAGE_TAG="<镜像标签>"
ECR_REGISTRY="${AWS_ACCOUNT}.dkr.ecr.${AWS_REGION}.amazonaws.com"
IMAGE_URI="${ECR_REGISTRY}/${REPOSITORY_NAME}:${IMAGE_TAG}"
# 登录ECR
aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ECR_REGISTRY}
# 构建镜像
docker build -t ${IMAGE_URI} -f sagemaker.Dockerfile .
# 推送镜像
docker push ${IMAGE_URI}
2. 自定义推理参数
SageMaker 默认启动命令:
python3 -m sglang.launch_server --model-path opt/ml/model --host 0.0.0.0 --port 8080
通过前缀SM_SGLANG_环境变量传递参数,示例:
plaintext
SM_SGLANG_MODEL_PATH=Qwen/Qwen3-0.6B
SM_SGLANG_REASONING_PARSER=qwen3
九、安装完成后快速验证
任意安装方式部署成功后,启动服务测试接口:
bash
运行
# 本地pip启动示例
python3 -m sglang.launch_server --model-path Qwen/Qwen3-7B-Instruct --host 0.0.0.0 --port 30000
服务启动后兼容 OpenAI 接口,可直接用 openai 库调用:
python
运行
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:30000/v1", api_key="dummy")
resp = client.chat.completions.create(
model="Qwen3-7B-Instruct",
messages=[{"role":"user","content":"介绍SGLang"}]
)
print(resp.choices[0].message.content)
十、总结与选型建议
- 本地调试、快速实验:uv/pip 一键安装,轻量化无环境负担;
- 线上稳定服务、避免环境冲突:Docker runtime 镜像;
- 企业大规模集群、多机分布式推理:Kubernetes OME Operator;
- 多云弹性扩缩、按需算力:SkyPilot;
- AWS 云原生托管业务:SageMaker 定制容器部署。