SPB Git

spb/wp33_uqo

Public MIT
4.7 KB

# Benchmark protocol (WP33 TITAN-MoE) — v0.1, 2026-11-01 (Gate A draft; frozen at Gate C before any optimization claim)

# 1. Models (exact revisions pinned in benchmarks/configs/models.yaml)

tier model HF repo / revision licence layers experts top-k shared active / total params quantization
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)
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
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

Tokenizers: the ones shipped in each repo. Decoding: greedy (temperature 0) for correctness and throughput; sampling only in quality checks with fixed seeds.

# 2. Baselines

  • MLX-LM (python -m mlx_lm generate, same venv, same weights, same revision) — primary, exactly comparable precision.
  • llama.cpp (llama-bench, llama-cli, Metal backend, commit a91eab6) on a GGUF of the same base checkpoint; the quantization scheme differs (Q4_K_M / Q4_0 vs MLX affine g64) → reported with a NON-COMPARABLE PRECISION flag and a quality check (perplexity on the same held-out text) next to the speed numbers.
  • Colibri (0a5504a): OLMoE engine (int8 conversion, CPU; Vulkan/CUDA not on macOS; Metal backend only for GLM/Inkling/Kimi engines) → OLMoE on Colibri is CPU-only int8: reported as a different-precision, different-device reference, never as a same-conditions competitor. For the large tier (GLM-5.2 int4) Colibri is compared only if TITAN-MoE runs GLM-5.2 (not planned).
  • Internal controls: TITAN reference backend with all experts resident (upper bound), no-prefetch demand loading, LRU, LFU, static placement, single-node.

# 3. Workloads (benchmarks/configs/workloads.yaml)

Prompt families (held-out split by family, never used to fit predictors): general chat (Alpaca-style instructions), code (HumanEval-like prompts), reasoning (GSM8K-style), long-context summarization (2k–8k tokens), and a "drift" family that switches domain mid-session to test changing expert popularity. Output lengths 64 / 256 / 1024. Batch 1 (latency) and 4 / 8 (throughput) where the backend supports batching. Cold start = process start with purged page cache; warm = second run.

# 4. Metrics (all logged per request as JSON lines in benchmarks/raw/<gate>/<exp>/<run>.jsonl)

prefill tok/s · decode tok/s · TTFT · inter-token latency p50/p95/p99 · total latency · expert hit rate (local RAM / remote RAM / SSD) · stall time (ms waiting for weights) · bytes read from SSD · bytes over network · peak RSS and mx.get_peak_memory() · GPU utilization (powermetrics --samplers gpu_power, sudo) · energy per token (powermetrics CPU+GPU+ANE package power × wall time / tokens) · correctness (argmax agreement and max |Δlogit| vs MLX-LM reference) · stability (variance across repeats).

# 5. Procedure

Fixed seeds; exact command recorded in each JSON; warm-up run discarded; benchmark order randomized per block (seeded); ≥ 5 repeats (bootstrap 95 % CI, 10 000 resamples); temperature/thermal pressure sampled every 1 s during runs (powermetrics --samplers thermal); hardware inventory hash attached; timers = time.perf_counter_ns on each node with a one-way clock-offset estimate from an NTP-style ping exchange before each distributed run; compilation/warm-up measured separately from steady state; different precisions never pooled in the same table without a precision column.

# 6. Ablation plan (factorial where feasible)

predictor ∈ {none, LRU, LFU, transition, learned} × prefetch depth ∈ {0, 1, 2 layers} × memory budget ∈ {25 %, 50 %, 75 %, 100 % of expert bytes} × placement ∈ {static-uniform, frequency, capacity-aware, topology-aware} × replication ∈ {0, 1 hot set} × transport ∈ {TCP LAN, (Thunderbolt/JACCL if cabled)} × kernels ∈ {stock MLX, TITAN Metal} × batch ∈ {1, 4, 8}. Interactions reported, including losses.

# 7. Statistical audit (Gate G)

Pre-registered primary endpoints: H1 decode tok/s at 50 % budget (predictor vs no-prefetch); H2 decode tok/s 2–4 nodes (topology-aware vs static); H3 tok/s vs budget curve AUC; H4 end-to-end decode tok/s (TITAN kernels vs stock); H5 hypervolume of the (latency, throughput, energy) Pareto set. Effects reported with CIs; p-values secondary.

Files · d3deca489711afcaa521d6c5c41bc20dea077b28
Menu

Theme