文章介绍在 8GB 树莓派 5 上通过 Ollama 运行量化模型,并覆盖 ARM 硬件选型、本地存储及实际适用范围。方案主打零 API 费用与数据不出本地网络。
过去三个月里,我一直在 Raspberry Pi 5 上运行一个 AI Agent。它能写代码、浏览网页、管理我的电子邮件,甚至在上周把一个生产级 SaaS 部署到了 DigitalOcean Droplet。整套系统的 API 费用为零,因为所有推理都在 Pi 本地运行。
本指南将完整介绍我的具体配置方式、哪些方案有效、哪些无效,以及哪些模型真正在 RAM 有限的 ARM 硬件上运行良好。
我的 Agent 项目每个月会消耗 40~60 美元的 OpenAI API 调用费用。每一次对话、每一次代码审查、每一次“帮我总结一下”,都会产生按量计费的 API 调用。更糟糕的是,每当 Agent 读取我的邮件或处理我的文件时,我都在把个人数据发送给第三方。
Pi 5 改变了这笔账的算法。它是一台售价 80 美元的计算机,运行量化语言模型的速度已经足以支持实时交互。虽然没有 GPT-4 那么快,但用作编程助手、摘要工具或自动化工作流 Agent 已经足够。而且,它在隐私方面的优势非常实在:任何数据都不会离开你的网络。
下面是我实际使用的硬件:
NVMe SSD 不是可选项。我尝试过从 SanDisk Extreme SD 卡运行模型,体验非常痛苦:一个 4GB 模型需要 30 多秒才能加载,而从 NVMe 加载只需要 3 秒。持续切换模型大约两个月后,那张 SD 卡也损坏了。NVMe 的速度快得多,也不会轻易坏掉。
如果你使用的是 PCIe HAT,而不是 NVMe Base,效果也差不多——只要确保不要从 SD 卡存储中加载模型即可。
在 ARM Linux 上运行 LLM,Ollama 基本是唯一成熟的选择。它能够处理 GGUF 量化、上下文管理,并且开箱即用地提供兼容 OpenAI 的 API。
curl -fsSL https://ollama.com/install.sh | sh
整个安装过程就这么简单。Ollama 会注册为 systemd 服务并自动启动。验证它是否正在运行:
ollama --version systemctl status ollama
你应该会看到类似 ollama version 0.5.x 的输出,并且服务处于 active 状态。如果没有,请检查 /var/log/ollama.log。常见问题包括缺少 CA 证书(可以使用 apt install ca-certificates 修复),或者模型加载器没有足够的 RAM。
这是大多数 Pi 指南容易出错的地方。它们推荐的模型听起来很厉害,但在 8GB RAM 上会因为 OOM 被系统杀死。下面是我在 8GB 版本 Pi 5 上实际测试过的结果:
| 模型 | 磁盘占用 | 空闲时 RAM 占用 | Tokens/sec | 我的真实评价 |
|---|---|---|---|---|
| Qwen2.5-0.5B | 400MB | ~1GB | 45+ | 对大多数任务来说太笨,但适合分类任务。 |
| Llama 3.2-1B | 1.3GB | ~2.5GB | 25-30 | 可以完成简短摘要,但处理代码时很容易崩。 |
| Llama 3.2-3B | 2.0GB | ~4GB | 12-15 | 最平衡的选择,适合用作通用助手。 |
| Phi-3.5-mini | 2.4GB | ~4.5GB | 10-12 | 以它的体量来说,推理能力强得出人意料。 |
| Llama 3.1-8B | 4.7GB | ~7GB | 4-6 | 已经接近极限。可以运行,但资源非常紧张——需要关闭其他所有应用。 |
我日常使用的是 llama3.2:3b。它在 Pi 5 上实现了速度与质量之间的最佳平衡。如果专门用于生成代码,qwen2.5-coder:3b 会更好——它对 Python 和 JavaScript 的理解足以编写能够正常工作的函数。
如果你使用的是 4GB 版本的 Pi,请选择 llama3.2:1b 或 qwen2.5:0.5b。从技术上说,3B 模型也能加载,但几乎不会剩下多少可用于上下文窗口的内存。
ollama pull llama3.2:3b
第一次拉取模型时,通过 NVMe 需要几分钟。如果用的是 SD 卡,那就去喝杯咖啡吧。
ollama run llama3.2:3b "Write a Python function to check if a domain is available using RDAP"
几秒钟后,你应该就能得到响应。如果速度很慢,请检查散热器——Pi 5 在达到 80°C 时会触发热降频,而推理会产生大量热量。
Ollama 默认会在 11434 端口暴露一个兼容 OpenAI 的 API,但它只监听 localhost。要让网络中的其他设备也能使用它,请执行:
sudo systemctl edit ollama
[Service] Environment="OLLAMA_HOST=0.0.0.0:11434"
sudo systemctl restart ollama
现在,你可以从任何设备调用它:
curl http://your-pi-ip:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "llama3.2:3b", "messages": [{"role": "user", "content": "Hello"}] }'
这个 API 与 OpenAI 兼容,因此任何支持 OpenAI API 的工具,都可以通过修改 base URL 指向你的 Pi。我让自己的 Agent 框架 Hermes Agent 使用这个本地端点,效果和调用 OpenAI 完全一样——区别在于它免费,而且数据私密。
这才是事情真正有意思的地方。本地 LLM 用来聊天当然不错,但它真正的价值在于能够驱动自主 Agent,让 Agent 使用工具、浏览网页并完成多步骤任务。
我在 Pi 上运行 Hermes Agent,并将 Ollama 用作后端。这个 Agent 可以访问终端、文件系统、网页浏览器和电子邮件。它能够:
关键在于:只要为小模型提供优秀的工具和明确的约束,它们也能完成 Agent 工作。3B 模型或许写不了一部长篇小说,但只要每一步都有清晰定义,它完全可以执行一份包含 5 个步骤的部署清单。
当你的本地 Agent 已经可以完成有用的工作后,下一步就是为它提供面向互联网的基础设施。我的做法如下:
我创建了一个 DigitalOcean Droplet(每月 6 美元,1 个 vCPU、1GB RAM),并授予 Agent SSH 访问权限。之后,Agent 完成了以下工作:
从“创建 Droplet”到“HTTPS 网站正式上线”,总共耗时约 90 分钟。所有工作都是 Agent 完成的——我只是把 Stripe API keys 交给它,然后让它开始执行。
重点并不在于这件事听起来有多么令人印象深刻。真正重要的是:只要提供合适的工具,一个运行在 80 美元计算机上的 3B 模型,也能编排一次真正的生产部署。对于这类工作,你并不需要 GPT-4。
下面是一些适合长期运行的实用建议:
崩溃后自动重启: Ollama 以 systemd 服务运行,因此会自动重启。但如果你还在上层运行 Agent 框架,也要确保它被封装为 systemd 服务,并配置 Restart=always。
日志轮转: Ollama 和你的 Agent 会生成大量日志。请提前配置 logrotate,以免磁盘空间被占满:
sudo tee /etc/logrotate.d/ollama << 'EOF' /var/log/ollama.log { daily rotate 7 compress missingok notifempty } EOF
模型管理: 模型体积很大。一个 3B 模型就有 2GB,而且你会逐渐积累越来越多的模型。及时清理不再使用的旧模型:
ollama list ollama rm qwen2.5:0.5b # remove models you don't use
监控: 我使用一个简单的 cron job,每 5 分钟 ping 一次 Ollama API,如果服务宕机就给我发邮件。是不是有点过度?也许吧。但 Ollama 确实曾在一次异常的模型拉取后崩溃,而直到 6 小时后才发现问题,体验更加糟糕。
我得坦诚说明它的局限:
上下文窗口: 3B 模型会占用 4GB RAM,剩余资源大约可以支持 8K tokens 的上下文。这足以容纳一段对话或单个代码文件,但无法装下整个代码库。如果需要更长的上下文,请使用 1B 模型——它可以容纳 16K 以上的 tokens。
多用户: 不要尝试同时为多个用户提供服务。Pi 上的 Ollama 一次只能处理一个请求。第二个请求必须排队,直到第一个请求完成。
与云端相比的速度: 12~15 tokens/sec 大约只有 GPT-4 速度的十分之一。对于交互式聊天来说,这个速度没问题——感觉就像一个打字很快的人。但对于批处理任务,例如总结 100 份文档,它会比较慢,不过胜在价格合适。
热量: 在持续推理期间,即使安装了主动散热器,Pi 5 也会达到 75~80°C。如果没有散热器,它会降频到 1GHz,token 生成速度也会下降到每秒 3~4 个。散热器不是可选项。
功耗: Pi 5 空闲时的功耗约为 5W,推理时约为 8~12W。按照平均电价计算,每月电费大约为 1 美元。相比之下,API 每月需要花费 40~60 美元。
下面是我记录了一个月的真实成本明细:
| 指标 | 云端 API(GPT-4) | 本地 Pi 5 |
|---|---|---|
| 每月成本 | 40~60 美元 | 1 美元(电费) |
| Tokens/sec | 40~60 | 12~15 |
| 隐私 | 数据会发送给 OpenAI | 数据不会离开本地网络 |
| 可用性 | 取决于 API | 取决于你的 Pi |
| 配置时间 | 5 分钟 | 一个下午 |
| 模型质量 | 优秀 | 良好(3B)到基础(1B) |
质量差距是真实存在的。不要假装 3B 模型能与 GPT-4 相提并论——它确实不能。但在 Agent 工作流中,如果模型只需要做一些简单决策,例如“我是否应该运行这条命令”或者“接下来应该编辑哪个文件”,3B 模型已经足够。
据我估计,我的 Agent 有 70% 的任务无法从更聪明的模型中获得明显收益。剩下的 30%,我仍然会发送到云端处理。
如果重新开始,我会彻底跳过 4GB 版本的 Pi。8GB 版本值得多花那 20 美元——当你需要同时运行操作系统、模型服务器和 Agent 框架时,额外的内存余量非常重要。
我也会从第一天就配好 NVMe,而不是试图让 SD 卡勉强工作。在切换到 NVMe 之前,我因为 SD 卡性能问题浪费了整整两周。
另外,我会先从 1B 模型开始,而不是 3B。3B 的确更好,但 1B 加载速度更快,能够为 Agent 的工作内存留下更多 RAM,而且已经足以验证整条工作流。等其他部分全部正常运行后,再升级模型也不迟。
在通用硬件上运行本地 AI 的体验正在迅速改善。Pi 5 是一个分水岭——它是目前能够以实用速度运行有用 LLM 的最便宜计算机。Pi 6 无论何时发布,性能很可能都会翻倍。
如果你正在为 API 访问付费,而且构建的产品并不需要 GPT-4 级别的智能,不妨先尝试这个方案。整个配置过程只需要一个下午,硬件成本还不到两个月的 API 费用,而且整套技术栈都掌握在你自己手中。
基于这套配置构建的 Agent,现在已经能够运行我的域名可用性检查器 availfind.com、撰写并提交文章、管理电子邮件,而且还在慢慢学会完成更多工作。它没有 GPT-4 那么聪明,但它属于我——它运行在我桌上的一个盒子里,几乎不需要运营成本,也不会把我的数据发送到任何地方。
这比节省几个 API tokens 更有价值。随着模型不断进步、硬件速度不断提升,本地与云端之间的差距只会越来越小。现在开始,意味着你正在积累能够随时间持续产生复利的技能和基础设施。
如果你的抽屉里正好放着一台 Pi 5,那就去安装 Ollama 吧。十分钟后,你就能和本地 LLM 对话了。
对于后续操作,你可以考虑屏蔽此人和/或举报滥用行为。