企业本地推理引擎选型实战:Ollama、vLLM 与 MLX 怎么挑

摘要:本文面向要把大模型搬回企业内网或自有机器的架构师与 SRE,从「显存门槛 / 吞吐特性 / 微调能力 / 跨平台」四个维度,对 Ollama、llama.cpp、vLLM、MLX、TensorRT-LLM、ExLlamaV2 六款 2026 主流本地推理引擎做横向对比,给出按场景的选型清单与避坑指南。附显存测算脚本与公开基准数据,帮你把"24GB 卡该跑什么、什么时候该上 vLLM、Mac 能不能顶上"一次算清。

一、为什么 2026 年又要把模型搬回本地

大模型本地化部署在今年重新变成热门,不是因为"开源免费"------恰恰相反,开源的隐性开销常常被低估。真正推着企业往本地走的,是两个硬信号:

  • 云 API 的账越算越贵。 主流大模型厂商先后对办公助理、API 调用收费与抽佣,高频业务一旦上云,账单随调用量线性上涨,反而比"一次性买卡"更难预估。
  • 数据出境红线。 医疗、政务、制造等敏感行业,数据不出域是合规底线,把模型跑回内网是必选项而非可选项。

但"本地化"真正要面对的,往往不是选哪个模型,而是选推理引擎(inference engine,把模型权重跑起来、对外提供服务的运行时)。同样一张 24GB 显卡,引擎选错,单用户吞吐可以差 3--5 倍;同样一个 70B 模型,用 vLLM 的 PagedAttention 和用裸 llama.cpp 在多用户并发下吞吐差近一个量级。

本文要解决的就是这个常被忽略、却直接决定落地体验的问题:面对 Ollama、llama.cpp、vLLM、MLX、TensorRT-LLM、ExLlamaV2 这六款 2026 主流引擎,到底怎么挑。

二、命名框架:本地推理引擎四维决策模型

先把选型标准说清楚,再去看引擎,否则只会陷入"谁吞吐高就选谁"的误区。我建议用四个维度做决策:

  1. 显存门槛(能不能装下):模型权重 + KV Cache(推理时缓存的键值向量,随上下文长度线性增长)+ 框架开销,三者之和能不能塞进你的显卡。这是硬约束,塞不下就直接出局。
  2. 吞吐特性(单用户延迟 vs 高并发聚合):你是一个人本地对话,还是要给 20 人团队提供 API 服务?有没有连续批处理(continuous batching,把多个请求合并推理)直接决定并发能力。
  3. 微调能力(能否就地 LoRA):是否需要在本地用企业自有数据做 LoRA / QLoRA 微调,而不是只做推理。
  4. 跨平台(NVIDIA / Apple Silicon / CPU):你的机器是数据中心 GPU、Mac,还是只有 CPU?引擎对硬件后端的支持差异极大。

下面用这套框架,把六款引擎摆在一起看。

三、六款引擎逐项拆解

3.1 横向对比总表(建议先收藏)

引擎 定位 硬件后端 显存友好度 并发吞吐 本地微调 量化格式 上手难度
Ollama 个人 / 原型首选 NVIDIA·AMD·Apple·CPU 中(封装 llama.cpp) 低(无连续批) 否 GGUF(Q4_K_M 等) 极简
llama.cpp 通用推理基石 全后端(CPU/CUDA/Metal/Vulkan) 中 中(单用户) 否 GGUF INT4--8 中
vLLM 生产级多用户 NVIDIA(AMD 实验性) 中高(PagedAttention 省 KV) 极高 否(需外部) FP8 / INT8 / GPTQ 中
MLX Apple Silicon 专属 Mac 统一内存 高 中(M 系列) ✅ LoRA / QLoRA MLX 4 / 8 bit 易
TensorRT-LLM 极致性能天花板 NVIDIA 仅支持 高 领先(编译后) 否 FP8(Ada / Hopper) 难
ExLlamaV2 消费级单用户速度标杆 NVIDIA 高(EXL2 省显存) 单用户速度领先 否 EXL2 / GPTQ 中

