首页/AI/大模型部署与运维速查/主流推理框架横向对照
部署形态与选型43 条

主流推理框架横向对照

按部署形态与调度机制对照 vLLM、SGLang、TGI、Ollama、llama.cpp:前三者面向服务端吞吐,Ollama 与 llama.cpp 面向单机与边缘;对照表用于快速缩小候选范围。

为什么要横向对照

推理框架的差异集中在三处:调度方式(怎样把多个请求塞进同一批)、显存管理(KV 缓存怎么分配与复用)、生态位置(支持哪些权重格式与硬件)。vLLM、SGLang、TGI 面向服务端吞吐,Ollama 与 llama.cpp 面向单机与边缘。对照表的作用是快速缩小候选范围,最终选型仍要在目标硬件上实测。

框架对照(定性)

框架定位典型场景
vLLMGPU 服务端高吞吐引擎在线 API、高并发对话、批量离线推理
SGLang服务端引擎,前缀缓存优化突出多轮对话、大量共享系统提示的场景
TGIHugging Face 生态的服务端引擎标准 Transformers 权重快速服务化
Ollama单机模型运行与轻量接口开发调试、个人工作站、内网小规模使用
llama.cppCPU 与消费级显卡推理边缘设备、桌面端、GGUF 量化部署
LMDeploy国产模型与量化工具链较全AWQ 权重服务化、离线批处理

调度机制差异

机制影响与取舍
连续批处理请求随到随入批,吞吐高;批越大首 token 延迟越高
分页式 KV 管理显存碎片小、可复用;实现复杂度高,是服务端引擎的标配
前缀缓存复用共享前缀的请求省去重复预填充,多轮对话收益明显
单机按需加载启动简单、显存占用可控;并发一上去就排队

两条验证路径

两条验证路径
# 服务端候选:先跑通 OpenAI 兼容接口再谈吞吐
vllm serve /models/Qwen --max-model-len 8192
curl http://127.0.0.1:8000/v1/models
# 单机候选:用命令行快速验证模型效果与量化档位
ollama run qwen2.5:7b
# 边缘候选:llama.cpp 用同一份 GGUF 对比不同量化档位
./build/bin/llama-bench -m model-q4_k_m.gguf

对比时必须统一的变量

  • 同一份权重与同一量化档位:不同量化档位之间的吞吐对比没有意义
  • 同样的上下文长度与输出长度:长上下文下 KV 压力会改变排名
  • 同样的并发梯度:从 1 到目标并发逐级测,找出开始排队的那一档
  • 同样的硬件与驱动版本:换卡或换驱动后要重测,历史数据不能直接沿用
  • 统一延迟口径:首 token 延迟与单 token 输出时间分开统计,混在一起无法归因
对照只做方向性筛选:宣传口径与实际差距最大的是「最大并发」这类数字,它依赖上下文长度与输出长度假设,必须换成自己的业务形状再测。
不要在一套基准上混跑多个引擎:同一台机器上先后安装多套框架容易互相污染依赖,压测机与生产机的依赖版本要对齐。
容易被忽略的对比维度是可观测性:是否暴露 KV 水位与排队请求数、日志能否按请求编号串起来,直接决定故障时能不能快速定位。

向厂商或社区提的问题

  • 目标模型架构是否在支持列表内:注意力变体、MoE 与多模态往往支持进度不同
  • 量化格式是否匹配手上的权重:AWQ、GPTQ、FP8、GGUF 各家支持程度不一样
  • 多卡方案怎么做:张量并行、流水并行的支持情况与通信开销
  • 有没有容量观测指标:KV 水位、排队请求数这类指标决定能否做容量规划
  • 升级路径是否清晰:大版本之间的参数与接口变动幅度,决定运维成本

易错点

  • 按宣传数字选框架而不实测:同一模型在不同框架的吞吐差异随并发与上下文长度改变,甚至可能反超
  • 拿不同量化档位做横向对比:结论会变成「量化差距」而不是「框架差距」
  • 只测单请求延迟:上线后决定体验与成本的是并发下的排队与吞吐
  • 忽略权重格式约束:手上是 GGUF 就不能直接喂给只吃 safetensors 的引擎,先确认格式支持再选型
  • 在同一台机器上反复换框架做长期压测:依赖互相干扰导致结果不可比,建议按镜像隔离环境

数据来源与参考

  • vLLM 官方文档(docs.vllm.ai)
  • SGLang 官方文档(docs.sglang.ai)
  • Ollama 官方文档(docs.ollama.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