← Resources
By Ren Sugaya
— Performance Engineer, GPU & Inference
·
· TUTORIAL
在 Apple Silicon 上运行 LLM:统一内存与模型适配指南
Apple Silicon 在运行 LLM 方面具有独特优势,因为其统一内存共享、高带宽且容量大——64GB 的 Mac 可以运行 70B 模型。本指南涵盖每个 RAM 层级能运行什么、MLX 与 llama.cpp 的对比、唯一真正的弱点(提示处理),以及相关工具。
统一内存的优势所在
Apple Silicon 在 CPU、GPU 和 Neural Engine 之间共享单一的高带宽内存池——没有独立的 VRAM,也不存在通过 PCIe 总线进行的低速数据拷贝。这就是为什么 64GB 的 Mac 能够加载 24GB 独立 GPU 无法容纳的模型:整个内存池都可供 GPU 使用。
这一点至关重要,因为 LLM 的令牌生成是[内存带宽受限](/articles/running-llms-on-cpu)的——每个令牌的生成都需要从内存中读取模型——而 Apple 的统一带宽足够高,在解码过程中具有真正的竞争力。决定生成速度的关键规格是带宽,而非原始算力。
按内存层级划分,各能运行什么
统一内存是核心约束,因此请根据您的 Mac 来选择模型大小(以下数据基于 4-bit 量化):
- 16GB:7B–8B 模型,游刃有余。
- 32GB:最多约 30B 模型。
- 64GB:70B 模型变得可行(Q4 下的 70B 约为 40GB),但上下文空间较为紧张——这是运行 70B 的实际入门点。
- 128GB:以更高精度(Q5/Q8)运行 70B,并有充足的大上下文空间。
- Ultra 档(192GB 以上):高精度运行 70B、超大型模型,或同时驻留多个模型。
经验法则:在 Q4 下,每十亿参数的权重预留约 0.5–0.6 GB,并为 KV 缓存留出空间——KV 缓存会随上下文长度增长,通常正是它决定了您能容纳 16K 还是 32K 上下文。
MLX 与 llama.cpp
Mac 上有两个主流运行时。llama.cpp 的 Metal 后端将 GPU 计算转换为 Metal 着色器,采用跨平台的 GGUF 格式,拥有最大的模型库。MLX 是 Apple 自研框架,专为统一内存从零构建——在较小模型上通常更快(~14B 以下往往有显著优势),在 ~27B 以上两者差距收窄,因为都触及了带宽瓶颈。
MLX 势头强劲:Apple 将其定位为首选的 Apple Silicon 框架,主流运行时纷纷添加 MLX 后端,在 mixture-of-experts 模型上尤为出色。务实的建议:追求小模型和 MoE 模型峰值速度时选 MLX,需要最广模型选择和跨平台一致性时选 llama.cpp/GGUF。
真正的弱点:提示处理
Apple Silicon 真实的短板不在生成阶段,而在于提示处理(首个令牌的生成时间)。预填充(Prefill)是计算密集型操作,涉及大量矩阵乘法,而 Apple 的 GPU 缺乏 NVIDIA 用于加速这一过程的专用张量核心。因此,即使令牌生成速度具有竞争力,在处理长提示时模型开始响应的速度也会明显偏慢,这在长上下文工作中会显著影响实际使用体验。
另一个限制是生态系统:大多数工具以 CUDA 为目标,预量化的 MLX 模型少于 GGUF,高端 NVIDIA GPU 的原始带宽仍高出数倍。对于交互式单用户本地使用,Apple Silicon 表现优异;但对于长上下文或高吞吐量服务场景,这些差距就不可忽视了。
工具与量化
Mac 工具生态已相当成熟:Ollama(CLI 加 OpenAI 兼容 API,最容易上手)、LM Studio(最佳 GUI)、MLX-LM(通过 Python 实现峰值性能和微调)以及注重隐私的离线应用。GGUF 是跨工具的主流量化格式;MLX 格式是 Apple 原生的,速度更快但模型库较小。
和其他平台一样,[量化](/articles/llm-quantization-explained-gguf)是使其运转的关键——降至 4-bit 可将模型压缩约四倍(70B 从约 140GB 降至约 40GB),质量损失适中,Q4_K_M 通常是最佳平衡点。如果您的统一内存允许,可以升级至 Q5 或 Q8。
osFoundry 中的 Apple Silicon
osFoundry 通过 Metal 和 MLX 路径在 Apple Silicon 上运行本地推理,模型完全在您的 Mac GPU 上使用其统一内存执行——数据不会离开设备,也不存在 PCIe 拷贝开销。由于约束仅仅是您拥有多少统一内存,osFoundry 会帮助您为 Mac 选择合适大小的模型——16GB 机器选 7B–8B 模型,64GB 以上机器最高可选 70B——并自动选择合适的量化级别,在将模型装入可用内存的同时尽可能保留质量,让您无需手动权衡 GGUF 格式或 Q4/Q5/Q8 之间的取舍。最终实现完全私密、支持离线的本地推理,根据每台 Mac 的内存层级量身调优——当您需要更快的提示处理速度或更高吞吐量时,同一模型还可以扩展到专用 GPU 端点。(关于带宽的背景知识,请参阅我们的 [CPU 推理指南](/articles/running-llms-on-cpu)。)
Frequently asked questions
- Mac 在没有独立 GPU 的情况下能在本地运行大型语言模型吗?
- 可以——这正是 Apple Silicon 的优势所在。其统一内存在 CPU 和 GPU 之间共享且带宽高,因此 GPU 可以使用整个内存池。64GB 的 Mac 能够以 4-bit 运行 24GB 独立 GPU 无法容纳的 70B 模型,小模型运行速度也很快。不需要单独的 GPU。
- 运行 7B、30B 或 70B 模型需要多少统一内存?
- 在 4-bit 量化下:7B–8B 模型约需 16GB,约 30B 以内需要 32GB,70B 需要 64GB(权重约为 40GB,上下文空间较为紧张)。128GB 可以让您以更高精度运行 70B 并留有充足的大上下文空间。始终为 KV 缓存预留余量,它会随上下文长度增长。
- Apple Silicon 上 MLX 比 llama.cpp 快吗?
- 在较小模型上通常是的——MLX 是专为统一内存设计的 Apple 框架,在约 14B 以下有显著速度优势,在 mixture-of-experts 模型上也表现出色。约 27B 以上两者趋于相近,因为都受带宽限制。llama.cpp 的优势是更大的 GGUF 模型库和跨平台一致性。追求小模型和 MoE 模型峰值速度时使用 MLX。
- 为什么我的 Mac 在处理长提示时响应很慢?
- 因为提示处理(首个令牌的生成时间)是 Apple Silicon 的薄弱环节。预填充是计算密集型的,Apple 的 GPU 缺乏 NVIDIA 用于此处的专用张量核心,因此长提示需要等待一段时间才能出现第一个令牌——即便此后的令牌生成速度很快。这是长上下文使用场景中 Apple 特有的主要限制。
- 在 Mac 上运行 LLM 最快的工具是什么?
- 追求峰值性能选 MLX-LM(Apple 框架),尤其适合小模型和 MoE 模型。追求易用性则选 Ollama(CLI 加 OpenAI 兼容 API)或 LM Studio(最佳 GUI),这两款工具目前都已广泛使用,且许多已在 Apple Silicon 上采用 MLX 后端。最佳选择取决于您更看重极致速度还是便捷体验。
- 我能在 64GB MacBook Pro 上运行 70B 模型吗?
- 可以,在 4-bit 下——Q4 的 70B 约为 40GB,可以装入 64GB 并留有运行时和适度上下文窗口的空间。这是在 Mac 上运行 70B 的实际入门点;上下文空间有限,若需要大上下文或更高精度,建议选择 128GB。生成速度表现稳健,但长提示的首个令牌响应时间较慢。
- 本地 LLM 该选 Apple Silicon 还是 NVIDIA?
- Apple Silicon 非常适合私密的单用户本地推理——大容量统一内存让一台 Mac 能够运行需要多块独立 GPU 的模型,且功耗更低。NVIDIA 在原始带宽(高出数倍)、提示处理速度、高并发服务和生态系统(CUDA)方面占优。个人本地使用和在单机上运行大模型选 Apple;追求高吞吐量和长上下文服务选 NVIDIA。
Sources