Apple M6 MacBook Pro(16GB / 24GB / 32GB)跑本地大模型:选哪档内存、跑哪些模型,以及为什么双 Neural Engine 不会让 llama.cpp 变快
新款 2nm M6 带来了每个 GPU 核心内置的神经网络加速器、双 16 核 Neural Engine,以及 153 GB/s(16GB 版)或 170 GB/s(24/32GB 版)的内存带宽。对本地大模型来说,最关键的规格是内存档位:16GB 是 8B 级机器,24GB 是 14B 级机器,只有 32GB 能从容运行 Qwen3-30B-A3B。llama.cpp、Ollama、MLX 都不使用 Neural Engine——买内存,别为 NPU TOPS 买单。
规格依据(非本站实机实测):14 英寸 MacBook Pro,标准版 Apple M6(台积电 N2 · 12 核 CPU:2 超大核 + 4 性能核 + 6 能效核 · 12 核 GPU,每核内置神经网络加速器 · 双 16 核 Neural Engine · 16GB 版 153 GB/s,24GB/32GB 版 170 GB/s,据发布资料与媒体报道)
llama.cpp / Ollama / MLX 推理完全在本机运行。会转交私有云计算(Private Cloud Compute)的 Apple Intelligence 功能不在本文范围内。
- 证据等级:规格推算估算。tok/s 数字由公开带宽(× 0.68 效率系数)计算得出,并非本站在 M6 上实测。请运行附带脚本,用你的数据替换。
- macOS 默认把 GPU 可锁定内存限制在内存总量的约 2/3 到 3/4。在 32GB 机型上调高 `iogpu.wired_limit_mb` 有帮助,但会压缩系统、浏览器和 IDE 的可用空间,且重启后失效。
- 双 16 核 Neural Engine 只能通过 Core ML / Apple Foundation Models 调用。llama.cpp、Ollama、MLX 都跑在 GPU 上,速度由内存带宽(生成)和 GPU 神经网络加速器(预填充,MLX / Metal 4 路径)决定。
1. NPU TOPS、GPU 神经网络加速器、内存带宽:各自到底加速了什么
| M6 能力 | llama.cpp / Ollama 是否使用 | MLX 是否使用 | 影响指标 |
|---|---|---|---|
| 统一内存容量(16/24/32GB) | 是 | 是 | 能装下哪些模型;最大上下文长度 |
| 内存带宽(153 / 170 GB/s) | 是 | 是 | 生成速度 tok/s |
| GPU 神经网络加速器(每核) | 部分(取决于 Metal 后端版本) | 是(Metal 4 张量运算) | 预填充 / 首 token 延迟 |
| 双 16 核 Neural Engine | 否 | 否 | 仅 Apple Intelligence 与 Core ML 应用 |
2. 内存档位选型:能装下什么,以及估算的生成速度
| 模型 | 权重大小(Q4_K_M) | M6 16GB(153 GB/s) | M6 24GB(170 GB/s) | M6 32GB(170 GB/s) |
|---|---|---|---|---|
| Qwen3-8B | 约 5.0 GB | 可装下 · 约 21 tok/s | 可装下 · 约 23 tok/s | 可装下 · 约 23 tok/s |
| Qwen3-14B | 约 9.0 GB | 紧张(需关闭其他应用)· 约 11 tok/s | 可装下 · 约 13 tok/s | 可装下 · 约 13 tok/s |
| Gemma 3 27B | 约 16.5 GB | 装不下 | 紧张 / 有交换风险 · 约 7 tok/s | 可装下 · 约 7 tok/s |
| Qwen3-30B-A3B(MoE,约 3B 激活) | 约 18.6 GB | 装不下 | 装不下(溢出到交换) | 可装下 · 约 55 tok/s |
| Qwen3-32B(稠密) | 约 19.8 GB | 装不下 | 装不下 | 紧张(需调高锁定上限)· 约 6 tok/s |
3. 在你自己的 M6 上复现:锁定上限、固定基准测试、交换检查
# 1) Inspect / raise the GPU wired-memory limit (resets on reboot) sysctl iogpu.wired_limit_mb # 0 = macOS default (~2/3–3/4 of RAM) sudo sysctl iogpu.wired_limit_mb=26624 # 32GB M6 only: allow ~26GB for Metal # 2) Fixed benchmark: prompt 2048 / generate 128, 3 reps, flash attention, Q8_0 KV vm_stat | grep -E "Swapins|Swapouts" # record BEFORE ./llama-bench -m Qwen3-30B-A3B-Q4_K_M.gguf -ngl 99 -fa 1 \ -ctk q8_0 -ctv q8_0 -p 2048 -n 128 -r 3 -o md vm_stat | grep -E "Swapins|Swapouts" # record AFTER — must not grow # 3) Optional: compare MLX on the same model (uses GPU Neural Accelerators for prefill) pip install -U mlx-lm mlx_lm.generate --model mlx-community/Qwen3-30B-A3B-4bit \ --prompt "Summarize the trade-offs of unified memory for local LLMs." --max-tokens 256
复现常见疑问与深层原理解答
Q: 跑本地 AI 是不是应该等 M6 Pro / M6 Max,而不是买标准版 M6?
如果目标是 30B 级 MoE 或 14B 稠密模型,32GB 标准版 M6 是一台合理的便携机器。如果想跑 70B 稠密或 100B+ MoE,标准版芯片没有任何内存档位够用——你需要 Max 级芯片(更宽的总线、64–128GB)或 Mac Studio 这类台式机。相关档位请参阅本站 M5 Max 和 M3 Ultra 指南。
Q: M6 跑本地大模型比 M5 快很多吗?
生成阶段最多提升约等于带宽差距(24/32GB 版约 10%),因为生成速度受带宽限制。预填充的提升取决于运行时对 GPU 神经网络加速器的利用程度,MLX 受益最大。如果你已有一台 32GB 的 M5 机器,仅为本地大模型速度而升级很难说值得。
Apple M6 MacBook Pro 内存档位基准脚本(锁定上限 + 交换检测)
记录芯片与内存档位,可选调高 iogpu.wired_limit_mb,以 Q8_0 KV Cache 运行固定参数的 llama-bench,若测试期间 macOS 发生内存交换则将结果标记为无效。
#!/usr/bin/env bash
# Tinker AI — Apple M6 MacBook Pro Memory-Tier Benchmark (Guide #38)
set -euo pipefail
MODEL="./models/Qwen3-14B-Q4_K_M.gguf"
WIRED="0"
PROMPT_TOKENS="2048"
echo "=== [1/4] Chip & memory tier ==="
system_profiler SPHardwareDataType | grep -E "Chip|Memory"
echo "=== [2/4] GPU wired-memory limit ==="
if [ "$WIRED" != "0" ]; then
sudo sysctl iogpu.wired_limit_mb="$WIRED"
fi
sysctl iogpu.wired_limit_mb
swapins() { vm_stat | awk '/Swapins/ {gsub("\\.","",$2); print $2}'; }
BEFORE=$(swapins)
echo "=== [3/4] llama-bench pp$PROMPT_TOKENS / tg128 x3, Q8_0 KV ==="
llama-bench -m "$MODEL" -ngl 99 -fa 1 -ctk q8_0 -ctv q8_0 -p "$PROMPT_TOKENS" -n 128 -r 3 -o md
AFTER=$(swapins)
echo "=== [4/4] Swap guard ==="
if [ "$AFTER" -gt "$BEFORE" ]; then
echo "[INVALID] macOS swapped $((AFTER - BEFORE)) pages during the run — this model is too large for this memory tier."
else
echo "[OK] No swap during benchmark — result is valid for this memory tier."
fi