- generation:
- 13.9 tokens/s
- prompt processing (prefill):
- 1237.0 tokens/s
- quant:
- BF16 (MLX)
Reported by the source; GPU count, offloading and concurrent requests can change these figures. Prompt-processing speed is input throughput, not time to first token. Check the full setup before comparing.
NetworkChuck, measured 2026-09-20; recovered 2026-10-13, not locally rerun. Measurements/docs: CC BY 4.0. Native data: https://github.com/theNetworkChuck/mac-studio-m5-ultra-local-ai/blob/main/data/language-models/engine.json ; HTTP summary/raw: https://github.com/theNetworkChuck/mac-studio-m5-ultra-local-ai/blob/main/data/language-models/summary.json ; https://github.com/theNetworkChuck/mac-studio-m5-ultra-local-ai/blob/main/data/language-models/runs.jsonl . Method: https://github.com/theNetworkChuck/mac-studio-m5-ultra-local-ai/blob/main/docs/method.md . Merged suite window 14:41:54.718–16:55:25.045 UTC; native cells have no individual timestamps. Native 32768-input/128-output headline: PP=1236.992, TG=13.91 tokens/s, separate five-trial medians, not pooled across lengths. Input is exactly 32768 synthetic tokens. Configured KV capacity unknown and blank. Batch 1; one device. Hardware: Apple Mac Studio M5 Ultra (36-core CPU, 80-core GPU); 256GB installed unified memory; macOS27.0; applegpu_g17d; CPU composition 12 super+24 performance; 8TB storage. Unified RAM and allocator peaks are not dedicated VRAM. M5 was an Apple review loan. Comparator M3 used macOS26.5.1 and had a stuck indexer consuming one CPU core. OS/background effects were not isolated. Power, thermals, clocks, swap and offload count unknown. Model: mlx-community/gemma-4-31b-it-bf16; 16-bit (bf16); MLX Safetensors. Public identity/precision verified 2026-10-13: https://huggingface.co/mlx-community/gemma-4-31b-it-bf16 . Source labels dense, nominal total/active 31/31B; rounded labels, not exact architecture counts. Tested HF revision/hash and group/mixed-precision details unknown; weights not hash-checked. Current HF does not identify the historical snapshot/runtime. Runtime: mlx-lm0.31.3/MLX0.32.2; fingerprint 0.31.3-0.32.2-macOS-27.0-arm64-arm-64bit-applegpu_g17d. Harness command: mlx_lm.benchmark --model <folder> -p <input> -g 128 -n 5. Command/parser: https://github.com/theNetworkChuck/mac-studio-m5-ultra-local-ai/blob/main/harness/src/bench/ssh.ts ; https://github.com/theNetworkChuck/mac-studio-m5-ultra-local-ai/blob/main/harness/src/bench/engine.ts . Model already loaded; one discarded warm-up, five trials. Rates printed to 3 decimals; harness uses their median/min/max, not tool means. Versioned runtime semantics: https://github.com/ml-explore/mlx-lm/blob/v0.31.3/mlx_lm/benchmark.py and https://github.com/ml-explore/mlx-lm/blob/v0.31.3/mlx_lm/generate.py . Seed 0, random IDs rather than HTTP essay, EOS disabled, batch 1, default prefill step 2048, no trial delay. Native prompt_tps=prompt.size/time through first generated token; includes first-token work, not pure kernels. generation_tps=count/time after that boundary through final detokenization, count 128. Fresh KV each call: no prompt_cache passed. No draft/KV-quant/activation-quant flags; flash selection and build/source commit unknown. Native rows: input/output; PP/TG median[min,max] tokens/s; peak decimal GB; n trials: 512/128: PP=1128.726[1125.249,1129.814]; TG=15.797[15.773,15.808]; peak=62.369GB; n=5 4096/128: PP=1467.158[1466.061,1468.062]; TG=15.413[15.409,15.418]; peak=65.722GB; n=5 16384/128: PP=1381.849[1381.649,1383.683]; TG=14.784[14.747,14.791]; peak=68.424GB; n=5 32768/128: PP=1236.992[1235.416,1237.321]; TG=13.91[13.821,13.917]; peak=71.978GB; n=5 Peak=max printed MLX peak_memory, mx.get_peak_memory()/1e9 allocator high-water, not RSS/disk/RAM/VRAM. No trial reset shown; warm-up/earlier allocations may contribute. Load-time/energy unknown. HTTP: serial LAN streaming from separate controller; mlx_lm.server prompt-cache-size 0, thinking disabled, temperature 0, cap 128. Repeated sample.txt essay+summary instruction, unique run-ID prefix. One discarded warm-up+five measured requests/cell, 30-second rests; 100K has one measured run. Raw: cachedTokens 0, output 128, firstWordField=content. Uncached input, warm-loaded model; not cold loading. Controller monotonic timing starts before request; first nonempty text ends TTFT. Client read=input/TTFT; write=(output−1)/(last−first text time); total ends at stream completion. Network/HTTP included; not native PP/TG. Code: https://github.com/theNetworkChuck/mac-studio-m5-ultra-local-ai/blob/main/harness/src/lane.ts . HTTP rows: nominal; actual in/out; read/write tokens/s; first/total seconds; median[min,max], n. Shown to 10 significant digits; raw retains full precision. 512: in=509[508,510]; out=128[128,128]; read=727.3992766[726.0931339,727.7645023]; write=15.37374854[15.36803727,15.41293747]; first=0.701012[0.698028,0.701734]; total=8.961933[8.937977,8.964848]; n=5 4K: in=4097[4096,4098]; out=128[128,128]; read=1332.060865[1293.979757,1335.664659]; write=15.08621355[15.06871631,15.1194364]; first=3.076436[3.066638,3.166201]; total=11.492559[11.466502,11.594359]; n=5 16K: in=16259[16258,16259]; out=128[128,128]; read=1335.717216[1334.615825,1335.943596]; write=14.47164975[14.46916012,14.47692367]; first=12.171738[12.170424,12.182532]; total=20.949115[20.943445,20.956574]; n=5 32K: in=32480[32480,32482]; out=128[128,128]; read=1216.509244[1214.977339,1216.804155]; write=13.58385964[13.57196771,13.59763423]; first=26.699345[26.692874,26.734655]; total=36.04754[36.039337,36.081001]; n=5 Current HF card names upstream google/gemma-4-31B-it revision3548789868c5356dbf307c98e6f609007b82b3eb; this is not the measured MLX snapshot revision. No independent model-quality validation.