博客 · AI

用 Mac Studio 跑本地 LLM:36GB 和 96GB 能装下什么

如何判断 36GB 或 96GB 的 Mac Studio 能跑哪些本地 LLM:权重与 KV 缓存计算、模型规模、GPU 内存上限,以及 MLX、llama.cpp 与 Ollama 的取舍。

用 Mac Studio 跑本地 LLM,几乎一切都由内存决定。本文介绍如何估算 36GB 和 96GB 各能装下什么,以及如何把每一档用足。

统一内存为何改变了计算方式

在 Apple silicon 上,CPU 和 GPU 共用一个统一内存池。用于 GPU 推理的模型和 macOS、其他应用放在同一块内存中。没有独立显卡和固定显存,所以真正的问题只有两个:GPU 能用多少内存,模型需要多少内存。

macOS 默认允许 GPU 锁定约三分之二到四分之三的统一内存。36GB 的 Mac Studio 大约是 24–27GB,96GB 的机器大约是 64–72GB。规划时以这些数字为准,而不是规格表上的总内存。

第 1 步:估算权重

模型权重占用约等于参数量乘以每个参数的字节数。4-bit 量化模型的经验值是每十亿参数 0.5–0.7GB,已包含量化系数和运行时缓冲的部分开销。

模型规模4-bit(约)8-bit(约)
8B4–6GB8–9GB
14B7–10GB15–16GB
32B16–22GB34–36GB
70B35–49GB70–75GB

这些是规划用的估算值。实际大小因量化格式而异,请以你要加载的模型文件大小为准。

第 2 步:加上上下文(KV 缓存)

第二部分开销是 KV 缓存,它随上下文长度增长。标准 Transformer 的估算公式:

每 token 的 KV 字节数 = 2 x 层数 x KV 头数 x 头维度 x 每个值的字节数

以 Llama 3.1 70B 为例:80 层、8 个 KV 头、头维度 128,以 16-bit(2 字节)存储。计算得 2 x 80 x 8 x 128 x 2 = 327,680 字节,每 token 约 320KB。

  • 8K token 上下文:约 2.5GB
  • 32K token:约 10GB
  • 128K token:约 40GB

Llama 3.1 8B 这样的小模型(32 层,KV 结构相同)每 token 约 128KB,32K token 约 4GB。结论是:长上下文占用的内存可能和一个中等规模的模型差不多。很多运行时支持把 KV 缓存量化为 8-bit,开销大约减半,质量损失很小。

36GB(Mac Studio M5 Max)能装下什么

默认情况下 GPU 约有 24–27GB 可用:

  • 7–14B 模型轻松运行,8-bit 也没问题,还能留出长上下文或同时加载多个模型。
  • 4-bit 的 30B 级模型是最佳区间。32B 稠密模型权重约 16–22GB,剩余空间可支持中等长度的上下文,通常为 8K 到 32K token,具体取决于模型的 KV 结构。
  • 总参数约 30B 的混合专家(MoE)模型占用相近的内存,但生成速度比同规模稠密模型快,因为每个 token 只激活一部分参数。
  • 70B 级模型装不舒服。即使用激进的 3-bit 量化,留给上下文和系统的空间也所剩无几。

96GB(Mac Studio M5 Ultra)能装下什么

默认情况下约有 64–72GB 可用:

  • 4-bit 的 70B 级模型可以运行并支持较长上下文。权重约 40GB,加上 32K token 约 10GB,仍远在默认上限之内。
  • 8-bit 的 30B 级模型轻松运行,适合更看重质量而非速度的场景。
  • 同时常驻两三个中等模型,例如在同一个 API 后面挂一个编码模型、一个对话模型和一个嵌入模型。
  • 总参数约 100B 的更大 MoE 模型在 4-bit 下可能勉强装下。请核对实际文件大小并预留余量。
  • 8-bit 的 70B已达到或超过默认上限,不适合作为日常配置。

提高 GPU 内存上限

