ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

SGLang 服务器部署完整指南:从零搭建到高并发调优实战

2026/9/2 13:19:49 拓冰建站 浏览量
SGLang 服务器部署完整指南:从零搭建到高并发调优实战 SGLang 服务器部署完整指南从零搭建到高并发调优实战【免费下载链接】sglangSGLang is a high-performance serving framework for large language models and multimodal models.项目地址: https://gitcode.com/GitHub_Trending/sg/sglangSGLang 是一个专为大语言模型和多模态模型设计的高性能推理服务框架核心功能是把你本地的模型变成一个高并发的推理服务。这篇指南教你完成SGLang 部署的最短路径先想清楚该用什么硬件和容器然后用一条命令把服务跑起来再按你要提哪一项指标做最小必要的性能优化最后加上监控、压测和上线检查。全程只用你能直接复制执行的命令不堆参数。部署前先想清楚硬件与运行方式怎么选别急着敲命令。部署之前先回答三个问题它们决定了你后面所有的参数决策点怎么选影响用 GPU 还是 CPU有 NVIDIA 卡sm80如 A10/A100/H100就用 GPU最快GPU 吞吐高 10 倍以上CPU 适合无卡环境单卡还是多卡单卡装不下模型 → 多卡张量并行--tp决定是否需要分布式环境裸机还是容器生产环境强烈建议容器避免版本漂移容器 可复现GPU 部署NVIDIA 卡sm80 以上是主路径安装文档默认面向 GPU。CPU 部署SGLang 在带 Intel AMX 指令的 4 代及以上 Xeon 上做了优化镜像 tag 带xeon后缀。要不要容器除非是临时试错否则都用 Docker保证环境和别人一致。白话解释张量并行tensor parallel 把一个模型的矩阵切到多张 GPU 上同时算用来让装不进单卡的模型跑得起来。最短路径跑起来一条命令启动服务先装依赖。推荐用uv更快的 pip 替代品pip install --upgrade pip pip install uv uv pip install --prereleaseallow sglang # --prereleaseallow 允许装预发布版依赖如果你的 CUDA 是 12 系列不是默认的 13安装文档里给出了换 cu12 索引的完整命令。装完后直接起服务。先用一个极小的模型验证链路是否通了python3 -m sglang.launch_server \ --model-path qwen/qwen2.5-0.5b-instruct \ --host 0.0.0.0 \ --port 30000等终端打印出The server is fired up and ready to roll!就成了。用 curl 发一个请求验证curl http://localhost:30000/v1/chat/completions \ -H Content-Type: application/json \ -d {model:qwen/qwen2.5-0.5b-instruct,messages:[{role:user,content:你好}]}能收到正常回复说明服务已跑通。接口文档在http://localhost:30000/docs。多卡时加一条参数模型装不进单卡时用--tptensor-parallel指定卡数python3 -m sglang.launch_server \ --model-path meta-llama/Llama-3.1-8B-Instruct \ --tp 2 \ # 用 2 张 GPU 做张量并行 --host 0.0.0.0 --port 30000生产环境建议用容器Docker 能锁住依赖版本。镜像有普通版和runtime版后者更小约 40%docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env HF_TOKENyour-hf-token \ --ipchost \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server --model-path meta-llama/Llama-3.1-8B-Instruct --host 0.0.0.0 --port 30000--ipchost让多进程共享内存是 GPU 推理必需的。-v挂 HF 缓存模型权重只在容器内下载一次重启不用重复拉取。官方安装文档给出了 pip、源码、Docker、Kubernetes、docker-compose 多种方式的完整命令按需对照docs/docs/get-started/install.mdx。跑起来后的第一道坎内存与启动参数服务能启动不代表能稳定跑。新手最容易卡在这两个地方。显存吃紧就降静态内存比例--mem-fraction-static控制给模型权重 KV 缓存池的显存占比。报 out-of-memory 时把它调小python3 -m sglang.launch_server \ --model-path meta-llama/Llama-3.1-8B-Instruct \ --host 0.0.0.0 --port 30000 \ --mem-fraction-static 0.7 # 占 70% 显存留 30% 给激活等临时张量白话解释KV cache是模型推理时用来缓存已生成 token 的键值向量是显存大头调小这个比例等于主动给系统留余量。限流与分块防止长请求打爆批处理参数作用何时调--max-running-requests最大并发运行请求数并发太高导致排队时--chunked-prefill-size长 prompt 切块大小-1关闭分块长上下文抢占解码时python3 -m sglang.launch_server \ --model-path your-model \ --max-running-requests 64 \ --chunked-prefill-size 4096白话解释分块 prefill 把超长的输入 prompt 切成小块逐步处理避免一条长请求独占一整步、拖慢其他请求的首字时间。提速与调优按你要提升的指标下手不要逐个参数试先明确我现在最想要哪个指标变好。想要更高并发吞吐启用 FlashInfer 注意力后端NVIDIA GPU 推荐比默认快python -m sglang.launch_server --model-path m --attention-backend flashinfer启用 CUDA Graph把重复的 kernel 调用打包成一次图执行减少 CPU 开销python -m sglang.launch_server --model-path m --enable-cuda-graph限制并发上限用--max-running-requests给硬件留余量不要无脑拉满。想要省显存跑更大模型 / 更长上下文KV cache 量化把缓存精度降下来直接省显存python -m sglang.launch_server --model-path m --kv-cache-dtype fp8_e5m2权重量化FP8 等量化同时省显存 提吞吐python -m sglang.launch_server --model-path m --quantization fp8注意加载已经量化好的离线模型时不要再加--quantization二者冲突。详见 docs/docs/advanced_features/quantization.mdx。想要更低的首字延迟TTFT分块 prefill 调优--chunked-prefill-size适当调小让长 prompt 不阻塞。调度策略--schedule-policy默认fcfs先来先服务对首字延迟敏感的场景保持默认即可。Torch 编译缓存--enable-torch-compile配合TORCHINDUCTOR_CACHE_DIR缓存编译产物避免冷启动重编译。白话解释TTFTTime To First Token 用户发出请求到收到第一个字的时间是体感快不快的关键和总吞吐是两回事。上线前最后检查监控 压测 稳定运行接上监控服务启动时加--enable-metrics再用仓库自带的 Prometheus Grafana 栈# 1. 启动服务时带上指标 python -m sglang.launch_server --model-path m --port 30000 --enable-metrics # 2. 起监控栈 cd examples/monitoring docker compose upGrafana 默认http://localhost:3000账号/密码都是adminSGLang 仪表盘会自动出现。配置在 examples/monitoring/prometheus.yaml。压测确认能扛住用仓库自带的bench_serving打一轮真实负载确认 QPS 和延迟都在预期内python -m sglang.bench_serving \ --backend sglang \ --dataset-name random \ --random-input-len 2048 \ --random-output-len 2048 \ --num-prompts 300压测参数和输出指标说明见 docs/docs/developer_guide/bench_serving.mdx。上线 checklist用 Docker 锁定镜像版本不要用可变 tag 做生产配置健康检查与自动重启监控告警已接 Grafana压测通过TTFT / 吞吐在可接受范围--mem-fraction-static留有 0.7 左右的余量高可用多副本 负载均衡可看 sgl-model-gateway / router遇坑查哪里排查入口问题先看哪里装不上 / 版本装错docs/docs/get-started/install.mdx启动命令、发请求docs/docs/get-started/quickstart.mdxCUDA_HOME is not setexport CUDA_HOME/usr/local/cuda-your-cuda-version见安装文档 Quick fixesCPU 部署细节docs/docs/hardware-platforms/cpu_server.mdx调优参数全集docs/docs/advanced_features/server_arguments.mdx量化方法选择docs/docs/advanced_features/quantization.mdx压测方法docs/docs/developer_guide/bench_serving.mdx报错CUDA_HOME environment variable is not set设export CUDA_HOME/usr/local/cuda-your-cuda-version或先装 FlashInfer 再装 SGLang。下一步行动用上面的最短路径命令把服务跑起来再跑一次bench_serving压测拿到你当前硬件的基线吞吐。有了这个基线之后任何一次调参都能立刻看出是不是真的更快了而不是凭感觉。【免费下载链接】sglangSGLang is a high-performance serving framework for large language models and multimodal models.项目地址: https://gitcode.com/GitHub_Trending/sg/sglang创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考