一文搞定 SGLang 全平台安装:高性能 LLM 推理框架部署指南

10次阅读
没有评论

一、什么是 SGLang?为什么选择它?

SGLang 是 LMSYS Org 开源的高性能大模型推理与服务框架,主打低延迟、超高吞吐、结构化生成,全球已有 40 万 + GPU 部署落地,是 RAG、多轮对话、Agent、生产级 LLM 服务的首选引擎之一稀土掘金。

核心优势

  1. RadixAttention 前缀缓存:跨请求复用 KV Cache,多轮对话、RAG 场景大幅减少 Prefill 耗时,显著降低首包延迟 TTFTCSDN;
  2. 全链路推理优化:连续批处理、预填充 / 解码拆分、投机解码、多 LoRA 批量推理、量化加速;
  3. 模型生态全覆盖:Llama、Qwen、DeepSeek、GLM、Mistral 等主流模型,兼容 Hugging Face 权重与 OpenAI 标准 API;
  4. 多硬件跨平台:NVIDIA GPU、AMD、Apple Metal、Intel CPU、Google TPU、昇腾 NPU 均原生支持;
  5. 灵活部署方案:本地 pip、源码、Docker、K8s、云厂商 SageMaker、SkyPilot 一键多云部署全覆盖。

前置要求

Python ≥3.10,本文默认基于 NVIDIA GPU 环境,其他硬件可查阅官方专用文档。

二、方式 1:pip/uv 快速安装(本地开发首选)

官方推荐使用uv加速依赖安装,分默认 CUDA13CUDA12.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

常见报错修复

  1. OSError: CUDA_HOME environment variable is not set

bash

运行

# 替换为你的cuda版本,如cuda-12.9
export CUDA_HOME=/usr/local/cuda-12.9
  1. 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)

十、总结与选型建议

  1. 本地调试、快速实验:uv/pip 一键安装,轻量化无环境负担;
  2. 线上稳定服务、避免环境冲突:Docker runtime 镜像;
  3. 企业大规模集群、多机分布式推理:Kubernetes OME Operator;
  4. 多云弹性扩缩、按需算力:SkyPilot;
  5. AWS 云原生托管业务:SageMaker 定制容器部署。

官方文档地址:https://docs.sglang.io/docs/get-started/install

项目 Githubhttps://github.com/sgl-project/sglang

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)
验证码