Apple Silicon 与统一内存
Apple Silicon 玩的是另一种游戏。CPU 和 GPU 共享一个统一内存池,而 GPU 可以寻址几乎全部——所以在 Mac 上,买内存就是买显存。一台 64 GB 的 Mac 装得下所有 32B 和多数 70B 量化,没有消费级独立显卡能做到。问题在带宽:你得到的是笔记本级的内存管道,不是每秒 TB 级的 GDDR。
统一内存,具体地
在 PC 上,系统内存和显存是分开的池;溢出意味着以显存速度零头往返 PCIe。Apple Silicon 上只有一个物理池,所以 GPU 直接从“系统”内存读取权重,没有拷贝、没有 PCIe 税。近期的 macOS 版本默认把 GPU 可用内存限制在物理内存的大约三分之二到四分之三;你可以调高:
sysctl iogpu.wired_limit_mb # 当前的 GPU 内存限制
sudo sysctl iogpu.wired_limit_mb=49152 # 例如 64 GB Mac 上设为 48 GB
无论如何都给 OS 留几 GB——把所有东西钉在 GPU 上会让整台机器痛苦不堪。
按芯片档位的带宽
解码速度 = 带宽 ÷ 每词元字节,与任何地方相同的算术。8B Q4 模型约 5 GB,所以上限是带宽 ÷ 5:
| 芯片档位 | 大致带宽 | 8B Q4 解码上限 |
|---|---|---|
| 基础 M | ~100–120 GB/s | ~20–24 tok/s |
| Pro | ~150–270 GB/s | ~30–55 tok/s |
| Max | ~400–550 GB/s | ~80–110 tok/s |
| Ultra | ~800 GB/s | ~160 tok/s |
算例:~550 GB/s 的 Max 芯片在 8B Q4 上上限 ~110 tok/s,实际发挥 70–95。基础芯片跑小模型没问题、30B+ 痛苦;Max 和 Ultra 是感觉像独立 GPU 的档位。范围为近似值——买之前查具体芯片的规格。
第二个例子,Mac 存在的理由:32B Q4_K_M 模型约 19.2 GB 权重加 8k 下约 2.1 GB 的 KV,再加 OS。36 GB 机器薄利运行;48–64 GB 带真实上下文余量运行。同一模型在数其他任何东西之前就需要 24 GB 独立显存——而极少数单卡有那个容量。每单位现金的容量是 Mac 的全部论点:36–128 GB 区间是消费级独立显卡根本不覆盖的领土。
生态:MLX 与 llama.cpp
两条路都健康,你很可能最终都用:
- llama.cpp(Metal 后端)——到处都跑、最先得到新奇的量化格式、并用与你的 NVIDIA/AMD 机器相同的 GGUF 文件和标志。
- MLX——Apple 的数组框架。
mlx-lm生成、服务并转换模型,而且常常最先有 Apple 专属内核。Hugging Face 托管了多数热门家族的 MLX 社区转换。
两者都不需要 CUDA——这也是结构性限制:截至本文写作 vLLM、SGLang 和 TensorRT-LLM 不在 macOS 上运行。要 OpenAI 兼容服务,用 llama.cpp 内置服务器或 mlx-lm server。
限制
- 散热。 MacBook 里的 Max 级芯片在持续生成下节流;Mac Studio 无限期保持频率。笔记本用于爆发,Studio 用于服务。
- 没有 CUDA。 如果教程说 vLLM 或 SGLang,那条路是关的。llama.cpp 和 MLX 把聊天、嵌入和服务覆盖得足够好,以至于很少出问题——直到出问题。
- 量化滞后。 前沿量化和内核先落在 llama.cpp;MLX 转换在数天到数周内跟上。
- 交换分区不是显存。 当内存压力把权重挤进 swap,性能不是退化——是崩塌。模型配到物理内存减 OS 开销以下。句号,没有值得破的例外。
购买指南
- 16 GB:只能 7–8B Q4。休闲。
- 24–36 GB:14B 舒适;36 GB 上小心上下文的 32B Q4。
- 48–64 GB:带真实上下文的 32B Q4/Q5;64 GB 上 70B IQ3/Q4,前提是忍受它相对所搬权重的慢。
- 带宽买 Max 或 Ultra——那正是解码速度买到的东西。基础 M 用于小模型、Whisper 和视觉。
非 LLM 附赠:这些机器跑 Whisper 转录和视觉编码器极其出色。统一内存加强力 SIMD 单元让音频和图像流水线的每瓦性能不成比例地快——一台安静的 Mac Studio 是合法的多模态主力。