ARTIFACT // BENCH-M6-MEMORY-TIER.SH (SHELL)
Apple M6 MacBook Pro 内存档位基准脚本(锁定上限 + 交换检测) (bench-m6-memory-tier.sh)
记录芯片与内存档位,可选调高 iogpu.wired_limit_mb,以 Q8_0 KV Cache 运行固定参数的 llama-bench,若测试期间 macOS 发生内存交换则将结果标记为无效。
[核心实测结论 / TL;DR]本配置包「Apple M6 MacBook Pro 内存档位基准脚本(锁定上限 + 交换检测)」(文件名:bench-m6-memory-tier.sh,格式:SHELL)是 Tinker AI 实测工坊配套指南《apple-m6-macbook-pro-16gb-24gb-32gb-local-llm-sizing-neural-engine-vs-gpu》的参数化生产模板。支持在本地浏览器实时定制 GGUF 模型路径 (MODEL_PATH=./models/Qwen3-14B-Q4_K_M.gguf)、GPU 锁定内存上限 MB(0 = 保持系统默认) (WIRED_LIMIT_MB=0)、预填充测试提示词长度 (CTX_SIZE=2048) 等 3 项核心变量,默认遵循 127.0.0.1 回环绑定与最小权限规范。
01 // HOMELAB本地 AI / HomeLab· 验证日期:2026-11-05
查看全部 42 套配置附件 →bench-m6-memory-tier.sh
查看配套实测指南 →Apple M6 MacBook Pro 内存档位基准脚本(锁定上限 + 交换检测)
记录芯片与内存档位,可选调高 iogpu.wired_limit_mb,以 Q8_0 KV Cache 运行固定参数的 llama-bench,若测试期间 macOS 发生内存交换则将结果标记为无效。
参数化定制变量 (Variables — 自动保存在本地浏览器)
UTF-8 编码 · 零延迟实时编译
#!/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
PARAMETER SPECIFICATION // 参数化变量规范说明表
「bench-m6-memory-tier.sh」可定制环境变量与默认值说明
本配置模板(SHELL 格式)支持 3 项运行时参数注入,所有替换均在本地浏览器内完成。
| 模板占位符 | 参数用途说明 | 安全默认值 | 填写示例 |
|---|---|---|---|
{{MODEL_PATH}} | GGUF 模型路径 | ./models/Qwen3-14B-Q4_K_M.gguf | ./models/Qwen3-14B-Q4_K_M.gguf |
{{WIRED_LIMIT_MB}} | GPU 锁定内存上限 MB(0 = 保持系统默认) | 0 | 26624 |
{{CTX_SIZE}} | 预填充测试提示词长度 | 2048 | 2048 |
PAIRED HARDWARE MANIFEST // 配套实测环境与边界记录
配套指南《Apple M6 MacBook Pro(16GB / 24GB / 32GB)跑本地大模型:选哪档内存、跑哪些模型,以及为什么双 Neural Engine 不会让 llama.cpp 变快》验证基线
实测硬件与操作系统 (Hardware & OS)
规格依据(非本站实机实测):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,据发布资料与媒体报道)
锁定软件栈与模型版本 (Pinned Versions)
macOS 26.x (Metal 4)llama.cpp master (2026-11, Metal backend) / Ollama (latest stable)MLX + mlx-lm (latest, uses GPU Neural Accelerators via Metal 4 tensor ops)Models: Qwen3-8B / Qwen3-14B / Gemma 3 27B / Qwen3-30B-A3B / Qwen3-32B (GGUF Q4_K_M or MLX 4-bit)
离线与安全边界 (模型下载完成后可完全离线)
llama.cpp / Ollama / MLX 推理完全在本机运行。会转交私有云计算(Private Cloud Compute)的 Apple Intelligence 功能不在本文范围内。
已知限制与失败边界 (Known Limits)
- 证据等级:规格推算估算。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 路径)决定。
DEPLOYMENT CHECKLIST // 配置落地核验步骤
部署 bench-m6-memory-tier.sh 后的 3 步验收清单
- 已通过「关于本机」或 `system_profiler SPHardwareDataType` 记录准确的内存档位与带宽级别(16GB @153 GB/s 或 24/32GB @170 GB/s)。
- 已检查 `iogpu.wired_limit_mb`,如有调高,已把数值和基准结果一起记录。
- 已确认测试期间 `vm_stat` 的 Swapins/Swapouts 没有增长。