在 Mac 上跑大模型,内存带宽才是决定 Token 速度的生死线
最近在本地部署 LLM 时,很多人的关注点总是在 CPU 核心数或者芯片代号上,但实际跑起来你会发现,决定生成速度(Token/s)的真正变量其实是内存带宽。我参考了 mlx-examples 仓库中的性能实测数据,结合实际部署体验,想聊聊 Apple Silicon 统一内存架构在推理时的真实表现。
首先得给一个核心结论:统一内存(Unified Memory)确实解决了显存容量的焦虑,但它并没有抹平不同芯片等级之间的性能鸿沟。在 LLM 推理中,瓶颈几乎永远在内存带宽,而不是计算能力。
我们可以对比两组极端的场景。如果你使用的是 M2 Ultra 或者 M3 Max 这种顶配芯片,由于其内存带宽极高(例如 M2 Ultra 达到了 800GB/s),在跑中小型模型时,Token 蹦出的速度快到几乎没有感知延迟。这种体验非常接近于调用云端 API,对于需要实时反馈的本地 AI Agent 工作流来说,这是唯一的体面选择。
而如果你使用的是 M1 或 M2 的基础版芯片,情况就完全不同了。虽然通过 4-bit 量化(Quantization)可以让模型跑起来,但一旦模型参数量增加,速度会呈断崖式下跌。在实际操作中,基础版芯片基本只能流畅运行 7B 左右的小模型。如果你尝试在基础版 M1 上跑一个量化后的 30B 模型,你会发现生成速度慢到令人绝望,完全失去了实用价值。
这里有一个非常关键的细节:内存容量与内存带宽是两回事。很多人误以为只要内存够大(比如买了 64GB 或 128GB),速度就一定会快。其实,内存容量决定了你「能不能跑起」这个模型,而内存带宽决定了你「跑得快不快」。
最可怕的情况是触发 Swap(虚拟内存交换)。在本地部署大模型时,如果模型权重加上 KV Cache 占用了绝大部分统一内存,一旦触碰到系统阈值导致触发 Swap,速度会直接掉到个位数。在这种状态下,无论你的芯片是 M2 还是 M3,推理速度都会瞬间崩塌,因为磁盘 I/O 的速度与内存带宽根本不在一个量级。
对于打算入坑本地 AI 的开发者,我建议在选机型时建立一套新的优先级逻辑:内存带宽 > 内存容量 > 芯片代号 > CPU 核心数。
如果你追求极致的响应速度,必须盯着内存带宽看。比如在 mlx-examples 的性能对比表中可以看到,高带宽芯片在处理相同规模的模型时,每秒生成的 Token 数有量级上的差距。如果你只是想跑个 7B 模型做简单的文本处理,基础版勉强够用;但如果你想在本地构建一个能够处理复杂任务的 Agent,且不希望在等待 Token 蹦出时发呆,那么 M-Max 或 M-Ultra 系列是唯一的选择。
总结来说,Apple Silicon 的统一内存架构让 Mac 成为了一个巨大的「显存池」,这给了我们运行大模型的入场券,但想要跑得快,你得为那条宽阔的内存通道买单。
为什么跑分榜里没见 Qwen 2.5 这种强力模型?明明它和 Gemma 2 才是现在的天花板。