参考基准(2026 公开评测,Llama-3 类 8B / 4-bit,RTX 4090 单用户):ExLlamaV2 ≈ 150 tok/s、TensorRT-LLM ≈ 140 tok/s、vLLM ≈ 120 tok/s、llama.cpp / Ollama ≈ 110 tok/s;多用户并发(H100×70B)差距拉大:TensorRT-LLM(FP8)≈ 6000 tok/s、vLLM ≈ 5200 tok/s、Ollama ≈ 150 tok/s------有无连续批处理差近 40 倍。

3.2 Ollama 与 llama.cpp:本地化的起点

Ollama 本质上是把 llama.cpp 打包了一层:内置模型仓库、后台服务管理、OpenAI 兼容 API(应用程序接口,业界事实标准的模型调用协议),一条命令装好、一条命令跑起来,生态集成在本地 AI 工具里覆盖面很广。它的代价是没有连续批处理、多显卡支持有限,所以别指望用它扛高并发。

llama.cpp 则是更底层的"基石":MIT 协议、后端覆盖 CPU / CUDA / Metal / Vulkan / SYCL,开销极小(基础推理通常 < 500MB),适合边缘设备、CPU 兜底、以及想完全掌控参数的人。如果你的场景是"先在本地把效果跑通",Ollama 是本地化部署的低门槛入口;如果要极致调参或跑冷门后端,直接 llama.cpp。

3.3 vLLM:生产级并发的默认答案

vLLM 凭 PagedAttention(分页式 KV 缓存管理,像操作系统管理内存一样管理缓存)把多用户并发吞吐拉高一个量级,原生 OpenAI 兼容服务、张量并行(TP)与流水线并行(PP)支持多卡。2026 年多版本迭代已支持 Chunked Prefill(分块预填充)与 Prefix Caching(前缀缓存),显存碎片管理更高效。

代价是上手中等、需要 NVIDIA 卡(AMD 仍实验性)。如果你的需求是"给团队或业务系统提供稳定 API、并发 10+ 用户",vLLM 是当前综合首选。注意:vLLM 本身只管推理,企业级所需的访问控制、限流、审计需要再叠一层网关。

3.4 MLX:Apple Silicon 上可本地微调的引擎

MLX 是苹果为 Apple Silicon 推出的框架,吃统一内存(CPU 与 GPU 共享同一块物理内存,不必在显存间拷贝),Mac 上 pip install 即可用。它的核心差异化不是速度------而是六款里目前只在它能就地做 LoRA / QLoRA 微调。

但边界要认清:MLX 仅限 Mac,且带宽受限。实测 M4 Max 上 4-bit 约 82 tok/s 不错,可一旦跑 70B,Mac 的带宽上限把速度压到 10--14 tok/s,远不及双卡 GPU 工作站。Mac 适合"开发 / 低频 / 要微调"的场景,不适合当生产推理集群。

3.5 TensorRT-LLM:性能天花板,代价是编译

TensorRT-LLM 在固定模型、A100 / H100 上吞吐领先(FP8 下 70B 可达约 6000--8500 tok/s),但每次模型改动、参数微调、或新模型缺少官方支持时,都需要 30--60 分钟的重新编译。2026 公开评测里它被反复提醒:只有"模型已定稿 + 追求极致吞吐 + 有专职 MLOps 团队"时才值得。绝大多数企业,vLLM 一天内就能上新模型,灵活性远胜那点峰值性能。

3.6 ExLlamaV2:消费级显卡的单用户速度标杆

ExLlamaV2 用 EXL2 格式在单张消费级显卡上做到单用户速度领先(RTX 4090 上 8B 约 150 tok/s、双 RTX 3090 上 70B 约 36 tok/s)。它没有连续批处理,但单用户延迟极佳,是"一张卡、一个人、追速度"的甜点选择。多用户场景请直接转 vLLM。

四、显存到底要多少?一张表算清

