modelbeast/scripts
m3ultra 27564e80eb perfcheck: nightly fleet GPU canary + the contention lessons that shaped it
BENCHMARKS.md says what a model cost the day it was measured; nothing noticed if a
macOS/torch update or a thermal fault halved a node. perfcheck runs the whole fleet
in ~35s off godcheck's 03:30 cron on the m4mini and reports drift into
GODCHECK_LATEST.md.

Probes matmul (fp16/fp32), memory bandwidth, and SDPA at head_dim 64 vs 56 — the
latter turning CorridorKey's fast-path cliff into a permanent canary: it confirms
the padding win fleet-wide (1.96x-5.26x) and tells us if a future torch closes it.
Runs on venvs/rmbg/bin/python, already identical fleet-wide, so nothing new is
installed (nothing lands on the disk-tight m1max).

First cross-machine capability table for all 6 nodes. The M3 Ultra is ~2.2x the M1
Ultra on fp16 matmul, but they share ~625 GB/s — so bandwidth-bound stages run alike
while compute-bound ones scale. Both Ultras reach only ~78% of spec bandwidth on a
single kernel; the smaller Macs hit ~88%.

Measuring a fleet that is doing real work is the whole problem, and naive
benchmarking here is off by 11x:

- min, not median: a concurrent trellis_mac job dragged a median-of-5 matmul from
  ~24500 to ~2150 GFLOP/s, which reads exactly like a catastrophic regression.
- n=4096 not 2048: 2048 is dispatch-bound and swung 48% run-to-run; 4096 reproduces
  to 0.1% even while contended.
- sdpa 16x2048 not 8x1024: sub-ms probes are dispatch noise — 8x1024 gave ratios of
  0.79/3.95/2.35 on three runs of one machine, the first "proving" 56 is faster.
- busy nodes are excluded, not blamed: GPU contention is invisible to load average
  (M3 Ultra read load 2.45 with its GPU pinned), so bench.py samples ioreg GPU% before
  it touches the GPU — our own matmul pins the device, so ordering is the trick.
- baselines are the median of recent history, not a saved best: the M4 Pro also serves
  Ollama and is bimodal (~3200 vs ~5500 fp32), so a best-observed baseline pins to a
  lucky outlier and alerts forever.
- a regression must repeat before it is believed ([~] watching -> [!] CONFIRMED).

Validated by re-running the fleet against its own baselines: zero false alarms,
including a sweep where the M3 Ultra read 43 GB/s under load and was correctly
marked BUSY rather than reported as a 93% regression.

Also found: the m4mini is the only node with Tailscale SSH (RunSSH: true) and it does
NOT propagate remote exit codes — `ssh m4mini "exit 7"` returns 0, so any
`if ssh m4mini ...` test silently always passes. Test on output instead, which is
what godcheck already does (and why it is unaffected). It also cannot ssh to itself,
so run_fleet detects its own tailnet IP and benches the local node via the shell.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 18:03:03 +10:00
..
perfcheck perfcheck: nightly fleet GPU canary + the contention lessons that shaped it 2026-07-17 18:03:03 +10:00
agent_token.py 🔑 agents get keys: shared agent token minting + guest-visible job outputs 2026-07-15 23:30:04 +10:00
install_brush.sh Phase 1 + framework: settings/secrets, queue lanes, job mgmt, inbox, 8 new operators 2026-07-12 21:42:27 +10:00
install_colmap.sh Phase 1 + framework: settings/secrets, queue lanes, job mgmt, inbox, 8 new operators 2026-07-12 21:42:27 +10:00
install_comfyui.sh scripts/install_comfyui.sh: portable ComfyUI install (SD/SDXL runner; mflux is FLUX-only) 2026-07-16 23:28:25 +10:00
install_hunyuan3d_mlx.sh hunyuan install clones self-owned MLX fork; CLUSTER fleet final state 2026-07-16 10:35:11 +10:00
install_launchagent.sh Headless control: mb CLI, AGENTS.md handover, serve scripts; verified-current image models 2026-07-12 22:38:52 +10:00
install_mflux.sh A/B image-gen: local FLUX (mflux/MLX) + OpenRouter nano-banana operators 2026-07-12 22:31:19 +10:00
install_rmbg.sh bg_remove_local: local RMBG-2.0 background removal on MPS 2026-07-13 01:32:38 +10:00
install_sf3d.sh Phase 1 + framework: settings/secrets, queue lanes, job mgmt, inbox, 8 new operators 2026-07-12 21:42:27 +10:00
install_trellis_mac.sh Phase 1 + framework: settings/secrets, queue lanes, job mgmt, inbox, 8 new operators 2026-07-12 21:42:27 +10:00
serve.sh serve.sh: mkdir -p data before logging (fresh-checkout fix for new nodes) 2026-07-14 11:51:29 +10:00
users.py users.py: 'token <name>' subcommand — mint named API keys from the CLI 2026-07-16 22:29:51 +10:00