news 2026/9/2 14:41:20

SGLang 部署完整指南:一条命令拉起服务,从安装到高并发调优

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SGLang 部署完整指南:一条命令拉起服务,从安装到高并发调优

SGLang 部署完整指南:一条命令拉起服务,从安装到高并发调优

【免费下载链接】sglangSGLang is a high-performance serving framework for large language models and multimodal models.项目地址: https://gitcode.com/GitHub_Trending/sg/sglang

这是一份 SGLang 部署实操教程:用一条命令拉起模型推理服务,讲清 pip、Docker 等五种安装路线的取舍,覆盖 GPU 张量并行、CPU 专用镜像、内存与量化调优、Prometheus 监控接入和生产排障,目标是让服务在你的硬件上既跑得快又稳得住。

🚀 快速启动 SGLang 服务器

最短路径只有两步:装包,然后启动。在 Python 3.10+ 环境下执行:

uv pip install --prerelease=allow sglang python -m sglang.launch_server --model-path meta-llama/Llama-3.1-8B-Instruct --host 0.0.0.0 --port 30000

装包时保留--prerelease=allow:SGLang 的部分依赖在 PyPI 上只发布预发布版,缺了这个参数会悄悄装到旧版本。服务起来后,30000 端口就提供 OpenAI 兼容 API。

安装路线选择:按你的场景对号入座

五种安装路线能力相同,差别在适用场景和维护成本。拿不准就从 pip 开始:

