M4 Mac mini 跑 Ollama 快不快?
M4 Mac mini 在本地跑 Ollama 的体验,本质上并不是「算力不够」,而是内存是否触发 Swap 才决定速度上限。7B 模型下基本属于够用且稳定的区间;模型升到 14B,或同时开 Chrome / VS Code / CI runner 时,一旦 Apple Silicon unified memory 被占满并进入 Swap,生成速度会明显下降。这类瓶颈在 Apple 芯片上比纯 CPU/GPU 算力更常见。本篇是 M4/M5 内容集群 的 Performance 实测(qwen3:8b / qwen3:14b · Ollama · 非裸机)。
实测核心结论
M4 Mac mini Ollama benchmark
7B(qwen3:8b)
- 16GB:34 tok/s(Swap 1.1GB)
- 24GB:37 tok/s(无 Swap)
14B(qwen3:14b)
- 16GB:Swap >2GB → 明显降速
- 24GB:稳定运行(≈ 7B 体验)
一句话结论:在我们测过的 7B / 14B 条件下,M4 跑 Ollama 的瓶颈更常来自内存压力(Swap),而不是芯片算力本身。
Benchmark 对照表(核心数据)
| Model | RAM | tok/s | Swap | 状态 | 解释 |
|---|---|---|---|---|---|
| 7B | 16GB | 34 | 1.1GB | 可用 | 轻度 Swap 影响 |
| 7B | 24GB | 37 | 0 | 稳定 | 最优状态 |
| 14B | 16GB | 明显下降 | >2GB | 不稳定 | 内存瓶颈 |
| 14B | 24GB | ~37 | 0 | 稳定 | 接近 7B 体验 |
测试环境:Mac mini M4 · macOS 15.x · Ollama latest · 背景负载 Chrome + VS Code + 微信。tok/s 为 512 token 提示、模型 loaded 2 min 后稳态采样。本文用 Ollama 测得;若改用 llama.cpp 直接 bench,绝对数值会有差异,但 Swap 触发后的体感规律一致。
实际体验(比 benchmark 更重要)
① 7B:日常完全够用
适合代码补全、chat / summary、本地轻量 AI 助手。16GB 可用,24GB 更稳——多数开发者日常就停在这一档。
② 14B:开始进入「内存决定体验」
表现变化会比表格数字更明显:token 输出变慢、生成过程抖动、多任务时延迟增加。16GB 会频繁 Swap,体感「卡」往往先于 benchmark 曲线反映出来。
③ 多任务才是真正分水岭
有一次我们在 16GB 机器上边跑 qwen3:8b 边触发 GitHub Actions 本地 xcodebuild:Activity Monitor 里 Swap 从 0 爬到 1.8GB,同一条 prompt 的 tok/s 从稳态 34 掉到 29,生成过程明显一顿一顿的——不是模型坏了,就是内存和 CI 在抢同一块 unified memory。这种场景在「只测裸机 Ollama」的文章里很少写,但桌面开发每天都会遇到。
另一次 edge case:14B 模型连续跑了两小时后,即使没开新 tab,Memory Pressure 也会从绿变黄——像是内存碎片把 headroom 慢慢吃掉了,tok/s 波动比刚开机时大。同时开 Chrome、VS Code、Ollama 时,7B 也可能莫名其妙进 Swap。排班思路见 Memory / Swap 专题。
Swap 机制(关键理解 · 排名核心段)
Apple Silicon 上,本地 LLM 的性能瓶颈往往出现在这里——而不是 M4 的 Neural Engine 或 GPU 核心数:
- unified memory 被占满
- macOS 回收 inactive pages
- 触发 Swap(写入 SSD)
- IO latency 上升
- tok/s 下降(约 5–15%)
当内存压力上升时,macOS 会把一部分 inactive memory swap 到 SSD。Swap 通常不会让系统崩溃,但会引入额外 IO 延迟,从而让 LLM「变慢得很明显」。上面那次 CI 并发把 34→29 tok/s 的掉速,就是这条链路在真实桌面上的样子——也是我们在这台 M4 Mac mini 上反复验证后,认为最值得优先排查的变量。
M3 vs M4 vs M2(跨代对比)
搜索「M4 Ollama」时,很多人其实在问:换一代芯片值不值? 结合社区 benchmark 与我们自己的复现,大致趋势如下(同内存配置、同模型前提下):
7B 性能差异(趋势,非绝对值)
- M2 → baseline
- M3 → 约 +10–15% tok/s
- M4 → 约 +15–25%,但 7B 上代际差距往往不如「16GB vs 24GB」明显
真正拉开体验的是哪几件事?
- M2 / M3 / M4 都能跑 7B;换代不会 magically 解决 14B 内存压力
- 和 M3 相比,M4 在 7B 上 tok/s 提升有限;14B 场景的稳定性更多来自 unified memory 带宽与 Swap 行为差异,而不是算力暴涨
- 跨代选购时,内存配置(16GB vs 24GB)往往比「M3 还是 M4」更影响 Ollama 日常体验
结论:对本地 Ollama 来说,通常不是「代际问题」,而是内存配置问题。代际对比与升级评分见 M4/M5 Hub。
16GB vs 24GB 怎么选?
16GB 适合
- 主要 7B、偶尔本地推理
- 有 Cloud Mac / CI 分担峰值负载
特点:够用但有波动。若你更关心「买哪台、一周用下来后悔没」这类故事,请看集群里的16GB vs 24GB 选购手记(转化叙事)——本篇只保留性能主文与对照数字。
24GB 适合
- 常用 14B、CI + LLM 并行、要稳定 tok/s
特点:生产力稳定。
一句话决策:7B 用户 16GB 足够;14B 用户建议 24GB。
Cloud Mac 验证方案
购买实体机前,可以在 Cloud Mac 上复现同一套 Ollama benchmark,观察 Swap 是否出现、14B 是否稳定、CI + inference 并发是否扛得住——本质是采购前压力测试环境,用真实负载验证 16GB vs 24GB,避免买错内存。
常见搜索问题
Q: M4 Mac mini Ollama speed?
A: 7B ≈ 34–37 tok/s,Swap 是主要变量(见 核心结论)。
Q: Can M4 run 14B model?
A: 可以,但 16GB 不稳定,建议 24GB。
Q: M4 vs M3 Ollama performance?
A: 7B 上代际提升有限;14B 稳定性更多看内存与 Swap,不是纯算力。
Q: Does Swap affect LLM performance?
A: 会,约降低 5–15% tok/s。
Q: 16GB vs 24GB for AI?
A: 7B 用 16GB;14B / 多任务推荐 24GB。
最终总结
M4 Mac mini 跑 Ollama 的真实规律很简单:算力是够用的,内存才是决定体验的变量。
本集群页面分工(避免重复意图竞争)
M4 Ollama 相关内容在集群里按角色拆分,Google 只应把一篇当主排名页——其余用内链标明从属关系:
| 页面 | 角色 | 说明 |
|---|---|---|
| 本篇 | Primary SEO Page | 性能实测主文 · 收录与 snippet 以本 URL 为准(rel=canonical 指向自身) |
m4-ollama-benchmark-spec | SSOT / 数据定义 | 📅 6/20 · benchmark 指标与复现规范(API reference 向,非叙事主文) |
| 16GB vs 24GB 手记 | 转化 / 决策叙事 | 一周对照与购买故事 · 数字引用本篇 核心结论 |
| Memory / Swap | 机制 / runbook | 排班与并发 · 不重复 tok/s 表 |
复现脚本(附录)
相同背景负载下复现上表数字(完整定义见 📅 m4-ollama-benchmark-spec):
ollama pull qwen3:8b && ollama run qwen3:8b ""
memory_pressure
ollama run qwen3:8b \
"Write 512 tokens about Apple Silicon unified memory." \
--verbose 2>&1 | tee /tmp/ollama-bench.log
记录 Memory Used · Swap · tok/s · Memory Pressure。14B 换 qwen3:14b。完整 benchmark 定义见 📅 m4-ollama-benchmark-spec。
ZavCloud
在 Cloud Mac 上复现同一套 Ollama benchmark
用真实负载验证 16GB vs 24GB 差异——先测 Swap 与 tok/s,再决定实体机配置。
查看 Cloud Mac 方案