TinkerLab
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 = 保持系统默认)026624
{{CTX_SIZE}}预填充测试提示词长度20482048
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 步验收清单

  1. 已通过「关于本机」或 `system_profiler SPHardwareDataType` 记录准确的内存档位与带宽级别(16GB @153 GB/s 或 24/32GB @170 GB/s)。
  2. 已检查 `iogpu.wired_limit_mb`,如有调高,已把数值和基准结果一起记录。
  3. 已确认测试期间 `vm_stat` 的 Swapins/Swapouts 没有增长。