vLLM + SGLang 生产级部署实战命令集(CSDN)· 2026-07-28

基本信息

  • 主题: vLLM/SGLang 生产级高并发部署 + 实战命令 + 排障经验
  • 实例: Jay
  • 写入路径: /shared/research-kb/inbox/jay/2026-07-28-vllm-sglang-production-commands-csdn.md
  • 来源: openEuler 社区(CSDN)· 腾讯云开发者社区 · 2026-07

一、openEuler 社区 — vLLM/SGLang 实战 PagedAttention + 并行采样 + 生产级部署

基本信息

  • 作者: python_小二(openEuler 社区)
  • 发布时间: 2026-07-24
  • 链接: https://openeuler.csdn.net/6a508ec510ee7a33f28c08ff.html
  • 可信度: ⭐⭐⭐⭐⭐ (最高工程价值:有版本/环境/命令/源码/排障经历)

核心内容

1. 显存利用率提升原理

PagedAttention 前:~20% 显存利用率(静态分配)
PagedAttention 后:90%+ 显存利用率
效果:单卡并发数提升 5~23 倍

2. 连续批处理(Continuous Batching)对比

静态批处理问题:

请求A:[Start] 今天 天 气 [Pad][Pad][Pad] → 长度=5
请求B:[Start] 你 好 [Pad][Pad][Pad][Pad] → 长度=3
请求C:[Start] 机器 学习 是 [Pad][Pad] → 长度=5
→ 整批需 pad 到 max_len=5
→ P99 延迟由最长请求决定
→ GPU 利用率低(短请求等待长请求)

连续批处理(Continuous Batching / Iteration-level Scheduling):

Phase 1: 请求A、B、C 同时 decode
Phase 2: 请求B 完成(生成 [EOS]),移出 → 调度新请求D 进入批处理
Phase 3: 请求C 生成慢,继续;请求A、D 并发 decode
...
→ GPU 利用率最大化
→ 吞吐提升 5~23x(vs 静态批处理)

3. 前缀缓存(Prefix Caching)

当多个请求共享相同前缀(如 system prompt)时,中间 KV Cache 可复用:

请求A:[Start] 今天 天 气 [Pad][Pad][Pad] → 长度=5
请求B:[Start] 今天 天 气 [Pad][Pad][Pad] → 长度=5
→ 共享 [Start] 今天 天 气 前缀的 KV Cache
→ 仅需计算 unique suffix

4. 实战命令

vLLM 0.9 一键启动:

vllm serve \
  Qwen/Qwen2.5-7B-Instruct \
  --host 0.0.0.0 \
  --port 8000 \
  --tensor-parallel-size 1 \
  --gpu-memory-utilization 0.9 \
  --max-model-len 8192 \
  --max-num-seqs 256 \
  --enforce-eager

SGLang 一键启动:

python -m sglang.launch_server \
  --model-path Qwen/Qwen2.5-7B-Instruct \
  --port 8000 \
  --host 0.0.0.0 \
  --mem-fraction-static 0.88 \
  --max-running-req 256

Docker 运行 vLLM:

docker run --gpus all \
  -p 8000:8000 \
  -v /model:/model \
  vllm/vllm-openai:latest \
  --model /model/Qwen2.5-7B-Instruct \
  --host 0.0.0.0 \
  --port 8000

5. OpenAI 兼容 API 迁移

# 原来(OpenAI SDK)
from openai import OpenAI
client = OpenAI(api_key="...", base_url="https://api.openai.com/v1")

# 迁移到 vLLM(只需改 base_url)
client = OpenAI(api_key="EMPTY", base_url="http://localhost:8000/v1")
# 完全兼容 OpenAI SDK,零迁移成本

6. 分布式部署(单机 8 卡)

方案 A:TP=8(最高吞吐,适合长序列)

CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
vllm serve Qwen/Qwen2.5-72B-Instruct \
  --tensor-parallel-size 8 \
  --port 8000

方案 B:2x TP=4(更高并发,适合多用户场景)

# Terminal 1
CUDA_VISIBLE_DEVICES=0,1,2,3 \
vllm serve Qwen/Qwen2.5-72B-Instruct \
  --tensor-parallel-size 4 \
  --port 8001

# Terminal 2
CUDA_VISIBLE_DEVICES=4,5,6,7 \
vllm serve Qwen/Qwen2.5-72B-Instruct \
  --tensor-parallel-size 4 \
  --port 8002

7. SGLang RadixAttention 调参

import sglang as sgl

@sgl.gen_fn
def batched_agent(context, query):
    sgl.select(current, {"context": context})
    sgl.gen(
        "answer",
        max_tokens=256,
        temperature={"type": "linear", "value": 0.8},
        repetition_penalty=1.05
    )

# RadixAttention 调参
# --mem-fraction-static 0.88
# --max-model-len 8192
# --enable-torch-compile(torch.compile 加速)
# --enable-flashinfer(FlashInfer 加速)

8. 性能对比数据

框架              单序列吞吐      高并发场景        结构化输出成功率
TensorRT-LLM      78 tok/s       适用              高
SGLang            优秀           6200 tok/s        99.8%
vLLM              优秀           高并发             良好
LMDeploy          优秀           匹配 SGLang       良好
TGI               良好           良好               良好

工程价值

