入门Mac / 苹果 3 分钟阅读发布于 · 更新于

Mac M3 Max:本地大模型终极配置

用 Ollama 榨干苹果芯片性能,运行多个模型,搭建 OpenAI 兼容 API,调优 Metal GPU 层数。

面向的技术栈

macOS 14+ · 苹果芯片 · Ollama 0.6+ · Metal · Qwen3-8B / Llama 3.1 8B Q4

最近一次修改后未重新实机运行 —— 命令请当作起点,而不是已验证的配方。

OllamaMacApple SiliconMetalGGUF

开始之前

macOS 14 或更高版本,Apple 芯片。Ollama 的 macOS 版会自动使用 Metal —— 没有类似 CUDA 的工具链要装,也没有「开启 GPU」的开关。真正需要理解的是内存模型:GPU 和 CPU 共享同一块内存池,所以这里的「显存」是总内存的一部分,而不是一个独立的数字。

bash
brew install ollama
brew services start ollama

# Or download the app from ollama.com — same daemon, adds a menu bar item.
ollama --version

拉一个模型跑起来

从 Q4_K_M 的 8B 开始。按本索引的数字,Llama 3.1 8B 在 4K 上下文下需要 5.6 GB,Qwen3 8B 需要 5.8 GB,所以即使是 16GB 的 Mac 也很从容。48GB 的 M3 Max 能分给 GPU 的大约是 36 GB,能从容运行本站 90 个模型中的 74 个 —— 最大的是约 30.4 GB 的 Kimi Linear 48B-A3B。

bash
ollama pull llama3.1:8b
ollama run llama3.1:8b "Summarise the difference between Q4_K_M and Q5_K_M."

确认它真的跑在 GPU 上

统一内存让常规的检查方式失效了 —— 没有一个独立的显存数字可以看它往上爬。改用系统自带的 GPU 计数器,或者直接问 Ollama 它是怎么决定的。如果模型有一部分被放到了 CPU 上,`ollama ps` 的 PROCESSOR 一列会写明。

bash
ollama ps
# NAME            SIZE     PROCESSOR    UNTIL
# llama3.1:8b     6.1 GB   100% GPU     4 minutes from now

# Or watch Metal directly while generating:
sudo powermetrics --samplers gpu_power -i 1000 -n 5

没人提的那个上限

macOS 会为系统保留一部分统一内存,并限制单个进程能锁定的量,所以实际可用预算明显低于机器标称容量 —— 16GB 的 Mac 不会把 16GB 都给模型。这个上限可以调整,但调得过高只会让机器开始换页,而不会让模型变快。按低于标称的容量来规划,你就不会撞上它。

bash
# Current cap, in MB (0 means "use the default policy")
sysctl iogpu.wired_limit_mb

# Raising it is possible but resets on reboot, and over-raising causes swapping
# rather than speed. Prefer choosing a model that fits the default.

数字大概该是什么样

M3 Max 的带宽是 400 GB/s。Llama 3.1 8B 的 Q4_K_M 权重为 4.6 GB,所以生成速度不可能超过约 87 tok/s —— 这是两个公开数字给出的上限,不是跑分。本索引在 M3 Max 48G 上有一条实测记录:Ollama 跑 Llama 3.1 8B 的 Q4_K_M,68 tok/s,是该上限的 83%,也就是一套正常工作的 Metal 环境该有的样子。显存随上下文增长而不是随使用量增长:同一个模型 4K 时 5.6 GB,32K 时 9.5 GB。

出问题时

`ollama ps` 显示有一部分在 CPU 上:说明模型没能装进锁定上限 —— 换更小的量化或更短的上下文,而不是去调高上限。生成时整机卡顿:说明在换页,模型加上系统超出了物理内存;除了换更小的模型,调什么都没用。昨天能跑的模型今天加载不了:有别的东西占着内存 —— `ollama stop` 可以卸载它,而且模型默认空闲五分钟后会自行卸载。

bash
ollama stop llama3.1:8b

# Keep a model resident for an hour instead of the 5-minute default:
curl http://localhost:11434/api/generate -d '{"model":"llama3.1:8b","keep_alive":"1h"}'

常见问题

Mac 的统一内存对 Ollama 来说算显存吗?

大体上算。GPU 和 CPU 寻址同一块内存池,所以 48GB 的 Mac 能装下 24GB 独显装不下的模型 —— 本索引 90 个模型中有 74 个能从容装进 M3 Max 48G。不成立的是「全部可用」:macOS 会保留一部分,并限制单个进程能锁定多少,所以请按明显低于标称的容量规划。

怎么判断 Ollama 在 Mac 上用没用 GPU?

在模型加载状态下运行 `ollama ps`。当整个模型都在 Metal 上时,PROCESSOR 一列会显示 `100% GPU`;如果有一部分没放上去,它会写明 CPU 占比。统一内存意味着「看显存往上涨」这个常规手段在这里没有意义,因为根本没有一个独立的数字可看。

Apple 芯片上该从哪个模型开始?

从 Q4_K_M 的 8B 开始。Llama 3.1 8B 在 4K 上下文下需要 5.6 GB,Qwen3 8B 需要 5.8 GB,所以 16GB 及以上的 Apple 芯片 Mac 跑起来都很从容,而且都留有余量供之后加大上下文。先看清楚小模型的表现再往上走 —— 在 Mac 上容量是容易的那一半,剩下的由带宽决定。

这篇指南用到了什么

格式
GGUF

接下来

看看 🍎 Mac M3 Max 48G 还能跑哪些模型反向查询 —— 48GB、8192 上下文,按质量排序

本文涉及的模型

它真的跑起来了吗?

复制命令并不等于它能用,所以站内只在这里问一次。除了你的这个回答之外,不收集任何东西。

相关指南

部署指南仅供学习参考。每个模型均有独立许可协议 — 下载或部署前请阅读 Hugging Face 官方模型卡。