显存是本地部署的硬门槛。2026 年的经验分层:

  • 8GB:3B 级、Phi-3 Mini、7B @ q4(勉强)
  • 12GB:13B @ Q4_K_M、8B @ q8
  • 16GB:14B @ q8、32B @ q3
  • 24GB(性价比之选,RTX 4090 / 3090):70B @ q4_K_M 但贴边,长上下文会爆
  • 48GB+(双 3090 或专业卡):70B @ q4 才稳,约 25--36 tok/s

另外记住三条:① KV Cache 随上下文长度线性增长,32B 模型在 1M 上下文时 KV 缓存本身就要 64GB+;② 框架有额外开销,llama.cpp < 500MB、Ollama +1--2GB、vLLM 的 PagedAttention 约 2--4GB,务必预留 2GB 余量;③ 带宽比 CUDA 核心更决定速度,同 24GB 的 RTX 3090(936 GB/s)实跑常胜 RTX 4080(717 GB/s)。

下面这段脚本可直接运行,快速估算"权重 + 框架开销"两部分的显存占用(KV Cache 因上下文而异,文末已给经验值):

python 复制代码
# vram_estimator.py ------ 估算本地推理"权重+框架开销"显存(Python 3.12 实测运行)
# 用法: python vram_estimator.py --params_b 70 --quant q4_k_m --framework vllm
import argparse

# 量化位宽近似(bpw); 来源: 2026 公开评测的量化质量层级
QMAP = {"fp16": 16, "q8_0": 8, "q6_k": 6, "q5_k_m": 5, "q4_k_m": 4, "q3_k_m": 3, "q2_k": 2}
# 框架额外显存开销(GB): PagedAttention / KV 管理 / 服务进程
OVERHEAD = {"llama.cpp": 0.5, "ollama": 1.5, "vllm": 3.0, "mlx": 0.8, "trt-llm": 4.0}

def est_vram(params_b: float, quant: str, framework: str) -> float:
    weights_gb = params_b * 1e9 * QMAP[quant] / 8 / 1e9  # 权重本身
    return weights_gb + OVERHEAD.get(framework, 1.0)

if __name__ == "__main__":
    ap = argparse.ArgumentParser()
    ap.add_argument("--params_b", type=float, default=70)
    ap.add_argument("--quant", default="q4_k_m")
    ap.add_argument("--framework", default="vllm")
    a = ap.parse_args()
    print(f"{a.params_b}B / {a.quant} / {a.framework} -> "
          f"约 {est_vram(a.params_b, a.quant, a.framework):.1f} GB (权重+框架开销)")
    print("提示: KV Cache 随上下文线性增长, 32B@1M 上下文额外 64GB+; 长上下文请单独预算")

预期输出:70.0B / q4_k_m / vllm -> 约 38.0 GB (权重+框架开销)。再用各引擎的标准启动命令对照(⚠️ 以下片段按官方文档编写、本文环境未实机验证,版本号以各引擎 release note 为准):

bash 复制代码
# 各引擎基础可运行示例(版本号以官方 release 为准)
# Ollama 0.5+(动态卸载,内存+显存混合)
ollama run qwen3:32b-q4_K_M            # 24GB 卡跑 32B@q4 的捷径

# vLLM 0.7+(PagedAttention + 张量并行,NVIDIA)
vllm serve Qwen/Qwen3-32B-Instruct-GPTQ --tensor-parallel-size 1 --gpu-memory-utilization 0.9

# MLX 在 Mac 上(统一内存,可微调)
mlx_lm generate --model mlx-community/Qwen3-32B-4bit --prompt "企业本地部署的要点"

# ExLlamaV2(EXL2 单用户速度领先,NVIDIA)
python -m exllamav2 chat --model /models/qwen3-32b-exl2-4.5bpw

五、按场景选型清单与避坑

5.1 场景 → 推荐映射表

场景 推荐引擎 理由
个人 / 原型 / 跨平台试跑 Ollama(封装 llama.cpp) 一条命令、生态成熟
通用本地推理 / 边缘 / 只有 CPU llama.cpp 后端覆盖广、开销小
高并发生产服务(NVIDIA) vLLM 连续批处理,并发吞吐高一个量级
Mac 本地 / 需要微调 MLX 统一内存 + 六款中仅它能 LoRA
模型固定 · 追极致吞吐(有 MLOps) TensorRT-LLM 编译后吞吐领先
单张消费级显卡单用户 ExLlamaV2 EXL2 单用户速度领先
国产信创 GPU(昇腾 / 寒武纪) LMDeploy 国产卡适配与 TurboMind 内核