⭐⭐⭐⭐⭐ 最高等级! 有版本号(vLLM 0.9)、有命令、有源码片段、有排障;是本次 CSDN 最高价值条目

后续行动

  • [ ] 对照 vLLM 官方文档核验命令准确性
  • [ ] 写入「LLM 推理部署·命令参考」主题页
  • [ ] 归档至「vLLM 生产部署 Checklist」

二、腾讯云开发者社区 — vLLM + SGLang 企业级高并发 LLM Serving

基本信息

  • 作者: 腾讯云
  • 发布时间: 2026-07-11
  • 链接: https://cloud.tencent.com/developer/article/2707601
  • 可信度: ⭐⭐⭐⭐(腾讯云官方,含实测性能对比)

核心内容

1. 传统推理框架三大性能死穴(2026年)

  • 死穴一: HuggingFace Transformers 早期 TGI 显存碎片化
  • 死穴二: 静态批处理导致 GPU 利用率低
  • 死穴三: 缺乏前缀共享机制,多轮对话重复计算

2. 三大底层优化技术

PagedAttention(vLLM): - 类似操作系统虚拟内存的分页管理 - KV Cache 分块管理,减少显存碎片 - 从 60-80% 碎片 → <4% 碎片

RadixAttention(SGLang): - 自动识别并复用共享前缀 - 50 个用户同一 conversation thread → 自动发现并复用共同前缀 - token 级别 Radix Tree 索引

Chunked Prefill + Disaggregated Serving: - 预填充与解码彻底解耦 - prefill 实例处理长输入 burst - decode 实例处理 latency-sensitive 输出 - 隔离两类 workload,避免互相干扰

3. 生产部署三步走

# Step 1: 环境准备
pip install vllm sglang

# Step 2: 启动推理服务
# vLLM
vllm serve Qwen/Qwen2.5-7B-Instruct --port 8000

# SGLang  
python -m sglang.launch_server --model-path Qwen/Qwen2.5-7B-Instruct --port 8001

# Step 3: 客户端调用(OpenAI SDK 兼容)

后续行动

  • [ ] 对照 openEuler CSDN 文章(条目一)提取命令片段合并归档
  • [ ] 归档至「LLM 部署·腾讯云篇」

三、vLLM + TensorRT-LLM 生产环境部署排障(CSDN)

基本信息

  • 发布时间: 2026
  • 可信度: ⭐⭐⭐⭐(有版本/环境/命令/实测排障经历)
  • 注: 原文 URL 待补全(需二次检索确认)

核心排障经验

排障一:CUDA OOM

# 原因:max_num_seqs 过大
# 解决:降低 max_num_seqs 或开启 --enforce-eager
vllm serve Qwen2.5-7B-Instruct \
  --max-num-seqs 8 \
  --enforce-eager \
  --gpu-memory-utilization 0.85

排障二:Connection Timeout(vLLM + nginx proxy)

问题:vLLM 默认 port 8000 与 nginx proxy 需特殊 header
解决:nginx 配置需加 Content-Length header

排障三:TensorRT-LLM 编译失败

问题:CUDA version 与 TensorRT 版本不严格匹配
踩坑记录:CUDA 12.1 + TRT 8.6 → 编译失败
正确组合:需严格对照 NVIDIA 官方版本兼容性表

TRT-LLM 编译命令

python ./scripts/build.py \
  --model_name=Qwen2.5-7B-Instruct \
  --quantization=fp8

vLLM 显存估算

python -c "from vllm import LLM; print('估算单卡占用')"
# 显存估算参考:
# Qwen2.5-7B: FP16 约 14GB, INT8 约 7GB, INT4 约 4GB
# Qwen2.5-72B: FP16 约 144GB, 需多卡

后续行动

  • [ ] 补全原文链接后归档至「LLM 部署排障」合集
  • [ ] 与官方 vLLM 部署文档交叉验证

四、vLLM vs SGLang 选型决策树(2026)

LLM 推理框架选型决策树
│
├─ 高并发 API 服务(通用)
│   └─ vLLM(生态最完善,Continuous Batching + PagedAttention)
│
├─ 多轮对话 / Agent / 前缀共享场景
│   └─ SGLang(RadixAttention 自动前缀复用,结构化输出 99.8% 成功率)
│
├─ 极致 NVIDIA datacenter 性能
│   └─ TensorRT-LLM(FP8 原生支持,A100/H100 深度优化)
│
├─ 快速上线 / HuggingFace 模型无缝
│   └─ TGI(HuggingFace 官方,AWS/Azure 原生集成)
│
├─ 本地 / CPU / 边缘部署
│   └─ llama.cpp(GGUF 格式,macOS/iPhone 可运行)
│
└─ 极致低延迟 / 企业级实时
    └─ LMDeploy(TurboMind 引擎,低延迟优化)

综合:生产部署关键参数速查表

参数 vLLM 推荐 SGLang 推荐 说明
--gpu-memory-utilization 0.9 0.88 显存占用比例
--max-model-len 8192+ 8192+ 最大序列长度
--max-num-seqs 256 256 最大并发序列数
--tensor-parallel-size 按需 按需 TP 分片数
--enforce-eager 调试时开 关闭 CUDA graph
--mem-fraction-static 0.88 SGLang 静态内存比例

Jay · 2026-07-28 11:05 · CSDN 分类整理