ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从0到跑通:SGLang部署与高并发调优的完整路径

从0到跑通:SGLang部署与高并发调优的完整路径 从0到跑通SGLang部署与高并发调优的完整路径【免费下载链接】sglangSGLang is a high-performance serving framework for large language models and multimodal models.项目地址: https://gitcode.com/GitHub_Trending/sg/sglang凌晨高峰线上LLM服务的TTFT首token延迟从200ms涨到8s新请求开始排队甚至超时。你排查后发现瓶颈不在模型本身而在推理服务框架的调度、显存分配和并发配置上。SGLang就是干这个的面向LLM和多模态模型的高性能serving框架RadixAttention前缀缓存、连续批处理、PD分离这些能力开箱即用。这篇文章覆盖从零部署到显存/延迟调优适用于NVIDIA GPU为主的单机到多机场景。五种部署路径怎么选路径适用场景复杂度关键依赖推荐程度pip/uv安装开发验证、单机调试低CUDA环境起步首选Docker容器生产单机、环境一致性低Docker GPU驱动生产首选源码编译定制kernel、性能极限优化中CUDA/ROCm工具链有定制需求再上Kubernetes多副本、自动扩缩容高K8s集群多副本生产CPU镜像无GPU环境、纯CPU推理中Intel Xeon特殊场景起步阶段直接走pip或Docker源码编译和K8s只有在遇到明确瓶颈或规模要求时再考虑。最小可行路径pip安装到服务可用三步跑通每步都有明确目的。# 安装uv比pip快[all]带上推理所需依赖 pip install --upgrade pip pip install uv uv pip install sglang[all]0.5.3rc0# 起服务默认端口30000/health端点用于确认就绪 python -m sglang.launch_server \ --model-path meta-llama/Llama-3.1-8B-Instruct \ --host 0.0.0.0 \ --port 30000# 压测100条随机请求验证吞吐和延迟 python -m sglang.bench_serving \ --dataset-name random \ --random-input-len 1024 \ --random-output-len 1024 \ --num-prompts 100 \ --request-rate 10如果安装时卡在CUDA编译环节设置export CUDA_HOME/usr/local/cuda-你的版本再重试这是编译kernel时找不到nvcc的典型原因。安装细节见 安装文档。分场景进阶Docker生产部署仓库自带的compose文件已经配好健康检查、GPU预留、--ipchost和内存锁定直接基于它改模型路径即可不要自己从零写# docker/compose.yaml 关键配置 services: sglang: image: lmsysorg/sglang:latest restart: always ipc: host ulimits: memlock: -1 healthcheck: test: [CMD-SHELL, curl -f http://localhost:30000/health || exit 1] deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu]memlock: -1是NCCL多卡通信的硬性要求漏掉它多卡会报IB/NCCL错误。单卡GPU延迟优化# 单卡调优CUDA图FP8 KV缓存降TTFT python -m sglang.launch_server \ --model-path meta-llama/Llama-3.1-8B-Instruct \ --attention-backend flashinfer \ --enable-cuda-graph \ --kv-cache-dtype fp8_e5m2FP8 KV缓存把KV显存占用砍半换来的容量提升通常比精度损失更划算fp8_e5m2和fp8_e4m3都支持数值范围敏感的场景用e4m3。多卡张量并行# 2卡TP模型切到2个GPUattention默认后端即可 python -m sglang.launch_server \ --model-path meta-llama/Llama-3.1-8B-Instruct \ --tp 2 \ --host 0.0.0.0 --port 30000CPU服务器用仓库里的专用Dockerfile构建别用通用镜像硬跑# 构建Xeon专用镜像并启动 git clone https://gitcode.com/GitHub_Trending/sg/sglang cd sglang/docker docker build -t sglang-cpu:main -f xeon.Dockerfile .CPU场景延迟天然比GPU高一个量级别按GPU指标设预期。接入Prometheus监控examples/monitoring下有现成的compose配置Prometheus直接抓30000端口的metricscd examples/monitoring docker-compose up -d即可配置见 examples/monitoring/prometheus.yaml。关键参数速查参数作用常见取值踩坑提示--tp张量并行卡数1/2/4/8必须整除模型层切分粒度显存够就别开--attention-backendattention kernel选择flashinfer/ 默认不同后端算力和显存表现差异明显--mem-fraction-static静态显存占比0.7~0.85启动OOM先降它别急着加卡--chunked-prefill-sizeprefill分块token数4096~8192长输入TTFT高就调小--kv-cache-dtypeKV缓存精度fp8_e5m2/fp8_e4m3/bf16非GPU80及以上硬件部分选项不可用--max-running-requests最大并发batch按显存调显存余量少时适当下调--schedule-policy请求调度策略fcfs等长短请求混合场景再考虑改--stream-interval流式输出间隔1调大减少flush次数客户端体感变差排障与决策树如果启动时显存分配失败先确认是模型加载OOM还是KV池分配OOM前者降--mem-fraction-static或开--tp后者开--kv-cache-dtype fp8_e5m2。如果TTFT随输入变长急剧上升且decode正常是prefill阻塞了decode把--chunked-prefill-size从默认调小到4096让prefill分批进batch。如果decode吞吐偏低且TP已开先确认--attention-backend是否为flashinfer再确认--enable-cuda-graph生效两者都缺时收益最明显。如果压测显示P99延迟高但P50正常高概率是长尾大batch降--max-running-requests让batch更小更稳。如果多卡报NCCL/IB相关错误检查容器是否有ipc: host、memlock未限制这是compose里已经配好的两项手搓启动命令最容易漏。如果FP8 KV缓存报错先查GPU是否Hopper/Blackwell架构老架构退回bf16。边界与延伸这篇文章覆盖的是单机到多卡的部署和调参PD分离、HiCache多级缓存、专家并行这些分布式进阶特性没展开规模上去之后再补。延伸阅读服务器参数全表、量化说明。先把最小路径的三步跑通再用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),仅供参考
返回列表