本地大模型推理引擎横评:llama.cpp vs Ollama vs vLLM vs KoboldCpp vs MLC-LLM vs LocalAI
2026年了,大模型不再是云端的专利。8B参数的小模型已经能干翻671B的蒸馏原版,一块ARM64开发板就能7×24跑Agent——但选错推理引擎,体验天差地别。本文基于我A7Z(A733/8GB UFS)上的实测,把六大主流本地推理引擎掰开揉碎讲清楚。
一、本地推理引擎怎么选?
先说结论:没有万能引擎,只有场景匹配。
选推理引擎,本质上是在回答四个问题:
- 你的硬件是什么? x86 + A100和ARM64 + 8GB RAM,选的引擎完全不同。
- 你几个人用? 单用户本地调试和多用户API服务,架构需求天差地别。
- 你跑什么模型? GGUF量化、GPTQ/AWQ、还是编译优化?格式决定引擎。
- 你愿意折腾多少? 从”一行命令装好”到”自己编译算子”,时间成本差10倍。
这四个问题答完,基本就能锁定1-2个候选。下面逐项对比。
二、六大引擎全维度对比
2.1 基本信息一览
| 项目 | ⭐ Stars | 语言 | 许可证 | 定位 | ARM64 | GPU | 多用户 | 量化格式 |
|---|---|---|---|---|---|---|---|---|
| llama.cpp | 116,810 | C++ | MIT | 推理基石 | ✅ 优秀 | CUDA/Metal/Vulkan | 单用户 | GGUF |
| Ollama | 174,309 | Go | MIT | 傻瓜式 | ✅ | CUDA/Metal | 单用户 | GGUF |
| vLLM | 83,055 | Python | Apache | 生产服务 | ❌ | CUDA必须 | ✅ 高并发 | GPTQ/AWQ |
| KoboldCpp | 10,790 | C++ | AGPL | 增强版 | ✅ | CUDA | 单用户 | GGUF |
| MLC-LLM | 22,812 | Python | Apache | 编译部署 | ✅ | 多种 | 单用户 | 编译优化 |
| LocalAI | 46,891 | Go | MIT | API兼容 | ✅ | CUDA | 多用户 | 多种 |
2.2 功能深度对比
| 维度 | llama.cpp | Ollama | vLLM | KoboldCpp | MLC-LLM | LocalAI |
|---|---|---|---|---|---|---|
| 安装难度 | ⭐⭐ 编译 | ⭐ 一行 | ⭐⭐ pip | ⭐⭐ 下载 | ⭐⭐⭐ 编译 | ⭐⭐ Docker |
| OpenAI API兼容 | ❌ 原生无 | ✅ 内置 | ✅ 内置 | ❌ | ❌ | ✅ 核心卖点 |
| 模型管理 | 手动 | ✅ 自动 | 手动 | 手动 | 编译时绑定 | 手动 |
| 上下文长度 | 灵活 | 灵活 | ✅ PagedAttention | 灵活 | 编译时固定 | 取决后端 |
| 多模态 | ✅ LLaVA | ✅ LLaVA | ✅ 丰富 | ✅ LLaVA | ✅ | ✅ |
| 工具调用 | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ |
| WebUI | ❌ | ❌ | ❌ | ✅ 内置 | ✅ | ✅ |
2.3 性能实测参考
以Qwen2.5-7B-Q4_K_M为基准(8GB RAM ARM64环境):
| 引擎 | 首Token延迟 | 生成速度 | 内存占用 | 备注 |
|---|---|---|---|---|
| llama.cpp | ~1.2s | 12-15 tok/s | ~5.2GB | 纯C++,开销最小 |
| Ollama | ~1.5s | 10-13 tok/s | ~5.8GB | Go运行时有额外开销 |
| KoboldCpp | ~1.3s | 11-14 tok/s | ~5.4GB | 基于llama.cpp,略重 |
| MLC-LLM | ~0.8s | 15-18 tok/s | ~5.0GB | 编译优化,但需预编译 |
| LocalAI | ~1.8s | 8-11 tok/s | ~6.2GB | Go+Docker开销最大 |
| vLLM | N/A | N/A | N/A | ARM64不支持 |
⚠️ 以上数据为A7Z(A733/8GB UFS)上的实测参考值,不同模型和量化级别会有差异。vLLM在x86 + CUDA环境下吞吐量远超其他引擎,但ARM64是硬伤。
三、逐个拆解:谁适合什么场景?
🏆 llama.cpp —— ARM64边缘设备的王者
llama.cpp是整个本地推理生态的基石。Ollama的底层是它,KoboldCpp的底层也是它,LocalAI的GGUF后端还是它。你绕不开llama.cpp。
核心优势:
– ARM64支持最成熟:从Apple Silicon到瑞芯微,从A733到树莓派,llama.cpp的NEON/ARM SVE优化是所有引擎里最深的。我的A7Z上编译开NEON后,比不开快30%以上。
– 量化格式最全:Q2_K到Q8_0,还有I-quants(IQ3_M、IQ4_XS等),在有限内存里塞下更大模型。
– Metal/Vulkan支持:Mac用户用Metal加速,其他ARM设备用Vulkan,不依赖CUDA。
– 极简极轻:纯C++,无运行时依赖,交叉编译方便,适合嵌入式。
不足:
– 没有内置API服务器(需要自己写或用第三方wrapper)
– 没有模型管理,手动下载GGUF
– 单用户设计,不适合对外服务
我的选择: A7Z上长期跑的就是llama.cpp + Hermes Agent,7×24稳定运行,零API成本。具体部署方案可以看我的《AI Agent元年:你的路由器也能当Agent主机》。
🐣 Ollama —— 新手入门的第一选择
Ollama的哲学就一个字:简单。ollama run qwen2.5:7b,完事。
核心优势:
– 安装即用:一行命令装好,模型自动下载,自动选量化
– 模型生态:官方模型库覆盖主流开源模型,ollama list一目了然
– OpenAI API兼容:自带/v1/chat/completions接口,Hermes、Codex等Agent框架直接对接
– Modelfile:类似Dockerfile的模型定制方式,方便调参
不足:
– Go运行时在ARM64上有额外内存开销(约500MB-1GB)
– 单用户,并发能力弱
– 量化选项少,不如llama.cpp灵活
– 底层就是llama.cpp,性能略逊于直接用llama.cpp
适合谁: 第一次在本地跑大模型的人。装好Ollama,5分钟内就能对话,零门槛。但如果你已经会编译llama.cpp了,Ollama的便利性就不那么重要了。
🏭 vLLM —— 多用户生产环境的唯一答案
vLLM不是给你一个人用的,是给一群人同时用的。
核心优势:
– PagedAttention:核心创新,显存利用率比传统方案高2-4倍
– Continuous Batching:动态批处理,请求来了就塞,不用等凑齐
– 高并发:单卡A100能同时服务几十个用户,吞吐量碾压
– GPTQ/AWQ支持:4bit量化 + vLLM = 显存省一半,并发翻一倍
– OpenAI API兼容:直接替换OpenAI的endpoint
不足:
– CUDA必须:没有GPU就别想了,ARM64完全不支持
– 安装复杂:CUDA版本、PyTorch版本、flash-attn……环境配置是噩梦
– 不支持GGUF:只认GPTQ/AWQ/SqueezeLLM,GGUF用户绕道
– 内存开销大:光框架本身就要吃几GB
适合谁: 有GPU服务器、需要对外提供API服务的团队。个人本地玩?杀鸡用牛刀。
✍️ KoboldCpp —— 创意写作的增强利器
KoboldCpp是llama.cpp的”增强版”,专门为创意写作和角色扮演优化。
核心优势:
– 内置WebUI:开箱即用的聊天界面,不用折腾前端
– 写作专用功能:上下文查看、采样器调节、语法高亮、故事模式
– RoPE缩放:轻松扩展上下文到8K/16K,写长文不丢上下文
– ARM64支持:继承llama.cpp的ARM优化
– 一行启动:下载可执行文件,直接跑
不足:
– AGPL许可证,商业使用需注意
– 单用户,不适合多人
– 工具调用支持弱,不适合Agent场景
– 更新节奏慢于llama.cpp主线
适合谁: 用本地模型写小说、做角色扮演、做创意内容的人。KoboldCpp的WebUI和采样器调节对写作体验的提升是实打实的。
📱 MLC-LLM —— 编译部署,极致性能
MLC-LLM的思路很独特:把模型编译成机器码,运行时零开销。
核心优势:
– 编译优化:模型编译后直接跑在GPU/CPU上,没有运行时解释开销
– 跨平台:同一套编译流程,输出可以跑在手机、浏览器(WebGPU)、ARM板子上
– 首Token延迟最低:编译后的模型启动快,实测比llama.cpp快30-50%
– 浏览器运行:通过WebGPU在浏览器里跑大模型,这是独一份
不足:
– 编译门槛高:每个模型都要单独编译,换模型=重新编译
– 模型支持有限:只支持官方列出的模型,新模型要等适配
– 灵活性差:编译时固定参数(上下文长度、batch size),运行时不能改
– 社区活跃度一般:相比llama.cpp和vLLM,issue响应慢
适合谁: 需要在手机/浏览器上跑模型的开发者,或者追求极致推理速度的嵌入式场景。普通用户不太推荐——编译的门槛和时间成本太高。
🔌 LocalAI —— API兼容层,无缝替换OpenAI
LocalAI的定位很明确:做OpenAI API的本地替代品。
核心优势:
– OpenAI API全兼容:/v1/chat/completions、/v1/embeddings、/v1/audio/transcriptions……几乎全覆盖
– 多后端:GGUF(llama.cpp)、GPTQ(AutoGPTQ)、Whisper、Stable Diffusion……一个入口全搞定
– 多用户:支持并发请求,可以当小团队的内网API服务
– Docker一键部署:docker run就能跑
– ARM64支持:有ARM64镜像
不足:
– 性能开销大:Go运行时 + Docker + 多后端抽象层,内存和延迟都有损失
– 配置复杂:模型配置文件(YAML)参数多,新手容易懵
– 更新节奏不稳定:依赖多个后端项目,某个后端更新可能break
– 单请求性能不如直接用llama.cpp
适合谁: 已经在用OpenAI API、想切换到本地但不想改代码的团队。LocalAI就是那个”换底座不换接口”的方案。配合Hermes Agent的多模型路由,可以实现免费API额度低时的多模型路由和备用Key策略。
四、我的实际选择:A7Z上用llama.cpp + Hermes
说了这么多,我的实际配置是什么?
硬件: Radxa Cubie A7Z(A733 SoC / 8GB RAM / 256GB UFS),功耗不到10W,塞在弱电箱7×24跑。
推理引擎: llama.cpp,NEON优化编译,跑Qwen2.5-7B-Q4_K_M。
Agent框架: Hermes Agent,通过OpenAI兼容接口连接llama.cpp的server模式。
模型路由: 本地8B模型处理80%日常任务(分类、提取、翻译、简单写作),复杂任务fallback到云端GPT-5/Claude。
这套配置跑了半年,日均处理20-30个Agent任务,API费用趋近于零。A7Z的详细硬改和部署过程,可以看《A7Z/A733开发板介绍》。
为什么不选Ollama?因为A7Z只有8GB RAM,Ollama的Go运行时额外吃500MB-1GB,在内存紧张的ARM64设备上这是不可接受的。llama.cpp纯C++,内存开销最小,每一MB都给模型。
为什么不选vLLM?A7Z没有CUDA,vLLM根本跑不了。
为什么不选LocalAI?Docker + Go运行时的开销在8GB RAM的ARM64上太重了,实测比llama.cpp多占1.5GB,生成速度慢30%。
结论:在内存受限的ARM64设备上,llama.cpp是唯一合理的选择。
五、省钱路线图:从零到本地Agent
最后,给一条清晰的省钱路线,从”全靠API”到”80%本地 + 20%云端”:
第一阶段:全靠API(月费 ¥50-200)
- 用Hermes Agent + 免费API额度起步
- 参考多模型路由和备用Key配置
- 关键:多Key轮换 + fallback,保证Agent不中断
第二阶段:本地+云端混合(月费 ¥10-50)
- 买一块ARM64板子(A7Z约¥400,树莓派5约¥500)
- 编译llama.cpp,跑7B-Q4模型
- 简单任务走本地,复杂任务走云端
- 这一步就能省掉80%的API费用
第三阶段:云边端三层架构(月费 ¥0-10)
- 边缘端:A7Z跑8B模型,处理日常Agent任务
- 端侧:路由器跑3B模型,做轻量分类和监控
- 云端:只在需要时调用,按量付费
- 参考三层架构实战方案
省钱核心逻辑
| 任务类型 | 本地模型能力 | 云端必要性 | 建议路由 |
|---|---|---|---|
| 文本分类/提取 | ✅ 完全胜任 | ❌ | 本地8B |
| 翻译/摘要 | ✅ 基本胜任 | ❌ | 本地8B |
| 简单代码生成 | ✅ 小脚本OK | ⚠️ 复杂逻辑 | 本地优先 |
| 长文写作 | ⚠️ 需要引导 | ✅ 深度内容 | 云端 |
| 复杂推理/数学 | ❌ | ✅ | 云端 |
| 工具调用/Agent | ✅ 简单链OK | ⚠️ 多步复杂 | 本地优先+云端兜底 |
一句话总结:本地模型免费的是token,不免费的是硬件和折腾时间。但跑起来之后,省下的API费用远超硬件投入。
六、快速选型决策树
你有GPU吗?
├── 是 → 需要多用户并发吗?
│ ├── 是 → vLLM
│ └── 否 → Ollama(图省事)或 llama.cpp(图性能)
└── 否 → 你的设备是ARM64吗?
├── 是 → 内存 ≥ 8GB?
│ ├── 是 → llama.cpp(最佳性能)或 KoboldCpp(要WebUI)
│ └── 否 → llama.cpp + Q2量化3B模型
├── 需要浏览器/手机跑?→ MLC-LLM
└── 需要OpenAI API兼容?→ LocalAI
by 数码罗记·godsun.pro
本文基于A7Z(A733/8GB UFS)实测数据整理,转载请注明出处。