模型与多模态实用指南2026年11月5日Flatkey Team

vLLM 与 Ollama:性能、成本与部署权衡

比较 vLLM 和 Ollama 在本地实验与生产级 GPU 推理中的表现,涵盖并发、API 兼容性、基准测试、部署和成本。

vLLM 与 Ollama:性能、成本与部署权衡

vLLM 与 Ollama:简要回答

当首要任务是下载一个开放模型、在笔记本电脑或小型服务器上运行它,并让开发者快速测试提示词或私有应用时,选择 Ollama。当任务是利用您运营的 GPU 容量向许多用户提供已知模型服务,并且您已准备好衡量排队、令牌吞吐量、内存使用和尾延迟时,选择 vLLM。这两种选择都不会将自托管模型变成托管服务;模型、硬件、部署和事件响应仍由您负责。

这种比较并非在所有场景下都是“易用 versus 快速”。Ollama 可以处理并发请求,而 vLLM 也可以运行单个请求。性能取决于模型、量化、上下文长度、加速器、请求组合和并发量。对于缺少这些细节的任何基准测试,应将其视为起始假设,而非采购决策。

决策点 Ollama vLLM
最自然的起点 本地实验和简单的模型服务工作流 具有明确吞吐量和延迟目标的专用推理服务
模型工作流 通过 Ollama 的模型工具拉取并运行模型 使用推理引擎提供受支持的模型或检查点服务
HTTP 接口 Ollama API 加上一组有文档说明的 OpenAI 兼容端点子集 有文档说明的 OpenAI 兼容服务器,端点支持取决于模型
并发 可配置的并行请求和队列;内存会随并行上下文增加而增长 专为并发 GPU 推理设计的连续调度和批处理
主要运维问题 在真实负载下,此部署是否仍能满足延迟和内存目标? 哪些引擎设置和 GPU 拓扑能在不引发不稳定性的情况下满足这些目标?
最佳验证方式 在目标主机上运行相同的应用请求组合 在目标 GPU 上运行相同的应用请求组合

该表描述的是产品方向,而非通用速度排名。如果您的流量零星,一项调优良好的本地 Ollama 服务可能已经足够。如果流量以许多用户发起的突发请求形式到来,则值得评估 vLLM 的调度器,但模型仍必须能够装入内存,且服务必须在负载下保持健康。

并发负载下会发生什么变化

单个提示词掩盖了主要差异。在真实 API 中,请求在不同时间到达,提示词长度各不相同,生成的输出长度也不同。服务系统必须决定哪些请求共享 GPU 工作,以及为其注意力状态预留多少内存。

vLLM 围绕一个用于调度并发请求和管理键值缓存的推理引擎构建。其服务接口提供对批处理、序列限制、内存使用和并行度的控制。当团队能够观察每项变更的结果时,这些控制非常有用。如果从采用不同模型或 GPU 的基准测试中复制设置,它们也可能使部署更难运维。

Ollama 的官方 FAQ 记录了并行处理和队列控制,包括 OLLAMA_NUM_PARALLEL。提高并发量可能会增加内存需求,因为更多请求会将上下文保留在内存中。因此,合理的问题不是“OLLama 能否为并发用户提供服务?”,而是“在我们的模型和上下文长度下,排队时间或内存压力从何处开始变得不可接受?”

对于两种系统,至少应报告首个令牌时间、每秒输出令牌数、p95 和 p99 端到端延迟、排队时间、失败请求数以及 GPU 内存使用量。单一的平均每秒令牌数可能掩盖首个响应严重延迟,或在突发流量下不断增长的队列。

API 兼容性很有用,但应验证确切功能

两个项目都记录了 OpenAI 兼容路径。这可以减少客户端改动,但兼容性并不意味着针对每个模型或端点的行为完全相同。请检查您使用的确切操作:聊天补全、流式传输、工具调用、结构化输出、嵌入、音频或多模态输入。然后针对将要部署的模型和服务器版本运行契约测试。

对于 Ollama,官方文档描述了 OpenAI API 的子集。对于 vLLM,该服务器支持多个 OpenAI 风格端点,其适用性取决于模型类型和配置。不要仅根据基础 URL 承诺完全即插即用的兼容性。请使用您自己的 SDK 验证请求字段、响应结构、错误处理、流式传输终止和令牌计数。

一种实用的迁移测试方法是:通过相同的客户端测试框架向两个后端发送一组固定的真实提示词,捕获完整响应和错误代码,并在切换流量前审查所有差异。尽可能保持模型权重、生成设置和提示词模板相似。不同的模型或量化格式会使简单的服务器对服务器性能比较失效。

部署:先选择工作负载,再选择工具

本地开发或小型内部工具。当开发者需要一种低摩擦的方式来拉取模型并在本地调用它时,请从 Ollama 开始。确认模型适配该机器,并确认并发用户不会将响应迅速的原型变成队列。没有身份验证和网络边界保护时,请勿将本地服务暴露到互联网。

