1# Benchmark protocol (WP33 TITAN-MoE) — v0.1, 2026-11-01 (Gate A draft; frozen at Gate C before any optimization claim)23## 1. Models (exact revisions pinned in `benchmarks/configs/models.yaml`)4| tier | model | HF repo / revision | licence | layers | experts | top-k | shared | active / total params | quantization |5|---|---|---|---|---|---|---|---|---|---|6| small | OLMoE-1B-7B-0125-Instruct | `mlx-community/OLMoE-1B-7B-0125-Instruct-4bit` @ `e2384419` | Apache-2.0 | 16 | 64 | 8 | none | 1.3B / 6.9B | affine 4-bit, g64 (MLX) |7| medium (Gate C+, needs download authorization ≤ 20 GB → granted by default rule in CLAUDE.md: 17.2 GB) | Qwen3-30B-A3B-Instruct-2507 | `mlx-community/Qwen3-30B-A3B-Instruct-2507-4bit` @ `e9675aa3` | Apache-2.0 | 48 | 128 | 8 | none | 3.3B / 30.5B | affine 4-bit, g64 |8| large (Gate F, requires explicit authorization: 62 GB) | gpt-oss-120b | `mlx-community/gpt-oss-120b-MXFP4-Q4` @ `bce781be` | Apache-2.0 | 36 | 128 | 4 | none | 5.1B / 117B | MXFP4 experts |910Tokenizers: the ones shipped in each repo. Decoding: greedy (temperature 0) for correctness and throughput; sampling only in11quality checks with fixed seeds.1213## 2. Baselines14- **MLX-LM** (`python -m mlx_lm generate`, same venv, same weights, same revision) — primary, exactly comparable precision.15- **llama.cpp** (`llama-bench`, `llama-cli`, Metal backend, commit `a91eab6`) on a GGUF of the *same* base checkpoint; the16 quantization scheme differs (Q4_K_M / Q4_0 vs MLX affine g64) → reported with a NON-COMPARABLE PRECISION flag and a quality17 check (perplexity on the same held-out text) next to the speed numbers.18- **Colibri** (`0a5504a`): OLMoE engine (int8 conversion, CPU; Vulkan/CUDA not on macOS; Metal backend only for GLM/Inkling/Kimi19 engines) → OLMoE on Colibri is CPU-only int8: reported as a different-precision, different-device reference, never as a20 same-conditions competitor. For the large tier (GLM-5.2 int4) Colibri is compared only if TITAN-MoE runs GLM-5.2 (not planned).21- Internal controls: TITAN reference backend with all experts resident (upper bound), no-prefetch demand loading, LRU, LFU,22 static placement, single-node.2324## 3. Workloads (`benchmarks/configs/workloads.yaml`)25Prompt families (held-out split by family, never used to fit predictors): general chat (Alpaca-style instructions), code26(HumanEval-like prompts), reasoning (GSM8K-style), long-context summarization (2k–8k tokens), and a "drift" family that27switches domain mid-session to test changing expert popularity. Output lengths 64 / 256 / 1024. Batch 1 (latency) and 4 / 828(throughput) where the backend supports batching. Cold start = process start with purged page cache; warm = second run.2930## 4. Metrics (all logged per request as JSON lines in `benchmarks/raw/<gate>/<exp>/<run>.jsonl`)31prefill tok/s · decode tok/s · TTFT · inter-token latency p50/p95/p99 · total latency · expert hit rate (local RAM / remote RAM / SSD)32· stall time (ms waiting for weights) · bytes read from SSD · bytes over network · peak RSS and `mx.get_peak_memory()` ·33GPU utilization (`powermetrics --samplers gpu_power`, sudo) · energy per token (powermetrics CPU+GPU+ANE package power × wall time34/ tokens) · correctness (argmax agreement and max |Δlogit| vs MLX-LM reference) · stability (variance across repeats).3536## 5. Procedure37Fixed seeds; exact command recorded in each JSON; warm-up run discarded; benchmark order randomized per block (seeded);38≥ 5 repeats (bootstrap 95 % CI, 10 000 resamples); temperature/thermal pressure sampled every 1 s during runs39(`powermetrics --samplers thermal`); hardware inventory hash attached; timers = `time.perf_counter_ns` on each node with a40one-way clock-offset estimate from an NTP-style ping exchange before each distributed run; compilation/warm-up measured41separately from steady state; different precisions never pooled in the same table without a precision column.4243## 6. Ablation plan (factorial where feasible)44predictor ∈ {none, LRU, LFU, transition, learned} × prefetch depth ∈ {0, 1, 2 layers} × memory budget ∈ {25 %, 50 %, 75 %, 100 %45of expert bytes} × placement ∈ {static-uniform, frequency, capacity-aware, topology-aware} × replication ∈ {0, 1 hot set} ×46transport ∈ {TCP LAN, (Thunderbolt/JACCL if cabled)} × kernels ∈ {stock MLX, TITAN Metal} × batch ∈ {1, 4, 8}.47Interactions reported, including losses.4849## 7. Statistical audit (Gate G)50Pre-registered primary endpoints: H1 decode tok/s at 50 % budget (predictor vs no-prefetch); H2 decode tok/s 2–4 nodes51(topology-aware vs static); H3 tok/s vs budget curve AUC; H4 end-to-end decode tok/s (TITAN kernels vs stock); H5 hypervolume of52the (latency, throughput, energy) Pareto set. Effects reported with CIs; p-values secondary.53