选推理服务器这件事,绝大多数人一上来就跑偏了!
当公司决定把开源模型搬回自己机房,理由很硬核:权重不要钱、数据不外流、财务再也不用对着API账单皱眉。但打开开源社区一看,能用的推理服务器少说十几个。每个都说自己快、每个都说自己省、每个都说自己好。你翻完文档,脑子更乱了。本文直接把7个主流自托管推理服务器(Hugging Face TEI、LocalAI、NVIDIA Dynamo-Triton、Ollama、SGLang、SIE、vLLM)摆上解剖台,用真实数据告诉你:选哪个,根本不取决于你手里有几张A100,而取决于一个你大概率没认真想过的问题。
所有人都在比吞吐量,但最该问的根本不是这个
跑去问工程师“该选哪个推理服务器”,十个人里有九个会反问:你的吞吐量要求是多少。剩下一个会问:你用的是什么显卡。
这两个问题错了吗?没错。但它们是战术问题,不是战略问题。
吞吐量是跑出来的数字,显卡是插在机箱里的硬件。这些东西都重要,但它们只在一种情况下才真正决定你的选择——你已经知道自己要跑什么模型了。可现实是,大部分人连自己要跑几个模型都没想清楚。
这就怪了。你决定自托管的时候,脑子里想的是“我要跑一个LLaMA 3”,还是“我要跑一个包含嵌入、重排、抽取、安全检测再加生成的智能体流水线”?
如果是前者,恭喜你,你的问题简单。如果是后者——绝大多数实际项目都属于后者——你面对的根本不是一个模型,而是五六个甚至更多的小模型。
这时候你拿吞吐量去选服务器,就像拿尺子去量一锅汤的温度。工具用错了。
单模型派和多模型派,中间隔着一道成本鸿沟
推理服务器这个江湖,表面上门派众多,实际上就分两派:单模型派和多模型派。
单模型派的做法很纯粹:一个实例只跑一个模型。为了把这个模型压榨到极致,它们会在批处理上做文章、在内存分页上做文章、在注意力核上做文章。vLLM是这一派的典型代表,靠着分页注意力机制和持续批处理,把一个大规模生成模型的并发能力拉到极限。SGLang也属于这一派,只不过它把优化方向瞄准了智能体场景里的结构化生成和前缀复用。Hugging Face TEI同样是单模型逻辑,但它专攻嵌入和重排模型,用Rust写的,启动快、批处理灵活。
单模型派的优点是性能极致。缺点是——如果你需要三个模型,你就得跑三个服务器。三个容器、三块GPU、三个自动扩缩容配置、三个监控面板。运维成本不是加法,是乘法。
多模型派走的是另一条路:一个部署里塞进一堆模型,请求来了路由到对应的那个,GPU资源大家共享。LocalAI是这一派的代表,它后端挂了一堆引擎——llama.cpp、Transformers、Diffusers、Whisper——文本、图像、音频、向量全都能伺候。NVIDIA Dynamo-Triton更猛,一个进程里能同时跑TensorRT-LLM引擎、vLLM引擎、PyTorch模型、ONNX分类器,外加Python预处理。SIE则是把多模型逻辑推到了另一个极端:它不服务大模型,专门服务85种以上的小模型——嵌入、重排、抽取、内容安全,全部通过一个API按需加载,内存满了就踢掉最久没用那个。
多模型派的优点是运维省心。缺点是单模型的极致性能?别想了。
一个智能体要跑六个模型,你打算开六个服务器吗
把上面两派的区别落到实处,问题就变得尖锐了。
一个典型的智能体请求长什么样?把查询做嵌入、检索相关文档、对候选结果重排、抽取结构化字段、跑一遍安全检测,最后才生成回答。这是五个还是六个模型?大部分还是小模型。
用单模型派的方式部署:五个模型就是五个独立部署。每个都有自己的容器、自己的GPU、自己的自动扩缩容、自己的监控仪表盘。
用多模型派的方式部署:一个部署搞定全部。
你选哪个?
这不是技术问题,这是算账问题。五个独立部署意味着五个需要有人盯着的东西。出故障了要查五个地方。流量来了要扩五个容器。版本更新要滚五个批次。运维成本不是线性增长的——是指数级往上翻的。
事情没那么简单。多模型派虽然省了运维的麻烦,但它在单模型性能上确实不如单模型派。LocalAI在纯LLM任务上比Ollama慢了大约15%到20%。这不是说LocalAI不好——它的定位就是通用型选手,不是为吞吐量而生的。Dynamo-Triton性能强劲,但它的基础镜像接近10个GB,配置界面大得吓人,而且根本不支持Serverless那种按需缩容到零的模式。这是一个平台工程团队才玩得转的东西。
所以真实答案是什么?两派都得用。
vLLM和SGLang很强,但它们各自有一道过不去的坎
单模型派里,vLLM和SGLang是最常被提及的两个名字。但很多人没搞清楚它们之间的区别。
vLLM是整个开源推理生态里的吞吐量之王。社区最大、硬件支持最广、踩过坑的人最多。你有一个大模型要跑,要跑得飞快、要撑得住高并发、要在几乎任何显卡上都能跑——vLLM是那个最安全的选择。
但vLLM的定位非常清楚:一个实例只服务一个生成式大模型。你想在上面跑一个小模型集群?这不是它设计的目标。
SGLang走的是另一条差异化路线。它专门针对结构化生成和智能体工作负载做了优化。它的RadixAttention技术会复用共享前缀——在多轮对话、RAG、重复的系统提示词这些场景里,这个优化能省下大量的计算。如果你跑的是智能体循环,SGLang可能比vLLM更适合你。
但SGLang有个硬伤:它更新、社区更小、硬件支持范围更窄。你遇到的坑可能没人帮你填。
选vLLM还是SGLang?答案是看你跑什么。跑纯生成、要最大吞吐——vLLM。跑智能体、跑RAG、跑结构化输出——SGLang可能更香。
但这个选择题只在你只跑一个大模型的时候才有意义。如果你跑的是五个小模型加一个大模型的混合体,这个问题本身就问错了。
Ollama是每个人的第一台推理服务器,但别让它成为最后一台
Ollama是特殊的一个!
它把模型管理、推理引擎(基于llama.cpp跑GGUF量化权重)、HTTP服务器全部打包进一个二进制文件。你执行一条ollama pull llama3,端口11434上就起来了一个OpenAI风格的API端点。CUDA自动识别、ROCm自动识别、苹果Metal自动识别——零配置。从零到跑起来一个私有模型,五分钟都用不了。
Ollama是神级开发工具。任何否定这一点的人,要么没用过,要么在撒谎。
但Ollama的默认并发能力只有个位数级别的并行请求。它生来就是给单用户场景用的。你拿它去服务几千个并发用户?结局不会太好看。
Ollama的正确用法是:用它做原型、做开发、做离线单机助手。产品要上线了,把模型导出来,用vLLM、SGLang或者SIE去 serving。
这就像造房子。Ollama是脚手架——你不能住在脚手架里,但没有脚手架你也盖不起房子。
SIE说它能跑85个模型共享一块GPU,数字背后藏着什么
SIE是这篇文章里最反直觉的一个存在!
别的推理引擎都在研究怎么把一个大模型分散到多块GPU上跑得更快。SIE反着来——它研究怎么让一堆小模型共享一块GPU,并且在它们之间快速切换。
它预配置了超过85种模型:嵌入、重排、抽取、内容安全、小规模生成。全部通过一个API访问。模型按需加载,显存满了就踢掉最久没用那个。
SIE报了一个数据:池化设计能达到大约89%的GPU利用率,而按每个工作进程独立部署的方式只有大约51%。差了将近40个百分点。
这个数字漂亮吗?漂亮。但要注意一个细节:89%是池化后的效率,51%是“按每个工作进程独立部署”的效率。后者是个什么概念?就是你用单模型服务器给每个小模型各开一个实例。那当然低——每个实例都在空转等待、都在吃显存、都在浪费算力。
SIE解决的就是这个问题。它不是一个推理引擎,它是一个小模型集群的操作系统。它还顺手打包了负载均衡网关、KEDA自动扩缩容、Grafana仪表盘、GKE和EKS的Terraform模板。
但SIE不服务大模型!你拿它去跑LLaMA 3 70B?这不是它该干的事!
所以真实的生产环境长什么样?SIE管小模型集群,vLLM或SGLang管那个大模型,两个一起上。各司其职。
TEI和Dynamo-Triton,两个极端都值得看一眼
Hugging Face TEI和NVIDIA Dynamo-Triton是另外两个值得单独拎出来说的角色。它们代表了两个完全不同的极端。
TEI是极简主义的典范。它就做一件事:服务嵌入模型和重排模型。暴露OpenAI兼容的端点,外加一个原生/rerank接口。CPU上能跑,GPU上也能跑。启动快、批处理动态、配置简单。你有一个私有的嵌入器和一个私有的交叉编码器重排器要部署?TEI是干净利落的选择。
但TEI是单模型服务器。一个实例就服务一个模型。Hugging Face官方的建议是:嵌入器和重排器分开跑独立的实例,甚至独立GPU。你不能把两个模型塞进一个TEI实例里共享显存。
Dynamo-Triton是另一个极端——极度复杂、极度强大。它一个进程里能塞进TensorRT-LLM、vLLM、PyTorch、ONNX,再加一个Python预处理。动态批处理、模型集成、统一HTTP/gRPC接口。这是NVIDIA给企业级异构模型服务准备的答案。
但它只跑NVIDIA显卡。基础镜像接近10个GB。配置界面大到吓人。不支持Serverless风格的缩容到零。这不是给一个人月以下的团队准备的。
如果你是平台工程团队,手上管着一堆PyTorch模型、ONNX模型、TensorRT模型,而且全跑在NVIDIA集群上——Dynamo-Triton能帮你把这一堆东西整合成一个统一服务。如果你只是一个想跑几个嵌入模型的开发者——别碰它,你会被配置文档埋掉的。
选服务器的唯一正确问题:你的工作负载长什么样
回到最开始的困惑。十几个推理服务器摆在面前,每个都说自己最好。怎么选?
答案是:别问哪个最好,问你的工作负载长什么样:
- 你的工作负载是“一个大模型,要最大吞吐量”——vLLM。
- 你的工作负载是“一个大模型,跑智能体、RAG、结构化输出”——SGLang。
- 你的工作负载是“只有嵌入和重排”——TEI。
- 你的工作负载是“本地开发、原型验证、离线使用”——Ollama。
- 你的工作负载是“模型类型很多、硬件条件一般”——LocalAI。
- 你的工作负载是“异构模型、企业级规模、全NVIDIA”——Dynamo-Triton。
- 你的工作负载是“智能体的小模型集群、要生产级配套”——SIE。
这七句话就是全部答案。
但还有一个更深的坑:生产就绪度和“在我机器上能跑”之间,隔着一整个运维团队。自动扩缩容有没有?监控仪表盘有没有?流量突增能不能扛住?要不要专门配一个工程师24小时盯着?
这些问题才是真正吃成本的地方。单模型服务器在单模型性能上赢了,但在多模型场景下的运维成本能把那点性能优势吃掉。多模型服务器省了运维的麻烦,但在单模型性能上确实有妥协。
我试了把五个模型塞进一个Dynamo-Triton实例,然后发现镜像下载用了四十分钟
说个真事。
有个团队决定用Dynamo-Triton统一服务他们所有的模型。五个模型——两个嵌入、一个重排、一个抽取、一个小型生成模型。理论上一套部署全搞定。
然后他们开始拉镜像。9.9个GB。下载用了四十分钟。
然后开始配config.pbtxt。每个模型要写一份配置文件,定义输入输出张量、批次大小、最大队列长度。五份配置写完,发现格式没写对,服务起不来。改完重启,又发现模型之间的显存争抢导致性能抖动。
最后他们用了三周才把五个模型稳定地跑在同一个Dynamo-Triton实例上。
这不是Dynamo-Triton的错——它就是设计给平台工程团队用的,不是给三个人月的项目用的。但这个案例说明了一个问题:多模型服务器的“省运维”是理论上的,实际操作中,配置和调优的成本可能比开五个独立实例还要高。
那SIE呢?它预配置了85种模型,拿来就能用。但它的预配置列表里有没有你需要的那个模型?如果不在列表里,你要自己加——加一个模型的成本是多少?文档里没写。
这事的答案还没人知道。因为SIE的社区还不够大,踩坑的人还不够多。
原文期刊:HackerNoon / 发表日期:2026年8月15日 / 原文标题:7 Best Self-Hosted Inference Servers for Open-Source Models, Compared (2026) / 作者单位背景:SIEmon(@merry-n-proprietary),撰写推理与开源专有模型相关内容