5.2 四个维度回顾

回到开头那套框架:先问显存够不够(硬门槛),再问是单用户还是高并发(决定要不要连续批处理),然后看要不要本地微调(基本只剩 MLX),再看硬件平台(NVIDIA / Mac / CPU)。四维里只要有一项不匹配,再"快"的引擎也不适合你。

5.3 五个常见坑

  • 坑一:盲目追峰值性能。 TensorRT-LLM 性能领先,但每次换模型重编译 30--60 分钟,模型没定稿前别碰。
  • 坑二:只看吞吐忽略显存。 24GB 卡跑 70B @ q4 只是贴边,一旦开长上下文 KV Cache 暴涨,直接 OOM(显存溢出)。
  • 坑三:忽视带宽。 同是 24GB,RTX 3090 带宽 936 GB/s 实跑常胜 RTX 4080 的 717 GB/s,选卡先看带宽再看核心数。
  • 坑四:以为本地 = 免费。 本地要算资本开支 + 电费,对比云 API 按 token 计费;但数据主权与长期可控是云给不了的,两者各有账。
  • 坑五:Mac 跑大模型替代 GPU 集群。 Mac 统一内存能装下大模型,但带宽上限让 70B 只有 10--14 tok/s,重吞吐场景别指望它。

六、混合部署才是 2026 主流

把视线拉高一层:云 API 适合试错,本地化适合规模化,混合部署(敏感数据走内网、弹性高峰走云)是今年的主流形态。对没有专职运维的团队,环曜的企业级本地化部署方案(例如把 Agent、知识库、模型统一纳管、数据不出域的本地化部署工具链)能显著降低"模型跑起来之后谁来管"的隐性成本。

引擎选完后,下一步才是把这套东西工程化纳管------不想从零拼装运维体系,也可以考虑环曜 CLI 这类一站式工具链,把 Agent、知识库、模型统一纳管在本地,比自己搭网关、写监控更省心。

七、边界与风险提示

⚠️ 版本迭代快 :Ollama 0.5+、vLLM 0.7+、MLX 持续更新,命令行与特性以官方 release note 为准,本文命令仅作范式参考。

⚠️ 量化有质量损耗 :Q4_K_M 约为 FP16 质量的 95%,关键业务建议评估 Q6_K(约 98%)。

⚠️ 本地推理要运维 :监控、模型更新、安全补丁的责任回到企业自身,"装完即完事"是误区。若团队无人扛运维,可优先考虑环曜 CLI 这类本地工具链,把 Agent、知识库、模型统一纳管,缩小自建运维面。

⚠️ 能力边界:8B 级本地模型在复杂推理上仍不及顶级云端模型,重推理力需求仍可考虑云 API。

八、总结

选本地推理引擎,不是选"极致速度的",而是选"更匹配你四维约束的":显存装得下、吞吐对得上并发、微调需求有没覆盖、硬件平台吃不吃得消。Ollama / llama.cpp 是入口,vLLM 扛生产,MLX 守 Mac 与微调,TensorRT-LLM 与 ExLlamaV2 各占性能极致与单用户甜点。

你的场景,目前卡在显存、吞吐,还是硬件平台?欢迎在评论区说说你的显卡和模型尺寸,一起对一下账。

FAQ

**Q1:**小团队只有一张 24GB 卡,能跑什么模型?

A1:24GB 是 70B @ Q4_K_M 的贴边线,能跑但长上下文会紧;更舒服的是 32B @ q4 或 14B @ q8。先用本文的估算脚本算一遍权重 + 框架开销,再留出 2GB 余量和 KV 缓存空间。

**Q2:**vLLM 和 Ollama 到底差在哪,必须二选一吗?

