SGLang 安装与部署
二、安装与部署
与 vLLM 类似,SGLang 的主战场是 Linux + NVIDIA GPU。它对 Python 版本、PyTorch 与 CUDA 的组合有要求,版本没对齐是最常见的失败原因。
- 检查 GPU 与驱动。确认卡型、显存与驱动版本。显存决定能不能装下目标模型,驱动决定可用的 CUDA 组合。
- 建独立环境。用 venv 或 conda 隔离,Python 版本按官方要求。
- 装 SGLang 本体。基础安装只带核心依赖;要用到特定加速 kernel(如 FlashInfer)或特定模型支持时,按官方文档装完整包。
- 准备权重。可在线拉取,也可提前下载好本地路径。内网部署必须先同步到本地。
- 起服务。用
python -m sglang.launch_server启动,指定模型路径、并行方式与端口。 - 验证。先用官方提供的最小客户端脚本打一次请求,再用 OpenAI 协议客户端验证一遍。
# 1) 硬件
nvidia-smi
# 2) 环境
python -m venv .venv && source .venv/bin/activate
pip install -U pip
# 3) 安装(基础;需要额外 kernel 支持时按官方文档补装)
pip install "sglang[all]"
# 若报依赖冲突,先单独装好匹配的 torch,再装 sglang
# 4) 起服务
python -m sglang.launch_server \
--model-path <模型路径或仓库名> \
--host 0.0.0.0 --port 30000 \
--tp-size 2 \
--mem-fraction-static 0.85 \
--context-length 8192 \
--served-model-name sgl-local
# 5) 验证(OpenAI 兼容口)
curl -s http://127.0.0.1:30000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "sgl-local",
"messages": [{"role":"user","content":"用一个类比解释前缀缓存"}],
"max_tokens": 128
}'
依赖与环境要求
- 系统:Linux 为主,Windows 走 WSL2 或容器。
- GPU:NVIDIA,计算能力需满足依赖 kernel 的要求。
- Python:跟随官方支持范围,过新的 Python 常在依赖解析阶段失败。
- 加速库:部分 kernel 依赖 FlashInfer 等第三方库,版本要和 CUDA、PyTorch 三方对齐。
- 显存:模型权重 + KV cache + 中间激活,
mem-fraction-static控制静态预留比例,设太高会导致启动即失败。 - 共享内存与互联:多卡/多机部署时同样受
/dev/shm与 NCCL 网卡选择影响。
常见报错与排查
| 报错 / 现象 | 原因 | 处理 |
|---|---|---|
| 依赖解析失败、版本冲突 | torch 与 sglang 及 kernel 库三者版本不匹配 | 先按官方推荐的组合装 torch,再装 sglang;不要在同一环境里混装多套推理库 |
| 启动时显存不足 | mem-fraction-static 过高或模型太大 | 降低比例、缩短 context 长度、用量化权重、加卡开 TP |
| kernel 编译/加载失败 | 缺少匹配的 CUDA 工具链或架构不支持 | 按官方文档装对应加速库;确认 GPU 架构在支持列表内 |
| 多卡启动卡住 | NCCL 网卡选择错误或共享内存过小 | 指定通信网卡;容器加大共享内存 |
| 约束解码报语法错误 | 正则或语法表达式本身有误 | 先用简单正则验证,再逐步加复杂度 |
| 前缀缓存命中率低 | 请求前缀本身差异大,或请求被打散到不同实例 | 规范 prompt 前缀;用 Router 让同前缀请求落到同一实例 |
| output 被截断 | 最大输出长度受限 | 调整采样参数里的最大新 token 数 |