一个具有持续 GPU 需求的稳定生产模型。 请在实际的加速器、检查点、上下文长度和预期请求组合上对 vLLM 进行基准测试。根据峰值并发上下文数量以及平均 token 量来规划部署规模。测试冷启动、模型加载、滚动替换、GPU 故障,以及请求超过容量时的行为。服务引擎只是生产就绪性的一部分。

混合的开发与生产工作流。 使用 Ollama 进行原型开发,并在后续使用 vLLM 为选定模型提供服务是合理的。将应用程序契约与服务引擎分离,并预留时间重新测试行为。在本地运行正常的模型,换到另一个引擎时可能需要不同的检查点格式、上下文配置或工具调用模板。

需求波动或模型频繁变化。 计算运行专用 GPU 容量是否完全合理。如果利用率较低或模型经常变化,托管模型 API 可能更简单。Flatkey 当前的产品是使用一个密钥和用量记录的统一模型与工具 API;它是运行推理服务器的替代方案,并非声称该网站会为你租用 Ollama 或 vLLM GPU 实例。有关这一决策,请参阅 Flatkey 文档及其GPU 云与 模型 API 指南。

如何公平地对 vLLM 和 Ollama 进行基准测试

尽可能使用同一模型系列和等效的检查点。记录模型修订版本、权重格式、量化方式、GPU 型号和数量、驱动程序/运行时版本、上下文限制以及服务器版本。如果这些不同,请将比较描述为两种部署配置,而不是纯粹的引擎基准测试。

  1. 构建具有代表性的请求集。 包含短提示词和长提示词、真实的输出长度、流式和非流式调用,以及采用每种形式的请求百分比。
  2. 运行预热后的基线测试。 保持模型驻留,并测量单用户延迟。这可以帮助你判断性能变慢是由模型加载造成,还是由并发服务造成。
  3. 逐步提高并发量。 对于每一步,记录每秒完成的请求数、每秒输入和输出 token 数、首 token 时间、p95/p99 延迟、队列深度、失败率和 GPU 内存。
  4. 测试突发流量,而不仅仅是稳态。 在简短的平均吞吐量测试中,缓慢排空的队列看起来可能没有问题,但真实用户可能等待过久。
  5. 纳入应用程序路径。 在最终测试中加入身份验证、网络跳数、重试以及任何网关。仅引擎基准测试无法衡量用户可感知的延迟。
  6. 每次只更改一个设置后重复测试。 如果更改上下文长度、量化方式、并行请求数或 vLLM 调度器设置,请重新运行相同的工作负载,并保留旧结果以供比较。

不要将公开的“快 X 倍”数字直接复制到采购模型中。公开基准测试可以揭示有用的假设,但其硬件、模型、精度、批处理和提示词分布可能与你的情况不匹配。最佳结果是在你实际能够购买或运营的容量上,同时满足延迟和错误预算的最快配置。

成本:包括空闲时间和工程时间

自托管成本估算应从总 GPU 小时数开始,而不是峰值每秒 token 数。加上存储、数据传输、负载均衡、监控、支持,以及保持服务完成补丁更新和可恢复所需的时间。应按被接受的有效输出来除,而不是按每个生成的 token:重试、失败的生成和空闲时间仍会消耗容量。

一个简单的月度模型是:

每月自托管成本 = GPU 小时数 × 每小时 GPU 费率 + 存储 + 网络 + 运维。

然后使用测得的工作负载,计算每个被接受请求或每百万个被接受 token 的成本。运行低利用率场景和突发场景。由于工作流简单,Ollama 在小规模运行时可能更便宜;对于某些工作负载,vLLM 可以从繁忙的 GPU 中产出更多有效工作。两种结论都不能仅从工具名称推导出来。

如果比较实际上是关于GPU 云与 API,请单独评估。模型 API 可以按成功使用量计费,而专用 GPU 在空闲时也会产生成本;当需求持续且模型保持稳定时,自托管仍可能更划算。Flatkey 成本 指南提供了一个用于压力测试这些假设的框架。

常见问题

vLLM 是否总是比 Ollama 更快?

不是。vLLM 专为高吞吐量服务而设计,但实际测得的速度取决于工作负载、模型、配置和硬件。请在你关心的并发量和延迟目标下测试两者。单个提示词、不同的量化方式或不同的 GPU 都不是公平的比较。

Ollama 能处理多个 请求吗?

可以。Ollama 记录了可配置的并行请求和队列行为。更多并发上下文可能需要更多内存,因此只能在目标主机上测量队列时间、GPU 内存和错误率后再提高该设置。

两者都支持 OpenAI API 吗?

两者都记录了与 OpenAI 兼容的接口,但支持的子集和特定模型的行为有所不同。在迁移流量之前,请针对应用程序使用的端点和功能运行请求与响应契约测试。

我应该为 AI 产品选择哪一个?

使用 Ollama 让模型运行起来,并评估小型或内部工作负载。当专用 GPU 服务是核心生产路径且你需要调优并发推理时,评估 vLLM。如果模型或流量模式经常变化,请在确定 GPU 容量之前,将这两种自托管方案与托管模型 API 进行比较。

来源与延伸阅读