SPB Git

spb/wp33_uqo

Public MIT

H4: fused up+gate option (bit-identical, no end-to-end gain), D-011, LOG

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Nov 1, 2026) parent cace064 Browse files

17 changed files +475 −13

added benchmarks/raw/gateD/fused_upgate_laptop.jsonl +44 −0
@@ -0,0 +1,44 @@
1+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": true, "repeat": -1, "family": "code", "prompt": "Write a C function that computes the dot product of two floa", "ts": "2026-11-01T01:06:41", "prompt_tokens": 24, "gen_tokens": 128, "ttft_ms": 177.01141606085002, "prompt_tps": 230.10528186821946, "gen_tps": 466.2156772912158, "decode_tps_wall": 462.75139659414134, "itl_ms_p50": 2.1326669957488775, "itl_ms_p95": 2.2580419899895787, "itl_ms_p99": 2.3547919699922204, "itl_ms_mean": 2.1609875353375876, "total_s": 0.45145683304872364, "peak_mem_gb": 7.517514916, "text": "#include <arm_neon.h>\n\nfloat dot_product_neon(const float *a, const float *b, int len) {\n // TODO: Implement the dot product computation using NEON intrinsics\n // Start by loading the arrays int", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 19456, "stall_s": 0.0, "hits_device": 19456, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
2+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": true, "repeat": -1, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:06:41", "prompt_tokens": 18, "gen_tokens": 128, "ttft_ms": 18.057624925859272, "prompt_tps": 1018.8582776190254, "gen_tps": 469.84237596223863, "decode_tps_wall": 466.1974711911856, "itl_ms_p50": 2.135292044840753, "itl_ms_p95": 2.321208012290299, "itl_ms_p99": 2.483790973201394, "itl_ms_mean": 2.1450137802011033, "total_s": 0.2904743750113994, "peak_mem_gb": 3.946820152, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18688, "stall_s": 0.0, "hits_device": 18688, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
3+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": true, "repeat": -1, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:06:41", "prompt_tokens": 14, "gen_tokens": 128, "ttft_ms": 15.056625008583069, "prompt_tps": 951.0815272644511, "gen_tps": 471.993805082216, "decode_tps_wall": 468.3578763689269, "itl_ms_p50": 2.1342089166864753, "itl_ms_p95": 2.1952498937025666, "itl_ms_p99": 2.312749973498285, "itl_ms_mean": 2.135119425668198, "total_s": 0.2862167920684442, "peak_mem_gb": 3.942157336, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18176, "stall_s": 0.0, "hits_device": 18176, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
4+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": true, "repeat": -1, "family": "code", "prompt": "Write a bash script that lists the ten largest files under a", "ts": "2026-11-01T01:06:42", "prompt_tokens": 19, "gen_tokens": 128, "ttft_ms": 17.900791950523853, "prompt_tps": 1081.0708656986121, "gen_tps": 474.8688198372162, "decode_tps_wall": 471.18265088096837, "itl_ms_p50": 2.1197920432314277, "itl_ms_p95": 2.1593329729512334, "itl_ms_p99": 2.241124981082976, "itl_ms_mean": 2.12231922828717, "total_s": 0.2874353339429945, "peak_mem_gb": 3.947544744, "text": "#!/bin/bash\n\n# Specify the directory\ndir=\"/path/to/directory\"\n\n# Get the size of each file and store it in an array\nfiles=( $(ls -l \"$dir\" | awk '{print $5, $9}') )\n\n# Sort the array in descending ord", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18816, "stall_s": 0.0, "hits_device": 18816, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
5+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 0, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:06:42", "prompt_tokens": 18, "gen_tokens": 128, "ttft_ms": 17.455957946367562, "prompt_tps": 1049.404629412306, "gen_tps": 475.9746674891722, "decode_tps_wall": 472.2963634698472, "itl_ms_p50": 2.112540998496115, "itl_ms_p95": 2.163541968911886, "itl_ms_p99": 2.217415953055024, "itl_ms_mean": 2.1173146298507186, "total_s": 0.2863549159374088, "peak_mem_gb": 3.946820184, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18688, "stall_s": 0.0, "hits_device": 18688, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
6+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 0, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:06:42", "prompt_tokens": 14, "gen_tokens": 128, "ttft_ms": 14.808875042945147, "prompt_tps": 964.2066564761129, "gen_tps": 478.1214323668085, "decode_tps_wall": 474.4131310368526, "itl_ms_p50": 2.103666076436639, "itl_ms_p95": 2.180917072109878, "itl_ms_p99": 2.2453339770436287, "itl_ms_mean": 2.107867456818601, "total_s": 0.28250804205890745, "peak_mem_gb": 3.942157336, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18176, "stall_s": 0.0, "hits_device": 18176, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
7+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 0, "family": "code", "prompt": "Write a bash script that lists the ten largest files under a", "ts": "2026-11-01T01:06:43", "prompt_tokens": 19, "gen_tokens": 128, "ttft_ms": 17.075874959118664, "prompt_tps": 1131.7299072899439, "gen_tps": 476.5103798560332, "decode_tps_wall": 472.8063457683306, "itl_ms_p50": 2.10920802783221, "itl_ms_p95": 2.178249997086823, "itl_ms_p99": 2.2645830176770687, "itl_ms_mean": 2.115030834399985, "total_s": 0.28568479092791677, "peak_mem_gb": 3.947544872, "text": "#!/bin/bash\n\n# Specify the directory\ndir=\"/path/to/directory\"\n\n# Get the size of each file and store it in an array\nfiles=( $(ls -l \"$dir\" | awk '{print $5, $9}') )\n\n# Sort the array in descending ord", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18816, "stall_s": 0.0, "hits_device": 18816, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
8+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 0, "family": "code", "prompt": "Write a C function that computes the dot product of two floa", "ts": "2026-11-01T01:06:43", "prompt_tokens": 24, "gen_tokens": 128, "ttft_ms": 19.52750002965331, "prompt_tps": 1248.0093594150308, "gen_tps": 475.513603461317, "decode_tps_wall": 471.82297344730034, "itl_ms_p50": 2.11908295750618, "itl_ms_p95": 2.1637079771608114, "itl_ms_p99": 2.2033749846741557, "itl_ms_mean": 2.1194389766434165, "total_s": 0.2886962500633672, "peak_mem_gb": 3.953051704, "text": "#include <arm_neon.h>\n\nfloat dot_product_neon(const float *a, const float *b, int len) {\n // TODO: Implement the dot product computation using NEON intrinsics\n // Start by loading the arrays int", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 19456, "stall_s": 0.0, "hits_device": 19456, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
9+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 1, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:06:43", "prompt_tokens": 18, "gen_tokens": 128, "ttft_ms": 16.85104100033641, "prompt_tps": 1089.4564771153916, "gen_tps": 476.92043596219264, "decode_tps_wall": 473.26282300162484, "itl_ms_p50": 2.1063750609755516, "itl_ms_p95": 2.187625039368868, "itl_ms_p99": 2.3768749088048935, "itl_ms_mean": 2.1129908190497497, "total_s": 0.28520087501965463, "peak_mem_gb": 3.946820184, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18688, "stall_s": 0.0, "hits_device": 18688, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
10+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 1, "family": "code", "prompt": "Write a C function that computes the dot product of two floa", "ts": "2026-11-01T01:06:43", "prompt_tokens": 24, "gen_tokens": 128, "ttft_ms": 19.51162493787706, "prompt_tps": 1248.8428017209253, "gen_tps": 477.1197629427126, "decode_tps_wall": 473.4154238610723, "itl_ms_p50": 2.106957952491939, "itl_ms_p95": 2.1720000077039003, "itl_ms_p99": 2.2574999602511525, "itl_ms_mean": 2.112309717001232, "total_s": 0.28777495899703354, "peak_mem_gb": 3.953051704, "text": "#include <arm_neon.h>\n\nfloat dot_product_neon(const float *a, const float *b, int len) {\n // TODO: Implement the dot product computation using NEON intrinsics\n // Start by loading the arrays int", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 19456, "stall_s": 0.0, "hits_device": 19456, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
11+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 1, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:06:44", "prompt_tokens": 14, "gen_tokens": 128, "ttft_ms": 14.870124985463917, "prompt_tps": 959.0381777695666, "gen_tps": 478.35259781253416, "decode_tps_wall": 474.6442942785637, "itl_ms_p50": 2.0985000301152468, "itl_ms_p95": 2.1472909720614552, "itl_ms_p99": 2.3588750045746565, "itl_ms_mean": 2.106840874427768, "total_s": 0.2824389160377905, "peak_mem_gb": 3.942157336, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18176, "stall_s": 0.0, "hits_device": 18176, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
12+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 1, "family": "code", "prompt": "Write a bash script that lists the ten largest files under a", "ts": "2026-11-01T01:06:44", "prompt_tokens": 19, "gen_tokens": 128, "ttft_ms": 17.31679099611938, "prompt_tps": 1118.7630575195694, "gen_tps": 479.1576546218645, "decode_tps_wall": 475.4627365885211, "itl_ms_p50": 2.101333113387227, "itl_ms_p95": 2.1635829471051693, "itl_ms_p99": 2.2607920691370964, "itl_ms_mean": 2.103214243822914, "total_s": 0.2844249999616295, "peak_mem_gb": 3.947544744, "text": "#!/bin/bash\n\n# Specify the directory\ndir=\"/path/to/directory\"\n\n# Get the size of each file and store it in an array\nfiles=( $(ls -l \"$dir\" | awk '{print $5, $9}') )\n\n# Sort the array in descending ord", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18816, "stall_s": 0.0, "hits_device": 18816, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
13+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 2, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:06:44", "prompt_tokens": 14, "gen_tokens": 128, "ttft_ms": 15.212749945931137, "prompt_tps": 938.1543832710931, "gen_tps": 476.5166630608598, "decode_tps_wall": 472.8202076264505, "itl_ms_p50": 2.1027500042691827, "itl_ms_p95": 2.181125106289983, "itl_ms_p99": 2.491666004061699, "itl_ms_mean": 2.1149688271996308, "total_s": 0.28381379100028425, "peak_mem_gb": 3.942157336, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18176, "stall_s": 0.0, "hits_device": 18176, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
14+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 2, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:06:45", "prompt_tokens": 18, "gen_tokens": 128, "ttft_ms": 16.84241695329547, "prompt_tps": 1087.106981457429, "gen_tps": 478.2659870119669, "decode_tps_wall": 474.5576826928259, "itl_ms_p50": 2.101082936860621, "itl_ms_p95": 2.1624999353662133, "itl_ms_p99": 2.2267079912126064, "itl_ms_mean": 2.1072253942357624, "total_s": 0.2844600420212373, "peak_mem_gb": 3.946820472, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18688, "stall_s": 0.0, "hits_device": 18688, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
15+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 2, "family": "code", "prompt": "Write a bash script that lists the ten largest files under a", "ts": "2026-11-01T01:06:45", "prompt_tokens": 19, "gen_tokens": 128, "ttft_ms": 17.038708901964128, "prompt_tps": 1133.795306380973, "gen_tps": 469.16872744528797, "decode_tps_wall": 465.5192715391711, "itl_ms_p50": 2.114000031724572, "itl_ms_p95": 2.423083991743624, "itl_ms_p99": 2.631459035910666, "itl_ms_mean": 2.148138779934173, "total_s": 0.2898523339536041, "peak_mem_gb": 3.947544744, "text": "#!/bin/bash\n\n# Specify the directory\ndir=\"/path/to/directory\"\n\n# Get the size of each file and store it in an array\nfiles=( $(ls -l \"$dir\" | awk '{print $5, $9}') )\n\n# Sort the array in descending ord", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18816, "stall_s": 0.0, "hits_device": 18816, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
16+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 2, "family": "code", "prompt": "Write a C function that computes the dot product of two floa", "ts": "2026-11-01T01:06:45", "prompt_tokens": 24, "gen_tokens": 128, "ttft_ms": 19.673915929161012, "prompt_tps": 1239.170743989811, "gen_tps": 471.0410199919853, "decode_tps_wall": 467.39096932856233, "itl_ms_p50": 2.1274170139804482, "itl_ms_p95": 2.3330000694841146, "itl_ms_p99": 2.524208975955844, "itl_ms_mean": 2.1395364173094, "total_s": 0.29139504092745483, "peak_mem_gb": 3.953051704, "text": "#include <arm_neon.h>\n\nfloat dot_product_neon(const float *a, const float *b, int len) {\n // TODO: Implement the dot product computation using NEON intrinsics\n // Start by loading the arrays int", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 19456, "stall_s": 0.0, "hits_device": 19456, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
17+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": true, "repeat": -1, "family": "code", "prompt": "Write a C function that computes the dot product of two floa", "ts": "2026-11-01T01:06:47", "prompt_tokens": 24, "gen_tokens": 128, "ttft_ms": 165.26212496683002, "prompt_tps": 215.50933792523645, "gen_tps": 466.69723294333704, "decode_tps_wall": 463.25145474699633, "itl_ms_p50": 2.126040984876454, "itl_ms_p95": 2.2619590163230896, "itl_ms_p99": 2.4102909956127405, "itl_ms_mean": 2.1586548509516232, "total_s": 0.43941129103768617, "peak_mem_gb": 7.51646634, "text": "#include <arm_neon.h>\n\nfloat dot_product_neon(const float *a, const float *b, int len) {\n // TODO: Implement the dot product computation using NEON intrinsics\n // Start by loading the arrays int", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 19456, "stall_s": 0.0, "hits_device": 19456, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
18+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": true, "repeat": -1, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:06:47", "prompt_tokens": 18, "gen_tokens": 128, "ttft_ms": 18.148500006645918, "prompt_tps": 1011.309363793333, "gen_tps": 471.7557004320082, "decode_tps_wall": 468.0941172517588, "itl_ms_p50": 2.127625048160553, "itl_ms_p95": 2.199208945967257, "itl_ms_p99": 2.30004102922976, "itl_ms_mean": 2.1363225111033857, "total_s": 0.2894614589167759, "peak_mem_gb": 3.94988268, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18688, "stall_s": 0.0, "hits_device": 18688, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
19+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": true, "repeat": -1, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:06:47", "prompt_tokens": 14, "gen_tokens": 128, "ttft_ms": 15.495207975618541, "prompt_tps": 921.9194817022121, "gen_tps": 475.8443913546786, "decode_tps_wall": 472.159403329385, "itl_ms_p50": 2.1141659235581756, "itl_ms_p95": 2.1992919500917196, "itl_ms_p99": 2.228708937764168, "itl_ms_mean": 2.1179288031724024, "total_s": 0.28447216597851366, "peak_mem_gb": 3.944499772, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18176, "stall_s": 0.0, "hits_device": 18176, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
20+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": true, "repeat": -1, "family": "code", "prompt": "Write a bash script that lists the ten largest files under a", "ts": "2026-11-01T01:06:48", "prompt_tokens": 19, "gen_tokens": 128, "ttft_ms": 17.993542016483843, "prompt_tps": 1075.1775467753062, "gen_tps": 471.96269652821604, "decode_tps_wall": 468.29275502364845, "itl_ms_p50": 2.1251249127089977, "itl_ms_p95": 2.1901250584051013, "itl_ms_p99": 2.5822919560596347, "itl_ms_mean": 2.135416337904909, "total_s": 0.2891914169304073, "peak_mem_gb": 3.950787496, "text": "#!/bin/bash\n\n# Specify the directory\ndir=\"/path/to/directory\"\n\n# Get the size of each file and store it in an array\nfiles=( $(ls -l \"$dir\" | awk '{print $5, $9}') )\n\n# Sort the array in descending ord", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18816, "stall_s": 0.0, "hits_device": 18816, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
21+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 0, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:06:48", "prompt_tokens": 18, "gen_tokens": 128, "ttft_ms": 18.13204202335328, "prompt_tps": 1009.5156397962792, "gen_tps": 471.7557006344194, "decode_tps_wall": 468.10080446185657, "itl_ms_p50": 2.1292499732226133, "itl_ms_p95": 2.212124993093312, "itl_ms_p99": 2.387166954576969, "itl_ms_mean": 2.1362919919559453, "total_s": 0.28944112500175834, "peak_mem_gb": 3.949882712, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18688, "stall_s": 0.0, "hits_device": 18688, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
22+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 0, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:06:48", "prompt_tokens": 14, "gen_tokens": 128, "ttft_ms": 15.905790962278843, "prompt_tps": 896.521155995377, "gen_tps": 472.18736363415024, "decode_tps_wall": 468.51950139715996, "itl_ms_p50": 2.1322499960660934, "itl_ms_p95": 2.187957987189293, "itl_ms_p99": 2.248666947707534, "itl_ms_mean": 2.1343828741769033, "total_s": 0.2869724159827456, "peak_mem_gb": 3.944499728, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18176, "stall_s": 0.0, "hits_device": 18176, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
23+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 0, "family": "code", "prompt": "Write a bash script that lists the ten largest files under a", "ts": "2026-11-01T01:06:49", "prompt_tokens": 19, "gen_tokens": 128, "ttft_ms": 17.9117500083521, "prompt_tps": 1078.3303110189013, "gen_tps": 476.2721280273654, "decode_tps_wall": 472.58913259020215, "itl_ms_p50": 2.1143340272828937, "itl_ms_p95": 2.1598339080810547, "itl_ms_p99": 2.2200000239536166, "itl_ms_mean": 2.116002952753324, "total_s": 0.2866441250080243, "peak_mem_gb": 3.950787496, "text": "#!/bin/bash\n\n# Specify the directory\ndir=\"/path/to/directory\"\n\n# Get the size of each file and store it in an array\nfiles=( $(ls -l \"$dir\" | awk '{print $5, $9}') )\n\n# Sort the array in descending ord", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18816, "stall_s": 0.0, "hits_device": 18816, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
24+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 0, "family": "code", "prompt": "Write a C function that computes the dot product of two floa", "ts": "2026-11-01T01:06:49", "prompt_tokens": 24, "gen_tokens": 128, "ttft_ms": 20.56737500242889, "prompt_tps": 1183.7724361381604, "gen_tps": 475.2403930888485, "decode_tps_wall": 471.5498282559033, "itl_ms_p50": 2.115415991283953, "itl_ms_p95": 2.222833107225597, "itl_ms_p99": 2.2980840876698494, "itl_ms_mean": 2.1206666614610965, "total_s": 0.28989204100798815, "peak_mem_gb": 3.957195576, "text": "#include <arm_neon.h>\n\nfloat dot_product_neon(const float *a, const float *b, int len) {\n // TODO: Implement the dot product computation using NEON intrinsics\n // Start by loading the arrays int", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 19456, "stall_s": 0.0, "hits_device": 19456, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
25+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 1, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:06:49", "prompt_tokens": 18, "gen_tokens": 128, "ttft_ms": 17.71008304785937, "prompt_tps": 1034.0593304317879, "gen_tps": 475.94111353822353, "decode_tps_wall": 472.24118883134906, "itl_ms_p50": 2.105583087541163, "itl_ms_p95": 2.188208978623152, "itl_ms_p99": 2.348250010982156, "itl_ms_mean": 2.1175620078263204, "total_s": 0.28664045804180205, "peak_mem_gb": 3.949884344, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18688, "stall_s": 0.0, "hits_device": 18688, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
26+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 1, "family": "code", "prompt": "Write a C function that computes the dot product of two floa", "ts": "2026-11-01T01:06:49", "prompt_tokens": 24, "gen_tokens": 128, "ttft_ms": 20.444083958864212, "prompt_tps": 1191.2147922407296, "gen_tps": 476.044147655217, "decode_tps_wall": 472.35996799441875, "itl_ms_p50": 2.1111670648679137, "itl_ms_p95": 2.1552909165620804, "itl_ms_p99": 2.2996250772848725, "itl_ms_mean": 2.1170295278109084, "total_s": 0.28930683399084955, "peak_mem_gb": 3.957195576, "text": "#include <arm_neon.h>\n\nfloat dot_product_neon(const float *a, const float *b, int len) {\n // TODO: Implement the dot product computation using NEON intrinsics\n // Start by loading the arrays int", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 19456, "stall_s": 0.0, "hits_device": 19456, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
27+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 1, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:06:50", "prompt_tokens": 14, "gen_tokens": 128, "ttft_ms": 15.510457917116582, "prompt_tps": 919.3489966337015, "gen_tps": 476.5911815968909, "decode_tps_wall": 472.88446578718145, "itl_ms_p50": 2.1106250351294875, "itl_ms_p95": 2.151083084754646, "itl_ms_p99": 2.260874956846237, "itl_ms_mean": 2.1146814335196273, "total_s": 0.28407499997410923, "peak_mem_gb": 3.944499728, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18176, "stall_s": 0.0, "hits_device": 18176, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
28+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 1, "family": "code", "prompt": "Write a bash script that lists the ten largest files under a", "ts": "2026-11-01T01:06:50", "prompt_tokens": 19, "gen_tokens": 128, "ttft_ms": 18.18541600368917, "prompt_tps": 1062.0928524810645, "gen_tps": 476.3654803094771, "decode_tps_wall": 472.6674026330318, "itl_ms_p50": 2.1097909193485975, "itl_ms_p95": 2.2012500558048487, "itl_ms_p99": 2.3141249548643827, "itl_ms_mean": 2.1156525591344346, "total_s": 0.28687329101376235, "peak_mem_gb": 3.950787496, "text": "#!/bin/bash\n\n# Specify the directory\ndir=\"/path/to/directory\"\n\n# Get the size of each file and store it in an array\nfiles=( $(ls -l \"$dir\" | awk '{print $5, $9}') )\n\n# Sort the array in descending ord", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18816, "stall_s": 0.0, "hits_device": 18816, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
29+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 2, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:06:50", "prompt_tokens": 14, "gen_tokens": 128, "ttft_ms": 15.221082954667509, "prompt_tps": 936.5096616277453, "gen_tps": 476.20051576548343, "decode_tps_wall": 472.5058340647698, "itl_ms_p50": 2.114500035531819, "itl_ms_p95": 2.167958067730069, "itl_ms_p99": 2.2459999890998006, "itl_ms_mean": 2.1163759850273567, "total_s": 0.28400083305314183, "peak_mem_gb": 3.944499728, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18176, "stall_s": 0.0, "hits_device": 18176, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
30+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 2, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:06:51", "prompt_tokens": 18, "gen_tokens": 128, "ttft_ms": 17.722124932333827, "prompt_tps": 1033.3198028312963, "gen_tps": 474.6774560435246, "decode_tps_wall": 471.0001864370686, "itl_ms_p50": 2.117958036251366, "itl_ms_p95": 2.1828749449923635, "itl_ms_p99": 2.2671250626444817, "itl_ms_mean": 2.1231414101225887, "total_s": 0.2873610840179026, "peak_mem_gb": 3.949882712, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18688, "stall_s": 0.0, "hits_device": 18688, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
31+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 2, "family": "code", "prompt": "Write a bash script that lists the ten largest files under a", "ts": "2026-11-01T01:06:51", "prompt_tokens": 19, "gen_tokens": 128, "ttft_ms": 18.543249927461147, "prompt_tps": 1041.6309726034099, "gen_tps": 472.5988794256199, "decode_tps_wall": 468.92408688751465, "itl_ms_p50": 2.126542036421597, "itl_ms_p95": 2.1929580252617598, "itl_ms_p99": 2.2500839550048113, "itl_ms_mean": 2.1325413387004786, "total_s": 0.2893759999424219, "peak_mem_gb": 3.950787496, "text": "#!/bin/bash\n\n# Specify the directory\ndir=\"/path/to/directory\"\n\n# Get the size of each file and store it in an array\nfiles=( $(ls -l \"$dir\" | awk '{print $5, $9}') )\n\n# Sort the array in descending ord", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 18816, "stall_s": 0.0, "hits_device": 18816, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
32+{"backend": "titan", "capacity": 64, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": false, "max_tokens": 128, "split": "heldout", "tag": "h4", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 64 --fused-upgate --families general,code --split heldout --repeats 3 --max-tokens 128 --tag h4 --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 2, "family": "code", "prompt": "Write a C function that computes the dot product of two floa", "ts": "2026-11-01T01:06:51", "prompt_tokens": 24, "gen_tokens": 128, "ttft_ms": 21.326875081285834, "prompt_tps": 1142.723392916591, "gen_tps": 474.49350346893976, "decode_tps_wall": 470.8273938883396, "itl_ms_p50": 2.1198750473558903, "itl_ms_p95": 2.1884170128032565, "itl_ms_p99": 2.318000071682036, "itl_ms_mean": 2.1239205980380103, "total_s": 0.29106479103211313, "peak_mem_gb": 3.957195576, "text": "#include <arm_neon.h>\n\nfloat dot_product_neon(const float *a, const float *b, int len) {\n // TODO: Implement the dot product computation using NEON intrinsics\n // Start by loading the arrays int", "cache_hit_rate": 1.0, "cache_misses": 0, "cache_hits": 19456, "stall_s": 0.0, "hits_device": 19456, "layers_complete": 16, "prefetch": null, "host_time_s": {"sync": 0.0, "prefetch": 0.0, "ensure": 0.0, "build": 0.0}, "ssd_bytes": 0, "ssd_read_s": 0.0}
33+{"backend": "titan", "capacity": 16, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": true, "max_tokens": 64, "split": "heldout", "tag": "h4cold", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 16 --nocache --families general --split heldout --repeats 2 --max-tokens 64 --tag h4cold --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": true, "repeat": -1, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:06:56", "prompt_tokens": 18, "gen_tokens": 64, "ttft_ms": 509.02408303227276, "prompt_tps": 35.73834471353411, "gen_tps": 34.89829624574833, "decode_tps_wall": 34.35433804273914, "itl_ms_p50": 28.902916936203837, "itl_ms_p95": 36.63920809049159, "itl_ms_p99": 37.38491702824831, "itl_ms_mean": 29.10840542920466, "total_s": 2.3428536250721663, "peak_mem_gb": 1.828940896, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 0.4996987346856799, "cache_misses": 4982, "cache_hits": 4976, "stall_s": 1.289125535171479, "hits_device": 0, "layers_complete": 0, "prefetch": null, "host_time_s": {"sync": 0.9331700016045943, "prefetch": 0.0, "ensure": 1.3245696239173412, "build": 0.015016207005828619}, "ssd_bytes": 17631019008, "ssd_read_s": 3.3432891925331205}
34+{"backend": "titan", "capacity": 16, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": true, "max_tokens": 64, "split": "heldout", "tag": "h4cold", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 16 --nocache --families general --split heldout --repeats 2 --max-tokens 64 --tag h4cold --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": true, "repeat": -1, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:06:59", "prompt_tokens": 14, "gen_tokens": 64, "ttft_ms": 338.20858399849385, "prompt_tps": 41.43426177469012, "gen_tps": 34.82523491580805, "decode_tps_wall": 34.28125229409495, "itl_ms_p50": 29.31591705419123, "itl_ms_p95": 35.23450007196516, "itl_ms_p99": 40.71616707369685, "itl_ms_mean": 29.170462952202392, "total_s": 2.1759477499872446, "peak_mem_gb": 1.747773596, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 0.4795243019648397, "cache_misses": 5033, "cache_hits": 4637, "stall_s": 1.177383731934242, "hits_device": 0, "layers_complete": 0, "prefetch": null, "host_time_s": {"sync": 0.8922600832302123, "prefetch": 0.0, "ensure": 1.2113585822517052, "build": 0.013373404275625944}, "ssd_bytes": 17811505152, "ssd_read_s": 3.020757145364769}
35+{"backend": "titan", "capacity": 16, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": true, "max_tokens": 64, "split": "heldout", "tag": "h4cold", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 16 --nocache --families general --split heldout --repeats 2 --max-tokens 64 --tag h4cold --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 0, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:07:01", "prompt_tokens": 18, "gen_tokens": 64, "ttft_ms": 363.73324994929135, "prompt_tps": 49.5288965429815, "gen_tps": 35.49684771325741, "decode_tps_wall": 34.94240650851872, "itl_ms_p50": 28.25116692110896, "itl_ms_p95": 35.710333031602204, "itl_ms_p99": 36.618457990698516, "itl_ms_mean": 28.618521158701725, "total_s": 2.1667000829475, "peak_mem_gb": 1.814131816, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 0.5051215103434424, "cache_misses": 4928, "cache_hits": 5030, "stall_s": 1.1643402928020805, "hits_device": 0, "layers_complete": 0, "prefetch": null, "host_time_s": {"sync": 0.8979050103807822, "prefetch": 0.0, "ensure": 1.1978196839336306, "build": 0.013060825411230326}, "ssd_bytes": 17439916032, "ssd_read_s": 2.947904617409222}
36+{"backend": "titan", "capacity": 16, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": true, "max_tokens": 64, "split": "heldout", "tag": "h4cold", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 16 --nocache --families general --split heldout --repeats 2 --max-tokens 64 --tag h4cold --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 0, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:07:03", "prompt_tokens": 14, "gen_tokens": 64, "ttft_ms": 333.8422499364242, "prompt_tps": 41.97274403131517, "gen_tps": 34.74805813357175, "decode_tps_wall": 34.205311643181, "itl_ms_p50": 29.274958069436252, "itl_ms_p95": 36.77858307491988, "itl_ms_p99": 42.29045799002051, "itl_ms_mean": 29.235225523792444, "total_s": 2.175661457935348, "peak_mem_gb": 1.747773596, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 0.4795243019648397, "cache_misses": 5033, "cache_hits": 4637, "stall_s": 1.1736370454309508, "hits_device": 0, "layers_complete": 0, "prefetch": null, "host_time_s": {"sync": 0.8943086207145825, "prefetch": 0.0, "ensure": 1.2081806826172397, "build": 0.013545182067900896}, "ssd_bytes": 17811505152, "ssd_read_s": 3.007352648768574}
37+{"backend": "titan", "capacity": 16, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": true, "max_tokens": 64, "split": "heldout", "tag": "h4cold", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 16 --nocache --families general --split heldout --repeats 2 --max-tokens 64 --tag h4cold --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 1, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:07:05", "prompt_tokens": 14, "gen_tokens": 64, "ttft_ms": 328.8465840741992, "prompt_tps": 42.61085317189406, "gen_tps": 34.12741716795578, "decode_tps_wall": 33.59438078040125, "itl_ms_p50": 29.65670800767839, "itl_ms_p95": 37.19250007998198, "itl_ms_p99": 38.557250052690506, "itl_ms_mean": 29.766882936071074, "total_s": 2.2041602090466768, "peak_mem_gb": 1.742956696, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 0.4792140641158221, "cache_misses": 5036, "cache_hits": 4634, "stall_s": 1.1849162945291027, "hits_device": 0, "layers_complete": 0, "prefetch": null, "host_time_s": {"sync": 0.9102242069784552, "prefetch": 0.0, "ensure": 1.2197378674754873, "build": 0.013878854690119624}, "ssd_bytes": 17822121984, "ssd_read_s": 3.036324087763205}
38+{"backend": "titan", "capacity": 16, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": false, "nocache": true, "max_tokens": 64, "split": "heldout", "tag": "h4cold", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 16 --nocache --families general --split heldout --repeats 2 --max-tokens 64 --tag h4cold --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 1, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:07:07", "prompt_tokens": 18, "gen_tokens": 64, "ttft_ms": 361.56574997585267, "prompt_tps": 49.82421394186189, "gen_tps": 35.22362345077841, "decode_tps_wall": 34.673477778472595, "itl_ms_p50": 28.222166933119297, "itl_ms_p95": 37.02070808503777, "itl_ms_p99": 37.528582965023816, "itl_ms_mean": 28.84048742929562, "total_s": 2.178516458021477, "peak_mem_gb": 1.832236648, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 0.5051215103434424, "cache_misses": 4928, "cache_hits": 5030, "stall_s": 1.1694396163802594, "hits_device": 0, "layers_complete": 0, "prefetch": null, "host_time_s": {"sync": 0.9005625589052215, "prefetch": 0.0, "ensure": 1.2035732921212912, "build": 0.01388121210038662}, "ssd_bytes": 17439916032, "ssd_read_s": 2.9596585909603164}
39+{"backend": "titan", "capacity": 16, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": true, "max_tokens": 64, "split": "heldout", "tag": "h4cold", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 16 --nocache --fused-upgate --families general --split heldout --repeats 2 --max-tokens 64 --tag h4cold --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": true, "repeat": -1, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:08:03", "prompt_tokens": 18, "gen_tokens": 64, "ttft_ms": 496.6653750743717, "prompt_tps": 36.60443683584032, "gen_tps": 36.22008939782116, "decode_tps_wall": 35.65540495649015, "itl_ms_p50": 27.774208108894527, "itl_ms_p95": 35.333832958713174, "itl_ms_p99": 36.814124905504286, "itl_ms_mean": 28.046238746139267, "total_s": 2.2635784160811454, "peak_mem_gb": 1.864003244, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 0.4996987346856799, "cache_misses": 4982, "cache_hits": 4976, "stall_s": 1.2166888730134815, "hits_device": 0, "layers_complete": 0, "prefetch": null, "host_time_s": {"sync": 0.9257144854636863, "prefetch": 0.0, "ensure": 1.2605141607346013, "build": 0.015654621878638864}, "ssd_bytes": 17631019008, "ssd_read_s": 3.189087452017702}
40+{"backend": "titan", "capacity": 16, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": true, "max_tokens": 64, "split": "heldout", "tag": "h4cold", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 16 --nocache --fused-upgate --families general --split heldout --repeats 2 --max-tokens 64 --tag h4cold --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": true, "repeat": -1, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:08:05", "prompt_tokens": 14, "gen_tokens": 64, "ttft_ms": 326.541083981283, "prompt_tps": 42.91268303949574, "gen_tps": 35.87484164722787, "decode_tps_wall": 35.31447211732052, "itl_ms_p50": 28.75645796302706, "itl_ms_p95": 34.86720798537135, "itl_ms_p99": 37.19612490385771, "itl_ms_mean": 28.317002635005686, "total_s": 2.110512249986641, "peak_mem_gb": 1.746725032, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 0.4795243019648397, "cache_misses": 5033, "cache_hits": 4637, "stall_s": 1.0981717519462109, "hits_device": 0, "layers_complete": 0, "prefetch": null, "host_time_s": {"sync": 0.9042589163873345, "prefetch": 0.0, "ensure": 1.140350486151874, "build": 0.014142651460133493}, "ssd_bytes": 17811505152, "ssd_read_s": 2.8360282777575776}
41+{"backend": "titan", "capacity": 16, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": true, "max_tokens": 64, "split": "heldout", "tag": "h4cold", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 16 --nocache --fused-upgate --families general --split heldout --repeats 2 --max-tokens 64 --tag h4cold --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 0, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:08:07", "prompt_tokens": 18, "gen_tokens": 64, "ttft_ms": 357.7941249823198, "prompt_tps": 50.34766699855101, "gen_tps": 36.7122725819878, "decode_tps_wall": 36.13883851977796, "itl_ms_p50": 27.232249965891242, "itl_ms_p95": 34.15624995250255, "itl_ms_p99": 35.93637503217906, "itl_ms_mean": 27.67106085749609, "total_s": 2.1010709590045735, "peak_mem_gb": 1.867658592, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 0.5051215103434424, "cache_misses": 4928, "cache_hits": 5030, "stall_s": 1.0908377423183993, "hits_device": 0, "layers_complete": 0, "prefetch": null, "host_time_s": {"sync": 0.9000721363117918, "prefetch": 0.0, "ensure": 1.1332209592219442, "build": 0.014746330329217017}, "ssd_bytes": 17439916032, "ssd_read_s": 2.7703513847664}
42+{"backend": "titan", "capacity": 16, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": true, "max_tokens": 64, "split": "heldout", "tag": "h4cold", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 16 --nocache --fused-upgate --families general --split heldout --repeats 2 --max-tokens 64 --tag h4cold --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 0, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:08:09", "prompt_tokens": 14, "gen_tokens": 64, "ttft_ms": 325.9598339209333, "prompt_tps": 42.985402656967416, "gen_tps": 35.731574910456565, "decode_tps_wall": 35.17345480358964, "itl_ms_p50": 28.474542079493403, "itl_ms_p95": 35.25049996096641, "itl_ms_p99": 39.2254579346627, "itl_ms_mean": 28.430531080442645, "total_s": 2.11708329198882, "peak_mem_gb": 1.746921672, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 0.4795243019648397, "cache_misses": 5033, "cache_hits": 4637, "stall_s": 1.099285450996831, "hits_device": 0, "layers_complete": 0, "prefetch": null, "host_time_s": {"sync": 0.9104035201016814, "prefetch": 0.0, "ensure": 1.1411683596670628, "build": 0.01404361822642386}, "ssd_bytes": 17811505152, "ssd_read_s": 2.845907957991585}
43+{"backend": "titan", "capacity": 16, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": true, "max_tokens": 64, "split": "heldout", "tag": "h4cold", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 16 --nocache --fused-upgate --families general --split heldout --repeats 2 --max-tokens 64 --tag h4cold --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 1, "family": "general", "prompt": "Summarize the history of the Rideau Canal in one paragraph.", "ts": "2026-11-01T01:08:11", "prompt_tokens": 14, "gen_tokens": 64, "ttft_ms": 323.81104200612754, "prompt_tps": 43.27260405592269, "gen_tps": 35.924731226734686, "decode_tps_wall": 35.36358597500653, "itl_ms_p50": 28.364958008751273, "itl_ms_p95": 34.81895907316357, "itl_ms_p99": 38.616125006228685, "itl_ms_mean": 28.27767525348694, "total_s": 2.105304582975805, "peak_mem_gb": 1.750263976, "text": "\n\nThe Rideau Canal, officially opened in 1832, was constructed by the British to connect Ottawa to Montreal via the Ottawa River. It was designed by Colonel John By and took approximately three years ", "cache_hit_rate": 0.4792140641158221, "cache_misses": 5036, "cache_hits": 4634, "stall_s": 1.0977567087393254, "hits_device": 0, "layers_complete": 0, "prefetch": null, "host_time_s": {"sync": 0.8991949737537652, "prefetch": 0.0, "ensure": 1.1402043325360864, "build": 0.014210376655682921}, "ssd_bytes": 17822121984, "ssd_read_s": 2.8345919138519093}
44+{"backend": "titan", "capacity": 16, "policy": "lru", "predictor": "none", "m": 8, "prefetch_workers": 2, "fused_upgate": true, "nocache": true, "max_tokens": 64, "split": "heldout", "tag": "h4cold", "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b", "cmd": "benchmarks/scripts/bench_decode.py --model /Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b --backend titan --capacity 16 --nocache --fused-upgate --families general --split heldout --repeats 2 --max-tokens 64 --tag h4cold --out benchmarks/raw/gateD/fused_upgate_laptop.jsonl", "env": {"host": "MacBookPro-de-simon-pierre-2.local", "chip": "Apple M5 Max", "ram_gb": 48, "macos": "27.0", "python": "3.12.13", "mlx": "0.32.4", "mlx_lm": "0.32.2", "numpy": "2.5.4", "git": "cace064"}, "seed": 0, "warmup": false, "repeat": 1, "family": "general", "prompt": "Describe the main differences between a Mac Studio and a Mac", "ts": "2026-11-01T01:08:13", "prompt_tokens": 18, "gen_tokens": 64, "ttft_ms": 359.2430839780718, "prompt_tps": 50.14400731279152, "gen_tps": 35.97011866523369, "decode_tps_wall": 35.40823316488809, "itl_ms_p50": 27.99212501849979, "itl_ms_p95": 35.15383298508823, "itl_ms_p99": 40.49487505108118, "itl_ms_mean": 28.24201917512313, "total_s": 2.138490292010829, "peak_mem_gb": 1.800156184, "text": "\n\nMac Studio:\n- More powerful hardware options, including multiple GPUs and more RAM.\n- Higher-end CPU options, often with more cores and higher clock speeds.\n- Larger display with a higher resolution", "cache_hit_rate": 0.5051215103434424, "cache_misses": 4928, "cache_hits": 5030, "stall_s": 1.1093230979749933, "hits_device": 0, "layers_complete": 0, "prefetch": null, "host_time_s": {"sync": 0.9151322448160499, "prefetch": 0.0, "ensure": 1.1527090076124296, "build": 0.015740668051876128}, "ssd_bytes": 17439916032, "ssd_read_s": 2.80652693961747}
added benchmarks/raw/tests/distributed_localhost_olmoe_20261101T010636.json +56 −0
@@ -0,0 +1,56 @@
1+{
2+ "rtt_ms_localhost": [
3+ 0.12533401604741812,
4+ 0.10791700333356857,
5+ 0.07645809091627598,
6+ 0.1117080682888627,
7+ 0.12554205022752285
8+ ],
9+ "prompts": [
10+ {
11+ "prompt": "The capital of Canada is",
12+ "max_abs_dlogit": 0.0,
13+ "argmax_equal": true,
14+ "remote": {
15+ "remote_pairs": 312,
16+ "local_pairs": 328,
17+ "layers_remote": 16,
18+ "remote_wait_s": 0.0022653775522485375,
19+ "failures": 0,
20+ "workers": {
21+ "w0": {
22+ "worker": "w0",
23+ "exec_calls": 16,
24+ "exec_wall_s": 0.0988337080925703,
25+ "bytes_sent": 333317,
26+ "bytes_recv": 1281725
27+ }
28+ }
29+ }
30+ },
31+ {
32+ "prompt": "def fibonacci(n):\n \"\"\"Retur",
33+ "max_abs_dlogit": 0.0,
34+ "argmax_equal": true,
35+ "remote": {
36+ "remote_pairs": 1660,
37+ "local_pairs": 1668,
38+ "layers_remote": 56,
39+ "remote_wait_s": 0.013481337926350534,
40+ "failures": 0,
41+ "workers": {
42+ "w0": {
43+ "worker": "w0",
44+ "exec_calls": 56,
45+ "exec_wall_s": 0.18807079433463514,
46+ "bytes_sent": 1722764,
47+ "bytes_recv": 6807114
48+ }
49+ }
50+ }
51+ }
52+ ],
53+ "greedy_equal": true,
54+ "greedy_ref": "Ottawa.\n\nOttawa is the capital of Canada, and it is located in the province of Ontario. It is",
55+ "greedy_titan": "Ottawa.\n\nOttawa is the capital of Canada, and it is located in the province of Ontario. It is"
56+}
\ No newline at end of file
added benchmarks/raw/tests/distributed_localhost_olmoe_20261101T010747.json +56 −0
@@ -0,0 +1,56 @@
1+{
2+ "rtt_ms_localhost": [
3+ 0.12141698971390724,
4+ 0.1056670444086194,
5+ 0.08683302439749241,
6+ 0.08887494914233685,
7+ 0.07795810233801603
8+ ],
9+ "prompts": [
10+ {
11+ "prompt": "The capital of Canada is",
12+ "max_abs_dlogit": 0.0,
13+ "argmax_equal": true,
14+ "remote": {
15+ "remote_pairs": 312,
16+ "local_pairs": 328,
17+ "layers_remote": 16,
18+ "remote_wait_s": 0.002331083989702165,
19+ "failures": 0,
20+ "workers": {
21+ "w0": {
22+ "worker": "w0",
23+ "exec_calls": 16,
24+ "exec_wall_s": 0.05041508364956826,
25+ "bytes_sent": 333317,
26+ "bytes_recv": 1281722
27+ }
28+ }
29+ }
30+ },
31+ {
32+ "prompt": "def fibonacci(n):\n \"\"\"Retur",
33+ "max_abs_dlogit": 0.0,
34+ "argmax_equal": true,
35+ "remote": {
36+ "remote_pairs": 1660,
37+ "local_pairs": 1668,
38+ "layers_remote": 56,
39+ "remote_wait_s": 0.014114291174337268,
40+ "failures": 0,
41+ "workers": {
42+ "w0": {
43+ "worker": "w0",
44+ "exec_calls": 56,
45+ "exec_wall_s": 0.09762616455554962,
46+ "bytes_sent": 1722764,
47+ "bytes_recv": 6807114
48+ }
49+ }
50+ }
51+ }
52+ ],
53+ "greedy_equal": true,
54+ "greedy_ref": "Ottawa.\n\nOttawa is the capital of Canada, and it is located in the province of Ontario. It is",
55+ "greedy_titan": "Ottawa.\n\nOttawa is the capital of Canada, and it is located in the province of Ontario. It is"
56+}
\ No newline at end of file
added benchmarks/raw/tests/fused_upgate_olmoe_2026-11-01T010747.json +26 −0
@@ -0,0 +1,26 @@
1+{
2+ "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b",
3+ "ts": "2026-11-01T01:07:47",
4+ "cases": [
5+ {
6+ "capacity": 64,
7+ "prompt": "The capital of Canada is",
8+ "max_abs_dlogit": 0.0
9+ },
10+ {
11+ "capacity": 64,
12+ "prompt": "def fibonacci(n):\n \"\"\"Retur",
13+ "max_abs_dlogit": 0.0
14+ },
15+ {
16+ "capacity": 16,
17+ "prompt": "The capital of Canada is",
18+ "max_abs_dlogit": 0.0
19+ },
20+ {
21+ "capacity": 16,
22+ "prompt": "def fibonacci(n):\n \"\"\"Retur",
23+ "max_abs_dlogit": 0.0
24+ }
25+ ]
26+}
\ No newline at end of file
added benchmarks/raw/tests/greedy_olmoe_cap16_20261101T010757.json +14 −0
@@ -0,0 +1,14 @@
1+[
2+ {
3+ "prompt": "The capital of Canada is",
4+ "ref": "Ottawa.\n\nOttawa is the capital of Canada, and it is located in the province of Ontario. It is situated on the south bank of the Ottawa",
5+ "titan": "Ottawa.\n\nOttawa is the capital of Canada, and it is located in the province of Ontario. It is situated on the south bank of the Ottawa",
6+ "equal": true
7+ },
8+ {
9+ "prompt": "def fibonacci(n):\n \"\"\"Return the n-th",
10+ "ref": " if n <= 0:\n return \"Invalid input\"\n elif n == 1:\n return 0\n elif n == 2:\n",
11+ "titan": " if n <= 0:\n return \"Invalid input\"\n elif n == 1:\n return 0\n elif n == 2:\n",
12+ "equal": true
13+ }
14+]
\ No newline at end of file
added benchmarks/raw/tests/numerical_olmoe_cap16_2026-11-01T010752.json +50 −0
@@ -0,0 +1,50 @@
1+{
2+ "capacity": 16,
3+ "prompts": [
4+ {
5+ "prompt": "The capital of Canada is",
6+ "tokens": 5,
7+ "max_abs_dlogit": 0.0,
8+ "argmax_equal": true,
9+ "hit_rate": 0.2580101180438449,
10+ "misses": 440,
11+ "stall_s": 0.06402587075717747,
12+ "layers_routed": 46
13+ },
14+ {
15+ "prompt": "def fibonacci(n):\n \"\"\"Return the n-th",
16+ "tokens": 21,
17+ "max_abs_dlogit": 0.0,
18+ "argmax_equal": true,
19+ "hit_rate": 0.42512908777969016,
20+ "misses": 1002,
21+ "stall_s": 0.14133296255022287,
22+ "layers_routed": 127
23+ },
24+ {
25+ "prompt": "Q: If a train travels 60 km in 45 minute",
26+ "tokens": 25,
27+ "max_abs_dlogit": 0.0,
28+ "argmax_equal": true,
29+ "hit_rate": 0.41904344010530936,
30+ "misses": 1324,
31+ "stall_s": 0.1863027960062027,
32+ "layers_routed": 161
33+ },
34+ {
35+ "prompt": "Les mod\u00e8les \u00e0 m\u00e9lange d'experts activent",
36+ "tokens": 26,
37+ "max_abs_dlogit": 0.0,
38+ "argmax_equal": true,
39+ "hit_rate": 0.45278969957081544,
40+ "misses": 1275,
41+ "stall_s": 0.1739514967193827,
42+ "layers_routed": 164
43+ }
44+ ],
45+ "tol": 0.001,
46+ "ts": "2026-11-01T01:07:52",
47+ "max_abs_dlogit_worst": 0.0,
48+ "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b",
49+ "model_type": "olmoe"
50+}
\ No newline at end of file
added benchmarks/raw/tests/numerical_olmoe_cap32_2026-11-01T010751.json +50 −0
@@ -0,0 +1,50 @@
1+{
2+ "capacity": 32,
3+ "prompts": [
4+ {
5+ "prompt": "The capital of Canada is",
6+ "tokens": 5,
7+ "max_abs_dlogit": 0.0,
8+ "argmax_equal": true,
9+ "hit_rate": 0.0,
10+ "misses": 430,
11+ "stall_s": 0.0681393330451101,
12+ "layers_routed": 16
13+ },
14+ {
15+ "prompt": "def fibonacci(n):\n \"\"\"Return the n-th",
16+ "tokens": 21,
17+ "max_abs_dlogit": 0.0,
18+ "argmax_equal": true,
19+ "hit_rate": 0.6060606060606061,
20+ "misses": 429,
21+ "stall_s": 0.062063250807113945,
22+ "layers_routed": 40
23+ },
24+ {
25+ "prompt": "Q: If a train travels 60 km in 45 minute",
26+ "tokens": 25,
27+ "max_abs_dlogit": 0.0,
28+ "argmax_equal": true,
29+ "hit_rate": 0.6090458488228006,
30+ "misses": 631,
31+ "stall_s": 0.08345962408930063,
32+ "layers_routed": 58
33+ },
34+ {
35+ "prompt": "Les mod\u00e8les \u00e0 m\u00e9lange d'experts activent",
36+ "tokens": 26,
37+ "max_abs_dlogit": 0.0,
38+ "argmax_equal": true,
39+ "hit_rate": 0.6224188790560472,
40+ "misses": 512,
41+ "stall_s": 0.06595424842089415,
42+ "layers_routed": 49
43+ }
44+ ],
45+ "tol": 0.001,
46+ "ts": "2026-11-01T01:07:51",
47+ "max_abs_dlogit_worst": 0.0,
48+ "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b",
49+ "model_type": "olmoe"
50+}
\ No newline at end of file
added benchmarks/raw/tests/numerical_olmoe_cap64_2026-11-01T010750.json +50 −0
@@ -0,0 +1,50 @@
1+{
2+ "capacity": 64,
3+ "prompts": [
4+ {
5+ "prompt": "The capital of Canada is",
6+ "tokens": 5,
7+ "max_abs_dlogit": 0.0,
8+ "argmax_equal": true,
9+ "hit_rate": 0.0,
10+ "misses": 430,
11+ "stall_s": 0.06865216721780598,
12+ "layers_routed": 16
13+ },
14+ {
15+ "prompt": "def fibonacci(n):\n \"\"\"Return the n-th",
16+ "tokens": 21,
17+ "max_abs_dlogit": 0.0,
18+ "argmax_equal": true,
19+ "hit_rate": 0.4637904468412943,
20+ "misses": 348,
21+ "stall_s": 0.1383683322928846,
22+ "layers_routed": 16
23+ },
24+ {
25+ "prompt": "Q: If a train travels 60 km in 45 minute",
26+ "tokens": 25,
27+ "max_abs_dlogit": 0.0,
28+ "argmax_equal": true,
29+ "hit_rate": 0.823076923076923,
30+ "misses": 138,
31+ "stall_s": 0.06476020580157638,
32+ "layers_routed": 16
33+ },
34+ {
35+ "prompt": "Les mod\u00e8les \u00e0 m\u00e9lange d'experts activent",
36+ "tokens": 26,
37+ "max_abs_dlogit": 0.0,
38+ "argmax_equal": true,
39+ "hit_rate": 0.9234828496042217,
40+ "misses": 58,
41+ "stall_s": 0.023698250064626336,
42+ "layers_routed": 16
43+ }
44+ ],
45+ "tol": 0.001,
46+ "ts": "2026-11-01T01:07:50",
47+ "max_abs_dlogit_worst": 0.0,
48+ "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b",
49+ "model_type": "olmoe"
50+}
\ No newline at end of file
added benchmarks/raw/tests/numerical_olmoe_cap8_2026-11-01T010753.json +50 −0
@@ -0,0 +1,50 @@
1+{
2+ "capacity": 8,
3+ "prompts": [
4+ {
5+ "prompt": "The capital of Canada is",
6+ "tokens": 5,
7+ "max_abs_dlogit": 0.0,
8+ "argmax_equal": true,
9+ "hit_rate": 0.1625,
10+ "misses": 536,
11+ "stall_s": 0.07892000419087708,
12+ "layers_routed": 80
13+ },
14+ {
15+ "prompt": "def fibonacci(n):\n \"\"\"Return the n-th",
16+ "tokens": 21,
17+ "max_abs_dlogit": 0.0,
18+ "argmax_equal": true,
19+ "hit_rate": 0.4425981873111782,
20+ "misses": 1476,
21+ "stall_s": 0.21370154933538288,
22+ "layers_routed": 331
23+ },
24+ {
25+ "prompt": "Q: If a train travels 60 km in 45 minute",
26+ "tokens": 25,
27+ "max_abs_dlogit": 0.0,
28+ "argmax_equal": true,
29+ "hit_rate": 0.375,
30+ "misses": 1995,
31+ "stall_s": 0.28066499542910606,
32+ "layers_routed": 399
33+ },
34+ {
35+ "prompt": "Les mod\u00e8les \u00e0 m\u00e9lange d'experts activent",
36+ "tokens": 26,
37+ "max_abs_dlogit": 0.0,
38+ "argmax_equal": true,
39+ "hit_rate": 0.3878048780487805,
40+ "misses": 2008,
41+ "stall_s": 0.29252688062842935,
42+ "layers_routed": 410
43+ }
44+ ],
45+ "tol": 0.001,
46+ "ts": "2026-11-01T01:07:53",
47+ "max_abs_dlogit_worst": 0.0,
48+ "model": "/Users/simon-pierreboucher/.cache/huggingface/hub/models--mlx-community--OLMoE-1B-7B-0125-Instruct-4bit/snapshots/e23844197887b031e7ddddbb0b8959c5a6853a7b",
49+ "model_type": "olmoe"
50+}
\ No newline at end of file
modified benchmarks/scripts/bench_decode.py +3 −2
@@ -66,6 +66,7 @@ def main():
66 ap.add_argument("--prefetch-workers", type=int, default=2) 66 ap.add_argument("--prefetch-workers", type=int, default=2)
67 ap.add_argument("--traces", default=None, help="trace directory used to fit transition/probe predictors (fit split only)") 67 ap.add_argument("--traces", default=None, help="trace directory used to fit transition/probe predictors (fit split only)")
68 ap.add_argument("--nocache", action="store_true", help="F_NOCACHE on the checkpoint (SSD reads bypass page cache)") 68 ap.add_argument("--nocache", action="store_true", help="F_NOCACHE on the checkpoint (SSD reads bypass page cache)")
69+ ap.add_argument("--fused-upgate", action="store_true", help="H4: one gather_qmm for up+gate (stacked [C,2H,D] buffer)")
69 ap.add_argument("--warm-all", action="store_true", help="preload every expert before timing (all-resident control; implied when capacity == num_experts)") 70 ap.add_argument("--warm-all", action="store_true", help="preload every expert before timing (all-resident control; implied when capacity == num_experts)")
70 ap.add_argument("--workloads", default=str(Path(__file__).resolve().parents[1] / "configs" / "workloads.yaml")) 71 ap.add_argument("--workloads", default=str(Path(__file__).resolve().parents[1] / "configs" / "workloads.yaml"))
71 ap.add_argument("--families", default="general,code,reasoning,multilingual") 72 ap.add_argument("--families", default="general,code,reasoning,multilingual")
@@ -82,14 +83,14 @@ def main():
82 rng = random.Random(a.seed) 83 rng = random.Random(a.seed)
83 if a.backend == "titan": 84 if a.backend == "titan":
84 tm = TitanModel(a.model, capacity=a.capacity, policy=a.policy, nocache=a.nocache, predictor=a.predictor, m=a.m, 85 tm = TitanModel(a.model, capacity=a.capacity, policy=a.policy, nocache=a.nocache, predictor=a.predictor, m=a.m,
85− prefetch_workers=a.prefetch_workers, traces_dir=a.traces) 86+ prefetch_workers=a.prefetch_workers, traces_dir=a.traces, fused_upgate=a.fused_upgate)
86 model, tok = tm.model, tm.tokenizer 87 model, tok = tm.model, tm.tokenizer
87 if a.warm_all or tm.capacity >= tm.spec.num_experts: 88 if a.warm_all or tm.capacity >= tm.spec.num_experts:
88 tm.warm_all() 89 tm.warm_all()
89 else: 90 else:
90 model, _ = load_model(Path(a.model)); tok = load_tokenizer(Path(a.model)); tm = None 91 model, _ = load_model(Path(a.model)); tok = load_tokenizer(Path(a.model)); tm = None
91 base = {"backend": a.backend, "capacity": a.capacity if a.backend == "titan" else None, "policy": a.policy if a.backend == "titan" else None, 92 base = {"backend": a.backend, "capacity": a.capacity if a.backend == "titan" else None, "policy": a.policy if a.backend == "titan" else None,
92− "predictor": a.predictor if a.backend == "titan" else None, "m": a.m, "prefetch_workers": a.prefetch_workers, 93+ "predictor": a.predictor if a.backend == "titan" else None, "m": a.m, "prefetch_workers": a.prefetch_workers, "fused_upgate": a.fused_upgate,
93 "nocache": a.nocache, "max_tokens": a.max_tokens, "split": a.split, "tag": a.tag, "model": os.path.realpath(a.model), 94 "nocache": a.nocache, "max_tokens": a.max_tokens, "split": a.split, "tag": a.tag, "model": os.path.realpath(a.model),
94 "cmd": " ".join(sys.argv), "env": env_record(), "seed": a.seed} 95 "cmd": " ".join(sys.argv), "env": env_record(), "seed": a.seed}
95 os.makedirs(os.path.dirname(a.out), exist_ok=True) 96 os.makedirs(os.path.dirname(a.out), exist_ok=True)
modified research/DECISIONS.md +7 −0
@@ -66,3 +66,10 @@ Decision: report H1 as *not supported* for OLMoE on the laptop NVMe tier (transi
66 throughput; mechanism = install cost on the critical path × 50 % precision) and keep the prefetcher as an instrumented component; 66 throughput; mechanism = install cost on the critical path × 50 % precision) and keep the prefetcher as an instrumented component;
67 report the remote tier as a capacity mechanism (2.5 ms per layer over 1 GbE vs 1.2 ms per layer of cold-NVMe misses). Both verdicts 67 report the remote tier as a capacity mechanism (2.5 ms per layer over 1 GbE vs 1.2 ms per layer of cold-NVMe misses). Both verdicts
68 are limited to the measured regime (small model, experts fit on local NVMe, 1 GbE) and the paper says so. 68 are limited to the measured regime (small model, experts fit on local NVMe, 1 GbE) and the paper says so.
69+
70+## D-011 · 2026-11-01 · No custom Metal kernels in v0.1 (profiling-driven)
71+Decision: Gate D stops at profiling plus the fused up+gate option (kept, off by default). Rationale: at batch 1 the decode step is
72+bound by dispatch/synchronisation latency (gather_qmm takes the same 0.17 ms for 1–16 experts; in-graph ops cost 5–7 µs; the step
73+moves 452 MB in 2.99 ms = 151 GB/s on an M4 Max), so fusing kernels cannot buy more than a few percent; the measured fusion gives
74+−0.2 % / +2.6 %. The mandate's rule "profile before optimization; report end-to-end benefit" is applied literally: H4 is reported as
75+not supported in the measured regime, and token batching is identified as the lever that would change the regime.
modified research/LOG.md +5 −0
@@ -130,3 +130,8 @@ Chronological, append-only. Times are local (America/Toronto). Every entry names
130 - **Remote cost breakdown** M3U96a→M3U96b (`benchmarks/raw/gateE/remote_cost_breakdown_m3u96a_m3u96b.txt`): application ping 0.74–1.17 ms; 130 - **Remote cost breakdown** M3U96a→M3U96b (`benchmarks/raw/gateE/remote_cost_breakdown_m3u96a_m3u96b.txt`): application ping 0.74–1.17 ms;
131 exec round trip 2.09 ms (1 pair), 1.99 (4), 2.59 (8 pairs = one decode layer), 7.27 (8 rows × 64 pairs), 19.1 ms (32 rows × 256 pairs, 131 exec round trip 2.09 ms (1 pair), 1.99 (4), 2.59 (8 pairs = one decode layer), 7.27 (8 rows × 64 pairs), 19.1 ms (32 rows × 256 pairs,
132 1 MB returned ≈ 9 ms on the wire) → ≈ 1.2–1.7 ms of worker-side overhead per call on top of the RTT. 132 1 MB returned ≈ 9 ms on the wire) → ≈ 1.2–1.7 ms of worker-side overhead per call on top of the RTT.
133+- **H4 cheap fusion** (`titan/slots.py` `fused_upgate`, `tests/test_fused_upgate.py` → logits Δ = 0.0 at 64 and 16 slots;
134+ `benchmarks/raw/gateD/fused_upgate_laptop.jsonl`): one gather_qmm over a [C, 2H, D] up+gate buffer vs two kernels:
135+ all-resident 475.6 vs 476.7 tok/s (12 runs, −0.2 %), cold 16 slots 35.9 vs 35.0 tok/s (4 runs, +2.6 %, within the run-to-run range).
136+ As the profiling predicted, saving one dispatch per layer is immaterial at batch 1 → **H4 not supported** for this fusion; no custom
137+ Metal kernel is justified by the profile (decode is launch/latency-bound, 28 % of nominal bandwidth).
added tests/test_fused_upgate.py +22 −0
@@ -0,0 +1,22 @@
1+"""H4 cheap fusion: one gather_qmm for up+gate must be bit-identical to two (row-independent dot products)."""
2+import json, os, time, mlx.core as mx, pytest
3+from pathlib import Path
4+from mlx_lm.utils import load_model, load_tokenizer
5+from titan.runtime import TitanModel
6+
7+def test_fused_upgate_bit_identical(model_dir):
8+ refm, _ = load_model(Path(model_dir)); tok = load_tokenizer(Path(model_dir))
9+ from titan.registry import load_spec
10+ E = load_spec(model_dir).num_experts
11+ rec = {"model": model_dir, "ts": time.strftime("%Y-%m-%dT%H:%M:%S"), "cases": []}
12+ for cap in (E, max(8, E // 4)):
13+ tm = TitanModel(model_dir, capacity=cap, fused_upgate=True)
14+ if cap == E: tm.warm_all()
15+ for p in ["The capital of Canada is", "def fibonacci(n):\n \"\"\"Return the n-th Fibonacci number.\"\"\"\n"]:
16+ ids = mx.array(tok.encode(p))[None]
17+ ref = refm(ids); out = tm(ids); mx.eval(ref, out)
18+ d = float(mx.max(mx.abs(out.astype(mx.float32) - ref.astype(mx.float32))))
19+ rec["cases"].append({"capacity": cap, "prompt": p[:30], "max_abs_dlogit": d})
20+ assert d <= 1e-3, (cap, p, d)
21+ os.makedirs("benchmarks/raw/tests", exist_ok=True)
22+ json.dump(rec, open(f"benchmarks/raw/tests/fused_upgate_{tm.spec.model_type}_{rec['ts'].replace(':','')}.json", "w"), indent=2)
modified titan/distributed.py +2 −2
@@ -56,7 +56,7 @@ class RemoteExecutor:
56 slot_of = dict(zip(uniq, block.table.ensure(uniq))) 56 slot_of = dict(zip(uniq, block.table.ensure(uniq)))
57 sidx = mx.array([slot_of[e] for e in lflat], dtype=mx.uint32).reshape(-1, 1) 57 sidx = mx.array([slot_of[e] for e in lflat], dtype=mx.uint32).reshape(-1, 1)
58 xs = mx.expand_dims(x_flat[mx.array(rows, dtype=mx.uint32)], (-2, -3)) 58 xs = mx.expand_dims(x_flat[mx.array(rows, dtype=mx.uint32)], (-2, -3))
59− up = block._qmm(xs, "up", sidx, False); gate = block._qmm(xs, "gate", sidx, False) 59+ up, gate = block._upgate(xs, sidx) if block.table.fused else (block._qmm(xs, "up", sidx, False), block._qmm(xs, "gate", sidx, False))
60 yl = block._qmm(swiglu(gate, up), "down", sidx, False).squeeze(-2).squeeze(-2) # [P, D] 60 yl = block._qmm(swiglu(gate, up), "down", sidx, False).squeeze(-2).squeeze(-2) # [P, D]
61 for i, (pos, _, _) in enumerate(local): 61 for i, (pos, _, _) in enumerate(local):
62 outs[pos] = yl[i] 62 outs[pos] = yl[i]
@@ -76,7 +76,7 @@ class RemoteExecutor:
76 uniq = list(dict.fromkeys(lflat)); slot_of = dict(zip(uniq, block.table.ensure(uniq))) 76 uniq = list(dict.fromkeys(lflat)); slot_of = dict(zip(uniq, block.table.ensure(uniq)))
77 sidx = mx.array([slot_of[e] for e in lflat], dtype=mx.uint32).reshape(-1, 1) 77 sidx = mx.array([slot_of[e] for e in lflat], dtype=mx.uint32).reshape(-1, 1)
78 xs = mx.expand_dims(x_flat[mx.array(rows, dtype=mx.uint32)], (-2, -3)) 78 xs = mx.expand_dims(x_flat[mx.array(rows, dtype=mx.uint32)], (-2, -3))
79− up = block._qmm(xs, "up", sidx, False); gate = block._qmm(xs, "gate", sidx, False) 79+ up, gate = block._upgate(xs, sidx) if block.table.fused else (block._qmm(xs, "up", sidx, False), block._qmm(xs, "gate", sidx, False))
80 yf = block._qmm(swiglu(gate, up), "down", sidx, False).squeeze(-2).squeeze(-2) 80 yf = block._qmm(swiglu(gate, up), "down", sidx, False).squeeze(-2).squeeze(-2)
81 for i, (pos, _, _) in enumerate(pairs): 81 for i, (pos, _, _) in enumerate(pairs):
82 outs[pos] = yf[i] 82 outs[pos] = yf[i]
modified titan/moe.py +16 −4
@@ -37,10 +37,19 @@ class TitanSwitchGLU:
37 return mx.gather_qmm(x, b[f"{m}.weight"], b[f"{m}.scales"], b.get(f"{m}.biases"), rhs_indices=idx, 37 return mx.gather_qmm(x, b[f"{m}.weight"], b[f"{m}.scales"], b.get(f"{m}.biases"), rhs_indices=idx,
38 transpose=True, group_size=self.group_size, bits=self.bits, sorted_indices=sorted_indices) 38 transpose=True, group_size=self.group_size, bits=self.bits, sorted_indices=sorted_indices)
39 39
40+ def _upgate(self, x, slot_idx, sorted_indices=False):
41+ """Fused up+gate: one gather_qmm over the [C, 2H, D] buffer, split into (up, gate)."""
42+ y = self._qmm(x, "upgate", slot_idx, sorted_indices)
43+ H = y.shape[-1] // 2
44+ return y[..., :H], y[..., H:]
45+
40 def _run_device(self, x, slot_idx): 46 def _run_device(self, x, slot_idx):
41 x = mx.expand_dims(x, (-2, -3)) 47 x = mx.expand_dims(x, (-2, -3))
42− x_up = self._qmm(x, "up", slot_idx, False) 48+ if self.table.fused:
43− x_gate = self._qmm(x, "gate", slot_idx, False) 49+ x_up, x_gate = self._upgate(x, slot_idx)
50+ else:
51+ x_up = self._qmm(x, "up", slot_idx, False)
52+ x_gate = self._qmm(x, "gate", slot_idx, False)
44 h = swiglu(x_gate, x_up) 53 h = swiglu(x_gate, x_up)
45 y = self._qmm(h, "down", slot_idx, False) 54 y = self._qmm(h, "down", slot_idx, False)
46 return y.squeeze(-2) 55 return y.squeeze(-2)
@@ -61,8 +70,11 @@ class TitanSwitchGLU:
61 _t = time.perf_counter() 70 _t = time.perf_counter()
62 slot_idx = mx.array([slot_of[e] for e in flat], dtype=mx.uint32).reshape(shape) 71 slot_idx = mx.array([slot_of[e] for e in flat], dtype=mx.uint32).reshape(shape)
63 x = mx.expand_dims(x, (-2, -3)) 72 x = mx.expand_dims(x, (-2, -3))
64− x_up = self._qmm(x, "up", slot_idx, False) 73+ if self.table.fused:
65− x_gate = self._qmm(x, "gate", slot_idx, False) 74+ x_up, x_gate = self._upgate(x, slot_idx)
75+ else:
76+ x_up = self._qmm(x, "up", slot_idx, False)
77+ x_gate = self._qmm(x, "gate", slot_idx, False)
66 h = swiglu(x_gate, x_up) # identical compiled activation to mlx-lm SwitchGLU 78 h = swiglu(x_gate, x_up) # identical compiled activation to mlx-lm SwitchGLU
67 y = self._qmm(h, "down", slot_idx, False) 79 y = self._qmm(h, "down", slot_idx, False)
68 self.t_build += time.perf_counter() - _t 80 self.t_build += time.perf_counter() - _t
modified titan/runtime.py +3 −2
@@ -24,7 +24,8 @@ POLICIES = {"lru": EvictionPolicy, "lfu": LFUPolicy}
24 24
25 class TitanModel: 25 class TitanModel:
26 def __init__(self, model_dir: str, capacity: Optional[int] = None, policy: str = "lru", nocache: bool = False, 26 def __init__(self, model_dir: str, capacity: Optional[int] = None, policy: str = "lru", nocache: bool = False,
27− on_route=None, predictor: str = "none", m: int = 8, prefetch_workers: int = 2, traces_dir: Optional[str] = None): 27+ on_route=None, predictor: str = "none", m: int = 8, prefetch_workers: int = 2, traces_dir: Optional[str] = None,
28+ fused_upgate: bool = False):
28 self.model_dir = os.path.realpath(model_dir) 29 self.model_dir = os.path.realpath(model_dir)
29 self.spec: ModelSpec = load_spec(self.model_dir) 30 self.spec: ModelSpec = load_spec(self.model_dir)
30 self.store = ExpertStore(self.spec, nocache=nocache) 31 self.store = ExpertStore(self.spec, nocache=nocache)
@@ -38,7 +39,7 @@ class TitanModel:
38 self.tables: List[SlotTable] = [] 39 self.tables: List[SlotTable] = []
39 self.blocks: List[TitanSwitchGLU] = [] 40 self.blocks: List[TitanSwitchGLU] = []
40 for l, layer in enumerate(self.model.model.layers): 41 for l, layer in enumerate(self.model.model.layers):
41− table = SlotTable(l, self.capacity, self.store, POLICIES[policy]()) 42+ table = SlotTable(l, self.capacity, self.store, POLICIES[policy](), fused_upgate=fused_upgate)
42 block = TitanSwitchGLU(table, q["group_size"], q["bits"], on_route=on_route) 43 block = TitanSwitchGLU(table, q["group_size"], q["bits"], on_route=on_route)
43 # drop the lazy stacked weights and splice in the TITAN block 44 # drop the lazy stacked weights and splice in the TITAN block
44 mlp = layer.mlp 45 mlp = layer.mlp
modified titan/slots.py +21 −3
@@ -64,7 +64,7 @@ class LFUPolicy(EvictionPolicy):
64 64
65 class SlotTable: 65 class SlotTable:
66 def __init__(self, layer: int, capacity: int, store: ExpertStore, policy: Optional[EvictionPolicy] = None, 66 def __init__(self, layer: int, capacity: int, store: ExpertStore, policy: Optional[EvictionPolicy] = None,
67− matrices=("gate", "up", "down")): 67+ matrices=("gate", "up", "down"), fused_upgate: bool = False):
68 self.layer = layer 68 self.layer = layer
69 self.capacity = capacity 69 self.capacity = capacity
70 self.store = store 70 self.store = store
@@ -78,8 +78,16 @@ class SlotTable:
78 # allocate stacked buffers from the first expert's shapes 78 # allocate stacked buffers from the first expert's shapes
79 es = self.spec.experts[(layer, 0)] 79 es = self.spec.experts[(layer, 0)]
80 from .store import MX_DTYPE 80 from .store import MX_DTYPE
81+ self.fused = fused_upgate
81 for name, loc in es.tensors.items(): 82 for name, loc in es.tensors.items():
83+ if self.fused and name.startswith(("up.", "gate.")):
84+ continue
82 self.buf[name] = mx.zeros((capacity,) + tuple(loc.shape), dtype=MX_DTYPE[loc.dtype]) 85 self.buf[name] = mx.zeros((capacity,) + tuple(loc.shape), dtype=MX_DTYPE[loc.dtype])
86+ if self.fused: # [C, 2H, ...]: rows 0..H-1 = up, H..2H-1 = gate
87+ for part in ("weight", "scales", "biases"):
88+ loc = es.tensors.get(f"up.{part}")
89+ if loc is not None:
90+ self.buf[f"upgate.{part}"] = mx.zeros((capacity, 2 * loc.shape[0]) + tuple(loc.shape[1:]), dtype=MX_DTYPE[loc.dtype])
83 mx.eval(*self.buf.values()) 91 mx.eval(*self.buf.values())
84 # accounting 92 # accounting
85 self.hits = 0 93 self.hits = 0
@@ -101,8 +109,18 @@ class SlotTable:
101 slot = self.slot_of.pop(victim) 109 slot = self.slot_of.pop(victim)
102 self.policy.remove(victim) 110 self.policy.remove(victim)
103 self.evictions += 1 111 self.evictions += 1
104− for name, arr in tensors.items(): 112+ if self.fused:
105− self.buf[name][slot] = arr 113+ H = tensors["up.weight"].shape[0]
114+ for part in ("weight", "scales", "biases"):
115+ if f"up.{part}" in tensors:
116+ self.buf[f"upgate.{part}"][slot, :H] = tensors[f"up.{part}"]
117+ self.buf[f"upgate.{part}"][slot, H:] = tensors[f"gate.{part}"]
118+ for name, arr in tensors.items():
119+ if name.startswith("down."):
120+ self.buf[name][slot] = arr
121+ else:
122+ for name, arr in tensors.items():
123+ self.buf[name][slot] = arr
106 self.slot_of[expert] = slot 124 self.slot_of[expert] = slot
107 self.expert_in[slot] = expert 125 self.expert_in[slot] = expert
108 self.policy.touch(expert) # newly installed experts are MRU (prefetched ones included), so they are always evictable 126 self.policy.touch(expert) # newly installed experts are MRU (prefetched ones included), so they are always evictable
109 127
Menu

Theme