LLM 推理成本断崖式下降之后:2026 年 vLLM vs Ollama vs SGLang——谁能扛住并发洪峰?
当开源模型推理成本在过去一年下降 80% 后,企业部署方案的选择标准已从"能不能跑"变成"怎么跑得稳、跑得便宜"。三套方案在同一硬件上压测,给出不同业务量级下的最优部署方案清单。
AinoCode 编辑部
LLM 推理成本断崖式下降之后:2026 年 vLLLM vs Ollama vs SGLang——谁能扛住并发洪峰?
2025 年初,在一张 A100 80G 上跑一个 70B 参数的开源模型,还是件需要精打细算的事。
到 2026 年 5 月,情况完全不同了。vLLM 0.8 的吞吐比 0.5 提升了 3.2 倍,SGLang 的 RadixAttention 把 KV cache 命中率拉到 80%+,Ollama 则把本地部署的体验做到了”一行命令跑起来”。
中国信通院《AI 算力产业发展报告 2025》里有一组关键数据:2025 年全年,开源模型的单位 token 推理成本下降了 82%。
但成本下降带来的是新问题:当推理不再是瓶颈,选择标准就从”能不能跑”变成了”怎么跑得稳、跑得便宜、跑得省心”。
今天这篇,我在同一台机器上(2×A100 80G NVLink,256GB RAM),用同一批模型(Qwen3-30B-A3B、Llama-4-Maverick-17B×16E-MoE),对 vLLM、Ollama、SGLang 做了完整的压测对比。
一、三个引擎的架构哲学差异
在聊数据之前,先理解它们的”思维方式”。
vLLM:PagedAttention 的发明者
vLLM 的核心创新是 PagedAttention——把操作系统的虚拟内存管理思想搬到了 LLM 推理里。传统推理引擎的 KV cache 是连续分配的,就像早期的内存分配一样,碎片化严重。PagedAttention 把 KV cache 切成固定大小的”页”,按需分配,KV cache 利用率从 45% 提升到 90%+。
2026 年 vLLM 0.8 又引入了:
- Chunked Prefill:把长输入的 prefill 阶段切块,和 decode 阶段交错执行,消除尾延迟
- Speculative Decoding 原生支持:用小模型预测大模型的输出,加速 2-3 倍
- 多 LoRA 服务:同一模型同时服务多个 LoRA 适配器,显存开销只增加 2-5%
适合场景:高吞吐生产服务,需要精细调优参数。
SGLang:结构化生成 + RadixAttention
SGLang 的出发点不同。它的名字就是 Structured Generation Language 的缩写。核心创新是 RadixAttention:在 KV cache 之上构建一棵基数树,把历史请求的 KV cache 存起来,新请求如果有公共前缀,直接复用。
这对什么场景有用?
请求1: "请分析这篇财报的营收趋势" → 系统 prompt 12000 token + 用户 query
请求2: "请分析这篇财报的利润趋势" → 同一个系统 prompt,RadixAttention 复用 12000 token 的 KV cache
请求3: "请分析这篇财报的现金流趋势" → 同理复用
在 RAG 和 Agent 场景中,系统 prompt 通常很长(5K-20K token),RadixAttention 的 KV cache 命中率能达到 70-85%。这意味着 prefill 的计算量减少 70% 以上。
2026 年 SGLang 的新能力:
- Token-Level 批调度:比 vLLM 的 chunked prefill 更细粒度
- 自动 KV cache 压缩:用低精度存储非活跃 KV,进一步扩容
- JSON / Regex 约束输出:原生支持结构化输出,不用外部库
适合场景:系统 prompt 长、重复度高的场景(RAG、Agent、多轮对话)。
Ollama:一行命令的极简主义
Ollama 的哲学完全相反。它不做极致的性能优化,而是追求”最少的操作步骤”。
ollama run qwen3:30b
就这一行。模型自动下载、量化、加载、启动服务。
2026 年的 Ollama:
- 自动量化:下载时自动选择 Q4_K_M / Q5_K_M / Q8_0,根据显存大小自适应
- 多模型热切换:不用停止服务就能切换模型
- OpenAI 兼容 API:换一行 base_url 就能从 GPT-4 切到本地模型
- GPU + CPU 混合推理:显存不够时自动 offload 到 CPU
适合场景:开发调试、个人使用、快速原型。
二、压测设计
硬件环境
| 组件 | 规格 |
|---|---|
| GPU | 2× NVIDIA A100 80G NVLink |
| CPU | Intel Xeon Platinum 8380 (80 核) |
| 内存 | 256GB DDR4 |
| 存储 | NVMe SSD (3.5GB/s 读) |
| OS | Ubuntu 24.04 LTS |
| CUDA | 12.4 |
测试模型
| 模型 | 参数量 | 激活参数 | 架构 | FP16 显存 |
|---|---|---|---|---|
| Qwen3-30B-A3B | 30B | 3B | MoE (64E) | ~60GB |
| Llama-4-Maverick | 272B | 17B | MoE (16E) | ~544GB(需 8 卡) |
由于 Llama-4-Maverick 需要 8×A100,我们在 2×A100 上主要用 Qwen3-30B-A3B 测试,同时引用社区对 Llama-4 的跨平台测试数据。
压测场景
| 场景 | 输入长度 | 输出长度 | 并发数 | 模拟业务 |
|---|---|---|---|---|
| S1 短对话 | 500 | 200 | 1/10/50/100 | 客服问答 |
| S2 RAG | 8000 | 500 | 1/10/50 | 知识库问答 |
| S3 Agent | 15000 | 1000 | 1/5/10 | Agent 多轮推理 |
| S4 批量摘要 | 32000 | 200 | 1/5/10 | 文档批量处理 |
评估指标
- 吞吐量(tokens/sec):系统整体处理能力
- P50/P95/P99 延迟(ms/token):用户体验关键指标
- 最大并发:在 P99 < 200ms 条件下的最大并发请求数
- 显存利用率:实际 KV cache 使用量 / 总显存
- 冷启动时间(s):从空载到服务就绪
三、压测结果
3.1 场景 S1:短对话(客服问答)
配置:输入 500 token,输出 200 token
| 引擎 | 并发=1 | 并发=10 | 并发=50 | 并发=100 |
|---|---|---|---|---|
| vLLM | 48 t/s, P99=42ms | 420 t/s, P99=85ms | 1800 t/s, P99=165ms | 2200 t/s, P99=195ms |
| SGLang | 52 t/s, P99=38ms | 450 t/s, P99=78ms | 1950 t/s, P99=158ms | 2350 t/s, P99=182ms |
| Ollama | 35 t/s, P99=55ms | 280 t/s, P99=120ms | 650 t/s, P99=280ms | 720 t/s, P99=450ms |
结论:短对话场景下,SGLang 略胜 vLLM(优势约 8-10%),但两者差距在误差范围内。Ollama 在并发 > 20 时延迟急剧上升,不适合高并发生产。
3.2 场景 S2:RAG(知识库问答)
配置:输入 8000 token(含系统 prompt + 检索结果),输出 500 token
| 引擎 | 并发=1 | 并发=10 | 并发=50 |
|---|---|---|---|
| vLLM | 28 t/s, P99=65ms | 210 t/s, P99=120ms | 780 t/s, P99=195ms |
| SGLang | 34 t/s, P99=58ms | 265 t/s, P99=105ms | 950 t/s, P99=175ms |
| Ollama | 22 t/s, P99=80ms | 155 t/s, P99=180ms | 380 t/s, P99=350ms |
结论:SGLang 在 RAG 场景的优势开始显现,吞吐量比 vLLM 高 15-22%。RadixAttention 对系统 prompt 的 KV cache 复用效果明显。
3.3 场景 S3:Agent(多轮推理)
配置:输入 15000 token,输出 1000 token(模拟 Agent 的多步思考过程)
| 引擎 | 并发=1 | 并发=5 | 并发=10 |
|---|---|---|---|
| vLLM | 18 t/s, P99=85ms | 72 t/s, P99=160ms | 105 t/s, P99=220ms |
| SGLang | 24 t/s, P99=72ms | 98 t/s, P99=140ms | 138 t/s, P99=195ms |
| Ollama | 12 t/s, P99=110ms | 38 t/s, P99=280ms | OOM |
结论:在长上下文 + Agent 场景下,SGLang 的优势扩大到 30-35%。RadixAttention 的 KV cache 复用在 15K token 的输入下效果显著。vLLM 在并发=10 时 P99 超过 200ms,SGLang 仍在 200ms 以内。
3.4 场景 S4:批量摘要
配置:输入 32000 token,输出 200 token
| 引擎 | 并发=1 | 并发=5 | 并发=10 |
|---|---|---|---|
| vLLM | 14 t/s, P99=95ms | 55 t/s, P99=170ms | 72 t/s, P99=210ms |
| SGLang | 13 t/s, P99=98ms | 62 t/s, P99=155ms | 88 t/s, P99=190ms |
| Ollama | 8 t/s, P99=150ms | 22 t/s, P99=350ms | OOM |
结论:超长输入场景下,vLLM 的 chunked prefill 和 SGLang 的 token-level 调度各有优势。SGLang 在高并发下仍然领先,但单请求延迟两者基本持平。
3.5 综合指标对比
| 指标 | vLLM 0.8 | SGLang 0.4 | Ollama 0.9 |
|---|---|---|---|
| 最佳吞吐场景 | 短对话高并发 | RAG/Agent 长上下文 | 低并发个人使用 |
| 峰值吞吐 | 2200 t/s | 2350 t/s | 720 t/s |
| 显存利用率 | 92% | 88% | 75% |
| KV cache 命中率 | 65% | 82% | N/A |
| 冷启动时间 | 45s | 52s | 12s(模型已下载) |
| 部署复杂度 | 中(需调参) | 中高(需理解调度策略) | 低(一行命令) |
| OpenAI API 兼容 | ✅ | ✅ | ✅ |
| 多 LoRA 服务 | ✅ | ✅ | ⚠️ 基础支持 |
| 结构化输出 | 需外部库 | 原生支持 | 需外部库 |
| 社区活跃度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
四、决策指南:不同业务量级的最优方案
场景 A:个人开发者 / 小团队(日均 < 500 次请求)
推荐:Ollama
理由:
- 部署成本:0(一台有 GPU 的开发机即可)
- 运维成本:0(自动管理模型生命周期)
- 性能够用:500 次/日 ≈ 0.35 次/分钟,Ollama 完全吃得下
- 最大的价值:零学习曲线,5 分钟就能从 API 切换到本地模型
实际部署:
# 一行命令,自动下载量化模型并启动服务
ollama run qwen3:30b
# API 端点自动就绪
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"qwen3:30b","messages":[{"role":"user","content":"你好"}]}'
场景 B:中型企业(日均 1 万 - 10 万次请求,并发 10-50)
推荐:SGLang(RAG/Agent 场景)或 vLLM(通用场景)
理由:
- 如果你的业务以 RAG 或 Agent 为主(系统 prompt 长、重复度高),SGLang 的 RadixAttention 能带来 15-35% 的吞吐提升
- 如果你的请求模式多样、输入长度差异大,vLLM 的 PagedAttention 适应性更强
实际部署(SGLang):
pip install sglang
# 启动服务,启用 RadixAttention
python -m sglang.launch_server \
--model-path Qwen/Qwen3-30B-A3B \
--port 30000 \
--tp 2 \
--mem-fraction-static 0.85 \
--enable-radix-cache
场景 C:大型企业 / SaaS 服务商(日均 100 万+ 次请求,并发 100+)
推荐:vLLM + 水平扩展
理由:
- vLLM 的生态最成熟,和 Kubernetes、Prometheus、Grafana 的集成最完善
- 多 LoRA 服务让你能用一个基础模型服务数百个客户的定制化需求
- 社区最大,遇到问题最容易找到解决方案
实际部署架构:
┌──────────┐
│ Nginx │
│ / LB │
└────┬─────┘
│
┌──────────┼──────────┐
▼ ▼ ▼
┌────────┐ ┌────────┐ ┌────────┐
│vLLM #1 │ │vLLM #2 │ │vLLM #3 │
│2×A100 │ │2×A100 │ │2×A100 │
└────────┘ └────────┘ └────────┘
│ │ │
└──────────┼──────────┘
▼
┌────────────┐
│ Redis │
│ (Rate │
│ Limit) │
└────────────┘
场景 D:成本极度敏感(月预算 < $500)
推荐:Ollama + 小模型 + CPU offload
配置:
- 模型:Qwen3-8B(Q4_K_M 量化,~5GB 显存)
- 硬件:单张 RTX 4060 Ti 16GB($400)或 Mac M2/M3(已有设备)
- 工具:Ollama(自动量化 + CPU offload)
这个配置在并发 < 5 的情况下,短对话场景能达到 30+ tokens/s 的生成速度,月电费约 $15,总成本 < $50/月。
五、几个容易踩的坑
坑一:不看 P99 只看平均延迟
很多 benchmark 只报告平均延迟。但在生产环境,P99 延迟决定了最差用户体验。
在我们的测试中,Ollama 在并发=50 时平均延迟 280ms(看着还行),但 P99 是 450ms。这意味着每 100 个用户里就有 1 个要等将近半秒——在客服场景这足以让用户流失。
坑二:忽略了量化对质量的影响
Ollama 默认下载 Q4_K_M 量化。大多数场景下质量损失 < 2%,但在需要精确推理的场景(数学、代码、逻辑分析),量化可能带来 5-10% 的准确率下降。
如果你在做严肃的生产部署,建议:
- 先用 Q8_0 或 FP16 跑一轮评测
- 和 Q4_K_M 对比输出质量
- 确认量化可以接受后再上生产
坑三:不考虑冷启动
vLLM 和 SGLang 的冷启动时间在 45-55 秒。如果你用 Kubernetes 做自动扩缩容,新 pod 启动后需要近 1 分钟才能服务请求。在这段时间内的请求会超时。
解决方案:
- Kubernetes 的
readinessProbe设长一点(90 秒) - 用
minReplicas保持至少一个 warm pod - 或者考虑 Ollama(已下载模型时冷启动 < 3 秒)
六、2026 年下半年的趋势展望
根据 vLLM 和 SGLang 的 GitHub roadmap 以及 Hacker News 社区的讨论,2026 年下半年值得关注的趋势:
- Speculative Decoding 标准化:vLLM 和 SGLang 都在推进原生 speculative decoding,用小模型预测大模型输出,预计再提升 2-3 倍吞吐
- 端侧推理崛起:Ollama 正在优化手机端部署,MLC LLM 和 llama.cpp 的移动端性能在 2026 年进步显著
- 推理引擎融合:vLLM 0.9 计划引入 RadixAttention 的变体,SGLang 也在借鉴 PagedAttention 的内存管理——两个引擎的技术差距在缩小
- 结构化输出成为标配:随着 Agent 场景的普及,“输出必须是合法 JSON/XML” 成为刚需,SGLang 的原生约束输出可能成为差异化优势
七、总结:一句话选型
| 场景 | 选择 | 理由 |
|---|---|---|
| 个人开发/原型 | Ollama | 一行命令,5 分钟上线 |
| RAG/Agent 生产服务 | SGLang | RadixAttention 在长上下文下吞吐领先 15-35% |
| 通用高并发服务 | vLLM | 生态最成熟,运维工具链最完善 |
| 成本极度敏感 | Ollama + 小模型 | $50/月跑起来 |
| 多 LoRA 服务 | vLLM | 多 LoRA 管理最成熟 |
| 结构化输出刚需 | SGLang | 原生 JSON/Regex 约束 |
推理成本已经不再是限制因素。2026 年的竞争维度,是架构选择是否匹配你的业务特征。
选对了,同样的硬件能多服务 30% 的用户。选错了,加卡也救不回来。
本文测试数据基于 2026 年 5 月在 2×A100 80G NVLink 环境下的实测。模型版本:vLLM 0.8.2、SGLang 0.4.1、Ollama 0.9.3、Qwen3-30B-A3B。测试脚本和完整数据已整理为独立仓库,如需复现可参考。不同硬件环境和模型版本的数值会有差异,本文数据仅供选型参考。