你的场景推荐路线上手成本关键点
单机快速验证、日常开发pip / uv 安装两条命令装完即用,详见安装文档
要改内核代码、追最新 main 分支源码编译clone 仓库(gitcode 镜像地址https://gitcode.com/GitHub_Trending/sg/sglang)后执行pip install -e "python"
团队协作、生产部署Docker 部署官方镜像锁定环境,可复现、易迁移
多节点大模型、高可用集群Kubernetes仓库自带k8s-sglang-service.yaml(单节点)与k8s-sglang-distributed-sts.yaml(多节点),直接kubectl apply
多云弹性伸缩、按量买卡SkyPilot一份 YAML 描述模型与资源,sky launch一条命令部署到 12+ 云平台并返回 API 端点

SGLang Docker 部署:生产环境的默认选择

容器化最大的价值是"这台机器能跑,哪台都能跑"。拉取官方镜像lmsysorg/sglang(生产建议固定到不可变版本标签而非latest,资源紧张时换体积更小约 40% 的-runtime变体),核心参数含义:

docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<你的token>" --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server --model-path <模型名> --host 0.0.0.0 --port 30000
  • --gpus all:把宿主机 GPU 透传进容器,没有它容器里"看不见卡";
  • --shm-size 32g --ipc=host:多进程张量并行靠共享内存通信,默认 64MB 的/dev/shm会直接卡死,必须显式放大;
  • -v ~/.cache/huggingface:挂载模型缓存目录,避免每次启动重新下载几十 GB 权重;
  • HF_TOKEN:私有模型或高并发下载需要鉴权。

镜像构建与编排文件都在 docker/ 目录,compose.yaml 可作为服务化起点。

SGLang GPU 配置:FlashInfer 后端与张量并行

默认情况下无需额外配置:SGLang 自带 FlashInfer 注意力内核(sm75 及以上显卡均可用),它是目前默认且经过充分优化的后端,显式写--attention-backend flashinfer只是把默认值摆上台面。

真正要动手的是并行拆分。单卡放不下模型时,用--tp N(tensor parallelism,张量并行)把每层权重按列/行切开分到 N 张卡上协同计算:

python -m sglang.launch_server --model-path <大模型> --tp 4

为什么这么切:权重切开后单卡显存压力除以 N,但代价是每层前向都要一次卡间通信,所以--tp取值要受限于 NVLink/PCIe 带宽,跨机再叠加--nnodes做流水线扩展。MoE 大模型还可组合数据并行注意力与专家并行,请求按 batch 分派到不同注意力单元、再由专家子组承接,示意如下:

更多后端选项见硬件平台文档。

SGLang CPU 部署:Intel Xeon 专用镜像

CPU 推理只建议走专用路线:SGLang 针对第 4 代及更新 Xeon 的 AMX 指令做了优化,对应镜像标签以xeon结尾(或从docker/xeon.Dockerfile自行构建)。启动与 GPU 容器有两处关键差异:

docker run -it --privileged --ipc=host --network=host \ -v ~/.cache/huggingface:/root/.cache/huggingface \ -p 30000:30000 -e "HF_TOKEN=<你的token>" \ lmsysorg/sglang:v0.5.13-xeon /bin/bash
  • --privileged:容器需要访问 AMX 等指令集特性,普通权限下性能回落到通用路径;
  • --network=host:CPU 多进程通信对延迟敏感,host 网络省去 NAT 开销;
  • 镜像差异:CPU 镜像不带 CUDA 栈,替换为 oneMKL 等 CPU 推理依赖,因此不能拿 GPU 镜像"将就"跑 CPU。

Llama、Qwen、DeepSeek 系列在 CPU 上均有优化支持,细节见CPU 服务器文档。

⚙️ 高并发调优:内存不足、延迟高时拧哪个参数

把常见性能问题翻译成旋钮,对照着调:

现象旋钮预期效果
启动即 OOM,显存不够--mem-fraction-static 0.7下调静态预留占比(默认更激进),给权重与 KV cache 留足余量;反之显存富余可调高,换取更大的 KV cache
权重和 KV cache 吃满显存,并发上不去--quantization fp8+--kv-cache-dtype fp8_e5m2把权重和缓存都压到 8 位,如同给仓库做压缩,显存占用近乎减半,可用批大小翻倍
峰值并发压垮服务--max-running-requests N限定同时在跑的请求数上限,超出部分排队而非挤爆显存
长 prompt 造成首 token 延迟尖刺--chunked-prefill-size 4096把长 prefill 切成固定长度的小块与 decode 交错执行,削平延迟毛刺
decode 吞吐偏低、CPU 成为瓶颈--enable-cuda-graph --enable-torch-compileCUDA 图把 kernel 发射序列录制成"录像"回放,torch.compile 做算子融合,两者都砍掉每步的启动开销

完整参数说明见服务器参数参考,量化细节见量化文档。

盯住服务:Prometheus 接入与三个核心指标

启动时加--enable-metrics,服务即在/metrics暴露 Prometheus 格式指标。抓取配置只需指向服务端口(完整模板在 examples/monitoring/,docker-compose up -d一键起 Prometheus + Grafana):

scrape_configs: - job_name: sglang static_configs: - targets: ['127.0.0.1:30000']

看板可以画很多,但最值得盯的只有三个:

  1. sglang:token_usage——KV cache 占用比例。持续贴近 1 意味着新请求只能排队或被抢占,是扩容或量化信号;
  2. sglang:cache_hit_rate——前缀缓存命中率。多轮对话、共享 system prompt 的场景下它决定了大量 prefill 是否被跳过,偏低时先查请求格式是否稳定复用前缀;
  3. sglang:time_to_first_token_seconds——首 token 延迟分布。它直接对应用户体感,结合队列长度看即可区分"慢在排队"还是"慢在计算"。

部署排障速查

报错现象可能原因处理动作
OSError: CUDA_HOME environment variable is not set构建工具找不到 CUDA 根目录export CUDA_HOME=/usr/local/cuda-<你的版本>,或先装好 FlashInfer 再装 SGLang
启动阶段 GPU OOM权重 + KV cache 超出显存--mem-fraction-static,或上 FP8 量化(见上节旋钮表)
老显卡上 FlashInfer 相关崩溃计算能力低于 sm75,后端不支持改用--attention-backend triton --sampling-backend pytorch
容器内多进程通信异常、死锁共享内存不足--shm-size 32g并加--ipc=host
容器起不来、设备找不到未透传 GPU 或宿主缺 nvidia-container-toolkit--gpus all,在宿主机安装并验证 toolkit
请求能进但首 token 明显变慢前缀缓存失效或长 prompt 未分块cache_hit_rate,确认--chunked-prefill-size生效

上生产前的检查清单

  • 镜像/版本固定到不可变标签(如v0.5.x),不用浮动的latest
  • 配置健康检查与自动重启(K8s liveness 探针或 systemd restart)
  • Prometheus 抓取已生效,token_usagecache_hit_rate、TTFT 三条曲线进看板
  • python -m sglang.bench_serving --backend sglang --dataset-name random --random-input-len 1024 --random-output-len 1024 --num-prompts 100 --request-rate 10压测基线留档
  • HF Token 与模型缓存持久化,避免重启后重新拉权重
  • 压测峰值下验证排队与拒绝策略符合预期(并发上限、超时配置)

小结

SGLang 部署的核心是:先选对安装路线,再按硬件特性配置并行与内存,最后用指标闭环验证。建议继续阅读服务器参数参考、生产指标说明与硬件平台文档。

【免费下载链接】sglangSGLang is a high-performance serving framework for large language models and multimodal models.项目地址: https://gitcode.com/GitHub_Trending/sg/sglang

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 14:40:12

从侥幸成功到工程确定性:技术项目复盘与工程化实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 14:37:09

FPGA实现实时人脸检测:从摄像头采集到HDMI显示的完整流水线设计

简介&#xff1a;面向FPGA图像处理学习者的完整工程代码&#xff0c;以咸鱼FPGA开发板为载体实现人脸检测中的肤色提取环节。资源基于YCbCr颜色空间&#xff0c;采用人工阈值法将肤色与非肤色区域分离&#xff0c;通过二值化图像完成目标分割&#xff0c;适合正在学习图像处理算…

作者头像 李华
网站建设 2026/9/2 14:37:03

STM32F103+CC1101+GC65 GPS追踪器硬件设计全解析

简介&#xff1a;这是一套面向嵌入式硬件工程师与物联网终端开发者的设计参考资源&#xff0c;聚焦于基于STM32F103CBT6的GPS追踪终端硬件实现&#xff0c;解决定位数据采集、无线通信&#xff08;433MHz RF&#xff09;、电源管理及报警联动等典型功能集成问题。压缩包共11个文…

作者头像 李华
网站建设 2026/9/2 14:27:55

AI驱动ROM逆向工程:用LLM将街机游戏二进制码转译JavaScript

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 14:27:50

主题数据库实战:用全栈技术构建个人兴趣数据仓库

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华