TinkerLab
ARTIFACT // RUN-MAC-BENCHMARK.SH (SHELL)

Mac 本地模型固定任务、上下文与生成速度复现脚本 (run-mac-benchmark.sh)

在固定测试任务(seed=42)与指定上下文窗口下,精确采集预填充速度、生成速率 (tok/s) 与统一内存驻留情况。

[核心实测结论 / TL;DR]本配置包「Mac 本地模型固定任务、上下文与生成速度复现脚本」(文件名:run-mac-benchmark.sh,格式:SHELL)是 Tinker AI 实测工坊配套指南《mac-local-llm-benchmark》的参数化生产模板。支持在本地浏览器实时定制 测试模型 Tag (MODEL_NAME=qwen2.5:14b-instruct-q4_K_M)、上下文窗口 (num_ctx) (NUM_CTX=8192)、Ollama 接口地址 (OLLAMA_URL=http://127.0.0.1:11434) 等 3 项核心变量,默认遵循 127.0.0.1 回环绑定与最小权限规范。
01 // HOMELAB本地 AI / HomeLab· 验证日期:2026-10-23
查看全部 42 套配置附件 →
run-mac-benchmark.sh

Mac 本地模型固定任务、上下文与生成速度复现脚本

在固定测试任务(seed=42)与指定上下文窗口下,精确采集预填充速度、生成速率 (tok/s) 与统一内存驻留情况。

查看配套实测指南 →
参数化定制变量 (Variables — 自动保存在本地浏览器)
UTF-8 编码 · 零延迟实时编译
#!/usr/bin/env bash
# Tinker AI — Reproducible Mac Local LLM Benchmark (Guide #1)
set -euo pipefail

MODEL="qwen2.5:14b-instruct-q4_K_M"
CTX="8192"
API="http://127.0.0.1:11434/api/generate"

echo "=== [1/3] Hardware & Version Snapshot ==="
uname -a
ollama --version || true

echo "=== [2/3] Running Fixed Deterministic Task (seed=42, num_ctx=$CTX) ==="
RESPONSE=$(curl -sS "$API" -d "{
  \"model\": \"$MODEL\",
  \"prompt\": \"Extract three technical risks of running local LLMs with large context windows in strict JSON format with keys: risk, cause, mitigation.\",
  \"stream\": false,
  \"options\": {
    \"num_ctx\": $CTX,
    \"temperature\": 0,
    \"seed\": 42
  }
}")

echo "$RESPONSE" | python3 -c '
import sys, json
data = json.load(sys.stdin)
eval_count = data.get("eval_count", 0)
eval_dur = data.get("eval_duration", 1) / 1e9
prompt_count = data.get("prompt_eval_count", 0)
prompt_dur = data.get("prompt_eval_duration", 1) / 1e9
print(f"Prompt Eval : {prompt_count} tokens ({prompt_count/prompt_dur:.2f} tok/s)")
print(f"Generation  : {eval_count} tokens ({eval_count/eval_dur:.2f} tok/s)")
'

echo "=== [3/3] Active Metal / Unified Memory Footprint ==="
ollama ps
PARAMETER SPECIFICATION // 参数化变量规范说明表

「run-mac-benchmark.sh」可定制环境变量与默认值说明

本配置模板(SHELL 格式)支持 3 项运行时参数注入,所有替换均在本地浏览器内完成。

模板占位符参数用途说明安全默认值填写示例
{{MODEL_NAME}}测试模型 Tagqwen2.5:14b-instruct-q4_K_Mqwen2.5:14b-instruct-q4_K_M
{{NUM_CTX}}上下文窗口 (num_ctx)81928192
{{OLLAMA_URL}}Ollama 接口地址http://127.0.0.1:11434http://127.0.0.1:11434
PAIRED HARDWARE MANIFEST // 配套实测环境与边界记录

配套指南《一台现有 Mac 的本地模型实测:固定任务、模型版本、量化、上下文和速度》验证基线

实测硬件与操作系统 (Hardware & OS)

MacBook Pro 14"(M3 Pro · 18GB 与 36GB 统一内存对照实测)· macOS 15.3

锁定软件栈与模型版本 (Pinned Versions)
Ollama 0.5.7qwen2.5:7b-instructqwen2.5:14b-instructdeepseek-r1:14b
离线与安全边界 (模型拉取后 100% 离线运行)

已在断开 Wi-Fi 下实测验证;推理全程无任何外部网络请求。

已知限制与失败边界 (Known Limits)
  • 权重体积 ≠ 运行内存预算:Qwen2.5-14B Q4_K_M 磁盘权重仅 9.0 GB,但当 num_ctx 设为 32768(FP16 KV Cache)时总内存飙升至 16.4 GB,在 16GB/18GB Mac 上会触发严重 Swap 掉速。
  • macOS 上的 Docker Desktop 无法透传 Metal GPU 给容器;在 Mac 容器内跑 Ollama 会退化为纯 CPU 虚拟化,速度下降 75% 以上。
DEPLOYMENT CHECKLIST // 配置落地核验步骤

部署 run-mac-benchmark.sh 后的 3 步验收清单

  1. 确认 Ollama 在 macOS 宿主机原生运行(而非跑在 Docker Desktop 虚拟机内),确保 Metal 硬件加速生效。
  2. 当使用 16K 及以上上下文时,已开启 OLLAMA_FLASH_ATTENTION=1 与 OLLAMA_KV_CACHE_TYPE=q8_0。
  3. 在模型推理期间运行 `ollama ps`,确认 PROCESSOR 一栏显示 100% GPU 无 CPU 溢出。