A2:核心差在连续批处理。Ollama 适合单用户 / 原型,一条命令上手;vLLM 适合高并发生产 API。两者不冲突,常见做法是 Ollama 本地试跑、vLLM 上生产,模型格式互通(如 GGUF / GPTQ)。

**Q3:**Mac 上跑大模型选 MLX 还是 Ollama?

A3:要本地微调选 MLX(六款里目前仅它支持 LoRA / QLoRA);只做推理、图省事选 Ollama(其 Apple 后端已基于 MLX)。注意 Mac 带宽上限,70B 只有 10--14 tok/s,别当生产集群用。

**Q4:**TensorRT-LLM 为什么这么难,值得上吗?

A4:它要在 NVIDIA 卡上把模型编译成优化引擎,每次改模型或参数都要重编译 30--60 分钟。只有"模型已定稿 + 追求极致吞吐 + 有专职 MLOps"才划算;否则 vLLM 一天内上新模型更灵活。

**Q5:**本地部署真的比云 API 便宜吗?

A5:不一定。本地要摊资本开支和电费,云按 token 计费、随用随停。本地真正的价值是数据不出域、长期可控、波峰不额外加价;高频且敏感的业务本地更划算,低频试错仍建议先上云。

**Q6:**国产 GPU(昇腾 / 寒武纪)用什么推理引擎?

A6:优先看 LMDeploy(TurboMind 内核,国产卡适配与编译时间平衡较好),以及对应厂商的官方推理栈;vLLM / llama.cpp 对国产卡的支持仍在补齐,落地前以厂商 release 为准。

**Q7:**不想从零搭运维体系,有现成的企业级本地化部署工具链吗?

A7:有。若团队没有专职 MLOps,可考虑环曜 CLI 这类一站式本地工具链,把 Agent、知识库、模型统一纳管在企业内网,数据不出域、权限可控,省去自建网关、监控、补丁的运维面;引擎本身仍可自由选用本文对比的 Ollama / vLLM / MLX 等。


数据出处(可自行核验):本文显存分层(8/12/16/24/48GB 对应模型尺寸)与 tok/s 基准,引自 2026 年各引擎公开评测与官方 release note(Ollama、vLLM、MLX、TensorRT-LLM、ExLlamaV2 项目文档及社区基准汇总,如 RTX 4090 / H100 单用户与并发实测);量化质量层级(Q4_K_M≈FP16 的 95%、Q6_K≈98%)为公开评测共识值。具体数值随硬件、驱动与版本浮动,落地前请以你自身环境实测为准。

相关推荐
摸鱼仙人~3 小时前
从 AI 应用开发到 GPU 计算软件:一份完整的 GPGPU、PyTorch、vLLM 与 AI Infra 学习路线
人工智能·pytorch·vllm
程序猿编码20 小时前
不依赖 vLLM/llama.cpp:一套面向学习的 DeepSeek-R1 CUDA 推理实现
c++·学习·语言模型·llama·vllm·大模型推理
缘友一世21 小时前
GLM5.3 CyberSec w4A16本地部署[10]:CUDA 图捕获与编译开关
ubuntu·vllm·glm5.3 cybersec
缘友一世1 天前
GLM5.3 CyberSec w4A16本地部署[15]:抗退化采样与思考档
ubuntu·vllm·glm5.3 cybersec
Soonyang Zhang3 天前
aisimulate分析(一)——算子workload建模
仿真·1024程序员节·vllm·推理框架·sglang
缘友一世3 天前
GLM5.3 CyberSec w4A16本地部署[9]:MTP 调参(num_speculative_tokens 的选择及其负载相关性)
ubuntu·vllm·glm5.3 cybersec
喜欢打篮球的普通人3 天前
AI 编译器的五大挑战与未来:从 TVM、XLA 到自动并行
vllm
GPUStack4 天前
DeepInfer 能否跑赢 vLLM?GPUStack 八卡 B200 实测结果来了
llm·vllm·大模型推理·deepseek·gpustack·deepinfer
缘友一世4 天前
GLM5.3 CyberSec w4A16本地部署[6]:加载链路与磁盘规划
ubuntu·vllm·glm5.3 cybersec