较新的 macOS 提供了一个设置,可以调整 GPU 能锁定的内存量:

# 36GB 机器:允许 GPU 使用约 28GB
sudo sysctl iogpu.wired_limit_mb=28672

# 96GB 机器:允许 GPU 使用约 80GB
sudo sysctl iogpu.wired_limit_mb=81920

# 恢复默认值
sudo sysctl iogpu.wired_limit_mb=0

请谨慎使用。该值重启后会恢复,这是一道有用的保险。一定要给 macOS、SSH、远程桌面工具和其他服务留出几 GB。调得太高,系统会大量交换甚至失去响应,对远程机器来说可能意味着在恢复前无法访问。建议逐步调高,加载模型后观察 memory_pressure 和活动监视器,再确定最终数值。

MLX、llama.cpp 与 Ollama

三者在 Apple silicon 上都运行良好,适用场景不同。

运行时适合说明
MLX / mlx-lmApple 原生性能、Python 工作流、LoRA 微调使用 MLX 格式模型;社区有大量预先转换好的量化模型
llama.cpp精细控制:上下文大小、KV 缓存类型、批处理、GGUF 文件Metal 后端;llama-server 提供 OpenAI 兼容 API
Ollama最快跑起一个 API基于 llama.cpp;模型管理简单,默认值合理

各自的入门命令:

# MLX
pip install mlx-lm
mlx_lm.generate --model mlx-community/Qwen2.5-32B-Instruct-4bit --prompt "Hello"
mlx_lm.server --model mlx-community/Qwen2.5-32B-Instruct-4bit --port 8080

# llama.cpp
brew install llama.cpp
llama-server -m ./model-Q4_K_M.gguf -c 16384 --port 8080

# Ollama
ollama run qwen2.5:32b

最新选项请参考 GitHub 上的 MLX 和 GitHub 上的 llama.cpp。Ollama 服务化的详细步骤见在 Mac mini 服务器上运行 Ollama,同样适用于 Mac Studio。

吞吐量:大致预期

具体速度取决于芯片、模型、量化方式、运行时版本和上下文长度,请用自己的负载实测。不过规律是一致的:

  • 模型越大,生成越慢。每生成一个 token 都要从内存读取激活的权重,所以 70B 稠密模型明显慢于 30B。
  • MoE 模型感觉更快,因为每个 token 读取的权重比同总规模的稠密模型少。
  • 提示词处理是另一项开销。长提示需要先处理完才会出现第一个 token,这对发送大量上下文的检索和编码工具很重要。
  • 低比特量化通常更快,因为要读取的数据更少。
  • 在 Mac Studio 上用 30B 级模型交互对话很流畅;70B 级模型也能用于对话和批处理,只是速度更慢。

36GB 还是 96GB

如果目标是 30B 级模型或多个小模型,选 36GB 的 Mac Studio M5 Max。如果需要 70B 级模型、长上下文或同时常驻多个模型,选 96GB 的 Mac Studio M5 Ultra。在 Hatmac 两者都是独享物理机,提供 6 个月或 12 个月租期:M5 Max 为 6 个月 $549/月、12 个月 $529/月,M5 Ultra 为 $1,199/月或 $999/月。如需更大内存可单独咨询。更多信息见 Mac Studio LLM 托管,或阅读更深入的 Apple silicon LLM 内存指南。

常见问题

36GB 的 Mac Studio 能跑 70B 模型吗?

不太行。4-bit 的 70B 模型仅权重就需要约 35–49GB,超过了 36GB 机器上 GPU 的默认可用量。

跑本地 LLM,Mac Studio 比 Mac mini 好在哪里?

主要在大模型上。16–24GB 的 Mac mini 适合 7–14B 模型;36GB 或 96GB 的 Mac Studio 可以运行 30B 和 70B 级模型。

修改 iogpu.wired_limit_mb 安全吗?

这是系统支持的设置,但要给 macOS 留出余量。该值重启后恢复,建议逐步测试。

mac studiolocal llmmlxllama.cppunified memory