diff --git a/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/README.md b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/README.md new file mode 100644 index 00000000000..06fe5b2bee6 --- /dev/null +++ b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/README.md @@ -0,0 +1,42 @@ +# Pin by need (`STRATA_PIN_BY_NEED=1`) — community report, RTX 3090 + Ryzen 5 5600X (Windows 11) + +Branch `pr/pin-by-need` on v0.1.42 (`61b3fb5d`). Results and method only; the change is in the pull request. + +**Machine and config.** As in the `--adapt-async` report: RTX 3090 24 GB (also drives the desktop), Ryzen 5 5600X, 2 x 32 GB +DDR4-3600, Windows 11; Qwen3.8-Flash-Next GSQ-RCO IQ3_S, the default arena, 8,289 expert slots, `--spec 4 --mtp --max-context +262144 --kv int8 --vram-reserve-mib 1200 --kv-grow --adapt-every 1 --adapt-swaps 80 --adapt-decay 0.97`. Local builds (VS 2022 +17.14, CUDA 12.8, sm_86): `v0142` the tag, `pr2_on` this branch with `STRATA_PIN_BY_NEED=1 STRATA_ARENA_PIN_GIB=29 +STRATA_PCIE_MIN1=1 --pcie-frac 0.6`. + +**What it registers.** v0.1.42: `cudaHostRegister of the whole arena FAILED (out of memory); 32 slices pinned (30 GiB)`, layers +0-31, layers 32-47 without a PCIe share. This branch: `pin by need: 4404 ranges, 28.96 GiB pinned, 92.2 % of the non-resident +experts (48 of 48 layers have a PCIe share)`, 8,124 of the profile's 24,576 pairs taken as GPU-resident. + +## Prompt read and decode after it (prompt read once, decode = mean of 3 seeded answers) + +| Prompt tokens | `v0142` prefill tok/s (2 servers) | `pr2_on` prefill tok/s | Decode `v0142` / `pr2_on` | +|---:|---|---:|---| +| 55,630 | 2,180 / 2,165 | **2,313 (+6.5 %)** | 95.3 / 96.5 | +| 116,833 | 2,095 / 2,088 | **2,208 (+5.6 %)** | 97.0 / 98.3 | + +Same day, on top of `--adapt-async 1` and other opt-in switches: 63K-token prompt read 2,180 → 2,310 tok/s. + +## Cold short prompts (12 prompts x 2 rounds, fresh server per arm and round, paired) + +| Arm | Median tok/s | Ratio vs reference | Prompts faster | +|---|---:|---:|---:| +| `pr2_on` vs `v0142` (blocking tier) | 99.3 vs 97.2 | 0.999 | 6/12 | +| on top of `--adapt-async 1` + other opt-in switches: pin by need + `--pcie-frac 0.6` | — | 1.023 | 10/12 | +| same + `STRATA_PCIE_MIN1=1` (1 round) | — | 1.026 | 10/12 | +| pin by need alone on top of the same (no PCIe settings) | — | 0.995 | 6/12 | + +Decode gains only together with `--adapt-async 1` and a larger PCIe share; the prompt read gains alone. + +## Default path + +Bit-exact mode (`STRATA_IQ_MT_MIN=1 --pcie-frac 0 --adapt-every 0`), greedy, 6 prompts: on the 5 prompts that v0.1.42 +reproduces between two of its own fresh engines, this branch without the variables gives the same answers byte for byte; +the 6th differs between two runs of v0.1.42 itself in that mode (`bitexact*.jsonl`). Startup load unchanged (6.7 GiB/s; the +padded layout reads through the buffered loader). + +Raw: `context.jsonl`, `cold.jsonl`, `cold_on_async*.jsonl`, `bitexact*.jsonl`; harness `strata_ab2.py`. diff --git a/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/bitexact.jsonl b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/bitexact.jsonl new file mode 100644 index 00000000000..247621470b2 --- /dev/null +++ b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/bitexact.jsonl @@ -0,0 +1,4 @@ +{"variant": "x_v0142", "engine": 0, "shas": ["27519074f61de9af", "feab63eaed0e3c87", "13083c7bae76321f", "2851571399ae73d5", "b7c60255ff57c1f0", "4fa026f724d6d21f"]} +{"variant": "x_v0142", "engine": 1, "shas": ["27519074f61de9af", "feab63eaed0e3c87", "13083c7bae76321f", "935c0cbca0b8e848", "b7c60255ff57c1f0", "4fa026f724d6d21f"]} +{"variant": "x_pr1", "engine": 0, "shas": ["27519074f61de9af", "feab63eaed0e3c87", "13083c7bae76321f", "2851571399ae73d5", "b7c60255ff57c1f0", "4fa026f724d6d21f"]} +{"variant": "x_pr2", "engine": 0, "shas": ["27519074f61de9af", "feab63eaed0e3c87", "13083c7bae76321f", "4e95b8f3c12c7032", "b7c60255ff57c1f0", "4fa026f724d6d21f"]} diff --git a/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/bitexact_fixed_cache.jsonl b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/bitexact_fixed_cache.jsonl new file mode 100644 index 00000000000..0fc47ae5f10 --- /dev/null +++ b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/bitexact_fixed_cache.jsonl @@ -0,0 +1,4 @@ +{"variant": "y_v0142", "engine": 0, "shas": ["c3688f98a481a45b", "6a807808abdeebf8", "9e346e42ddce5684", "46d8b674ef38e1ea", "4c8597aef38d0f07", "b9c90f31eb5f6303"]} +{"variant": "y_v0142", "engine": 1, "shas": ["c3688f98a481a45b", "6a807808abdeebf8", "9e346e42ddce5684", "ea52f5b1f95102cc", "4c8597aef38d0f07", "b9c90f31eb5f6303"]} +{"variant": "y_pr1", "engine": 0, "shas": ["c3688f98a481a45b", "6a807808abdeebf8", "9e346e42ddce5684", "fdbc72441cc0a805", "4c8597aef38d0f07", "b9c90f31eb5f6303"]} +{"variant": "y_pr2", "engine": 0, "shas": ["c3688f98a481a45b", "6a807808abdeebf8", "9e346e42ddce5684", "46d8b674ef38e1ea", "4c8597aef38d0f07", "b9c90f31eb5f6303"]} diff --git a/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/cold.jsonl b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/cold.jsonl new file mode 100644 index 00000000000..c5009a900ff --- /dev/null +++ b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/cold.jsonl @@ -0,0 +1,72 @@ +{"session": "v0142_r1", "sha": "7ca75f5f9abd823e", "notes": ["strata serve: decode expert cache hit rate: 94.5% (87595 hits / 92736 lookups); 1195 more read by the GPU over PCIe or from another GPU (1.3% of all 93931 routed)"], "prompt_tokens": 26, "prefill_tps": 131.9, "gen": 149, "decode_tps": 89.6, "acc": 77, "drafted": 130, "variant": "v0142", "round": "1", "prompt_i": 0} +{"session": "v0142_r1", "sha": "91f70604a65a360e", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 89.9% (115240 hits / 128190 lookups); 2333 more read by the GPU over PCIe or from another GPU (1.8% of all 130523 routed)", "strata serve: suffix drafts: 1 windows, 2 of 3 drafts accepted"], "prompt_tokens": 36, "prefill_tps": 101.3, "gen": 256, "decode_tps": 107.2, "acc": 181, "drafted": 216, "variant": "v0142", "round": "1", "prompt_i": 1} +{"session": "v0142_r1", "sha": "13f3d89f48e5c427", "notes": ["strata serve: decode expert cache hit rate: 88.6% (133757 hits / 150977 lookups); 2858 more read by the GPU over PCIe or from another GPU (1.9% of all 153835 routed)"], "prompt_tokens": 25, "prefill_tps": 90.7, "gen": 256, "decode_tps": 87.0, "acc": 158, "drafted": 243, "variant": "v0142", "round": "1", "prompt_i": 2} +{"session": "v0142_r1", "sha": "4fa600c5531944ec", "notes": ["strata serve: decode expert cache hit rate: 94.6% (140604 hits / 148636 lookups); 1169 more read by the GPU over PCIe or from another GPU (0.8% of all 149805 routed)", "strata serve: suffix drafts: 3 windows, 3 of 8 drafts accepted"], "prompt_tokens": 28, "prefill_tps": 83.4, "gen": 256, "decode_tps": 105.9, "acc": 157, "drafted": 228, "variant": "v0142", "round": "1", "prompt_i": 3} +{"session": "v0142_r1", "sha": "68d7e545060834c4", "notes": ["strata serve: decode expert cache hit rate: 93.1% (138474 hits / 148765 lookups); 1526 more read by the GPU over PCIe or from another GPU (1.0% of all 150291 routed)"], "prompt_tokens": 23, "prefill_tps": 94.6, "gen": 256, "decode_tps": 97.2, "acc": 148, "drafted": 221, "variant": "v0142", "round": "1", "prompt_i": 4} +{"session": "v0142_r1", "sha": "cdef9b3c411e1d0a", "notes": ["strata serve: decode expert cache hit rate: 93.9% (147036 hits / 156657 lookups); 1340 more read by the GPU over PCIe or from another GPU (0.8% of all 157997 routed)"], "prompt_tokens": 33, "prefill_tps": 99.0, "gen": 256, "decode_tps": 99.8, "acc": 152, "drafted": 238, "variant": "v0142", "round": "1", "prompt_i": 5} +{"session": "v0142_r1", "sha": "00489dc250483548", "notes": ["strata serve: decode expert cache hit rate: 89.9% (108500 hits / 120717 lookups); 1985 more read by the GPU over PCIe or from another GPU (1.6% of all 122702 routed)"], "prompt_tokens": 27, "prefill_tps": 88.1, "gen": 206, "decode_tps": 87.0, "acc": 120, "drafted": 185, "variant": "v0142", "round": "1", "prompt_i": 6} +{"session": "v0142_r1", "sha": "f606818a6ea7870a", "notes": ["strata serve: decode expert cache hit rate: 92.4% (131630 hits / 142463 lookups); 1821 more read by the GPU over PCIe or from another GPU (1.3% of all 144284 routed)"], "prompt_tokens": 29, "prefill_tps": 95.7, "gen": 256, "decode_tps": 102.0, "acc": 153, "drafted": 216, "variant": "v0142", "round": "1", "prompt_i": 7} +{"session": "v0142_r1", "sha": "a82c2fc783e69636", "notes": ["strata serve: decode expert cache hit rate: 89.1% (120090 hits / 134837 lookups); 2321 more read by the GPU over PCIe or from another GPU (1.7% of all 137158 routed)", "strata serve: suffix drafts: 1 windows, 2 of 2 drafts accepted"], "prompt_tokens": 25, "prefill_tps": 92.8, "gen": 256, "decode_tps": 94.0, "acc": 163, "drafted": 213, "variant": "v0142", "round": "1", "prompt_i": 8} +{"session": "v0142_r1", "sha": "554b161eb96c3713", "notes": ["strata serve: decode expert cache hit rate: 89.4% (115116 hits / 128784 lookups); 2384 more read by the GPU over PCIe or from another GPU (1.8% of all 131168 routed)"], "prompt_tokens": 32, "prefill_tps": 96.0, "gen": 256, "decode_tps": 104.8, "acc": 179, "drafted": 214, "variant": "v0142", "round": "1", "prompt_i": 9} +{"session": "v0142_r1", "sha": "b594bc4eec3b1ad0", "notes": ["strata serve: decode expert cache hit rate: 91.9% (138785 hits / 150954 lookups); 1848 more read by the GPU over PCIe or from another GPU (1.2% of all 152802 routed)"], "prompt_tokens": 25, "prefill_tps": 85.1, "gen": 256, "decode_tps": 90.3, "acc": 135, "drafted": 215, "variant": "v0142", "round": "1", "prompt_i": 10} +{"session": "v0142_r1", "sha": "d7ebfdc44f020db3", "notes": ["strata serve: decode expert cache hit rate: 93.7% (139279 hits / 148675 lookups); 1302 more read by the GPU over PCIe or from another GPU (0.9% of all 149977 routed)"], "prompt_tokens": 24, "prefill_tps": 90.2, "gen": 256, "decode_tps": 105.1, "acc": 163, "drafted": 236, "variant": "v0142", "round": "1", "prompt_i": 11} +{"session": "pr1_on_r1", "sha": "bd4534a21f79c850", "notes": ["strata serve: decode expert cache hit rate: 94.2% (95930 hits / 101859 lookups); 1392 more read by the GPU over PCIe or from another GPU (1.3% of all 103251 routed)", "strata serve: asynchronous adaptive tier: 101 rounds, 4721 experts swapped in, 31.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.12 ms/round)"], "prompt_tokens": 26, "prefill_tps": 131.3, "gen": 162, "decode_tps": 96.6, "acc": 82, "drafted": 144, "variant": "pr1_on", "round": "1", "prompt_i": 0} +{"session": "pr1_on_r1", "sha": "91f70604a65a360e", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 88.7% (112523 hits / 126851 lookups); 2676 more read by the GPU over PCIe or from another GPU (2.1% of all 129527 routed)", "strata serve: asynchronous adaptive tier: 177 rounds, 9637 experts swapped in, 33.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)", "strata serve: suffix drafts: 1 windows, 2 of 3 drafts accepted"], "prompt_tokens": 36, "prefill_tps": 101.3, "gen": 256, "decode_tps": 115.2, "acc": 181, "drafted": 215, "variant": "pr1_on", "round": "1", "prompt_i": 1} +{"session": "pr1_on_r1", "sha": "104e7a57502bde12", "notes": ["strata serve: decode expert cache hit rate: 88.0% (136110 hits / 154594 lookups); 3354 more read by the GPU over PCIe or from another GPU (2.1% of all 157948 routed)", "strata serve: asynchronous adaptive tier: 289 rounds, 15316 experts swapped in, 32.4 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round)", "strata serve: suffix drafts: 1 windows, 1 of 3 drafts accepted"], "prompt_tokens": 25, "prefill_tps": 92.5, "gen": 256, "decode_tps": 88.4, "acc": 144, "drafted": 240, "variant": "pr1_on", "round": "1", "prompt_i": 2} +{"session": "pr1_on_r1", "sha": "5fc05e6fcaccbbb0", "notes": ["strata serve: decode expert cache hit rate: 93.5% (140724 hits / 150432 lookups); 1723 more read by the GPU over PCIe or from another GPU (1.1% of all 152155 routed)", "strata serve: asynchronous adaptive tier: 390 rounds, 19761 experts swapped in, 31.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted"], "prompt_tokens": 28, "prefill_tps": 84.6, "gen": 256, "decode_tps": 111.0, "acc": 155, "drafted": 234, "variant": "pr1_on", "round": "1", "prompt_i": 3} +{"session": "pr1_on_r1", "sha": "99f1255d987fb52c", "notes": ["strata serve: decode expert cache hit rate: 93.0% (147048 hits / 158033 lookups); 1676 more read by the GPU over PCIe or from another GPU (1.0% of all 159709 routed)", "strata serve: asynchronous adaptive tier: 502 rounds, 24475 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)"], "prompt_tokens": 23, "prefill_tps": 97.7, "gen": 256, "decode_tps": 100.8, "acc": 145, "drafted": 238, "variant": "pr1_on", "round": "1", "prompt_i": 4} +{"session": "pr1_on_r1", "sha": "d302b1f915b0bc90", "notes": ["strata serve: decode expert cache hit rate: 92.6% (138728 hits / 149800 lookups); 1778 more read by the GPU over PCIe or from another GPU (1.2% of all 151578 routed)", "strata serve: asynchronous adaptive tier: 604 rounds, 29071 experts swapped in, 29.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)"], "prompt_tokens": 33, "prefill_tps": 97.8, "gen": 256, "decode_tps": 108.6, "acc": 154, "drafted": 231, "variant": "pr1_on", "round": "1", "prompt_i": 5} +{"session": "pr1_on_r1", "sha": "f89c398d1121891f", "notes": ["strata serve: decode expert cache hit rate: 89.0% (134593 hits / 151146 lookups); 2918 more read by the GPU over PCIe or from another GPU (1.9% of all 154064 routed)", "strata serve: asynchronous adaptive tier: 716 rounds, 34404 experts swapped in, 29.8 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)"], "prompt_tokens": 27, "prefill_tps": 88.1, "gen": 252, "decode_tps": 91.0, "acc": 143, "drafted": 230, "variant": "pr1_on", "round": "1", "prompt_i": 6} +{"session": "pr1_on_r1", "sha": "f280719c218e950f", "notes": ["strata serve: decode expert cache hit rate: 91.4% (128823 hits / 141016 lookups); 2243 more read by the GPU over PCIe or from another GPU (1.6% of all 143259 routed)", "strata serve: asynchronous adaptive tier: 816 rounds, 39045 experts swapped in, 29.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)", "strata serve: suffix drafts: 2 windows, 3 of 4 drafts accepted"], "prompt_tokens": 29, "prefill_tps": 92.0, "gen": 256, "decode_tps": 107.7, "acc": 157, "drafted": 217, "variant": "pr1_on", "round": "1", "prompt_i": 7} +{"session": "pr1_on_r1", "sha": "08b3b235c564a3c2", "notes": ["strata serve: decode expert cache hit rate: 86.4% (120429 hits / 139342 lookups); 3200 more read by the GPU over PCIe or from another GPU (2.2% of all 142542 routed)", "strata serve: asynchronous adaptive tier: 910 rounds, 45014 experts swapped in, 30.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)", "strata serve: suffix drafts: 1 windows, 2 of 2 drafts accepted"], "prompt_tokens": 25, "prefill_tps": 99.6, "gen": 256, "decode_tps": 97.2, "acc": 164, "drafted": 225, "variant": "pr1_on", "round": "1", "prompt_i": 8} +{"session": "pr1_on_r1", "sha": "554b161eb96c3713", "notes": ["strata serve: decode expert cache hit rate: 88.1% (109914 hits / 124809 lookups); 2814 more read by the GPU over PCIe or from another GPU (2.2% of all 127623 routed)", "strata serve: asynchronous adaptive tier: 987 rounds, 49957 experts swapped in, 30.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)"], "prompt_tokens": 32, "prefill_tps": 93.7, "gen": 256, "decode_tps": 112.7, "acc": 181, "drafted": 210, "variant": "pr1_on", "round": "1", "prompt_i": 9} +{"session": "pr1_on_r1", "sha": "6ac1d281510b523a", "notes": ["strata serve: decode expert cache hit rate: 91.6% (143348 hits / 156412 lookups); 2202 more read by the GPU over PCIe or from another GPU (1.4% of all 158614 routed)", "strata serve: asynchronous adaptive tier: 1112 rounds, 54792 experts swapped in, 30.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)"], "prompt_tokens": 25, "prefill_tps": 89.0, "gen": 256, "decode_tps": 94.2, "acc": 134, "drafted": 224, "variant": "pr1_on", "round": "1", "prompt_i": 10} +{"session": "pr1_on_r1", "sha": "adf663108e479c7b", "notes": ["strata serve: decode expert cache hit rate: 93.0% (129375 hits / 139164 lookups); 1447 more read by the GPU over PCIe or from another GPU (1.0% of all 140611 routed)", "strata serve: asynchronous adaptive tier: 1200 rounds, 58812 experts swapped in, 30.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)"], "prompt_tokens": 24, "prefill_tps": 95.2, "gen": 256, "decode_tps": 119.0, "acc": 171, "drafted": 221, "variant": "pr1_on", "round": "1", "prompt_i": 11} +{"session": "pr2_on_r1", "sha": "dfe0024c7e0c22eb", "notes": ["strata serve: decode expert cache hit rate: 94.8% (79716 hits / 84132 lookups); 1388 more read by the GPU over PCIe or from another GPU (1.6% of all 85520 routed)", "strata serve: suffix drafts: 1 windows, 0 of 1 drafts accepted"], "prompt_tokens": 26, "prefill_tps": 136.0, "gen": 140, "decode_tps": 88.4, "acc": 70, "drafted": 114, "variant": "pr2_on", "round": "1", "prompt_i": 0} +{"session": "pr2_on_r1", "sha": "19a359e414570905", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 91.2% (114356 hits / 125350 lookups); 5029 more read by the GPU over PCIe or from another GPU (3.9% of all 130379 routed)", "strata serve: suffix drafts: 2 windows, 5 of 7 drafts accepted"], "prompt_tokens": 36, "prefill_tps": 113.2, "gen": 256, "decode_tps": 107.5, "acc": 179, "drafted": 215, "variant": "pr2_on", "round": "1", "prompt_i": 1} +{"session": "pr2_on_r1", "sha": "6cfd0a610cf088ef", "notes": ["strata serve: decode expert cache hit rate: 89.2% (131160 hits / 147064 lookups); 3921 more read by the GPU over PCIe or from another GPU (2.6% of all 150985 routed)"], "prompt_tokens": 25, "prefill_tps": 89.1, "gen": 256, "decode_tps": 83.4, "acc": 155, "drafted": 233, "variant": "pr2_on", "round": "1", "prompt_i": 2} +{"session": "pr2_on_r1", "sha": "b10ee1aac48deb24", "notes": ["strata serve: decode expert cache hit rate: 94.8% (138716 hits / 146392 lookups); 2434 more read by the GPU over PCIe or from another GPU (1.6% of all 148826 routed)"], "prompt_tokens": 28, "prefill_tps": 81.8, "gen": 256, "decode_tps": 107.9, "acc": 164, "drafted": 233, "variant": "pr2_on", "round": "1", "prompt_i": 3} +{"session": "pr2_on_r1", "sha": "2b2be37357f677ce", "notes": ["strata serve: decode expert cache hit rate: 94.3% (154047 hits / 163376 lookups); 2539 more read by the GPU over PCIe or from another GPU (1.5% of all 165915 routed)"], "prompt_tokens": 23, "prefill_tps": 103.3, "gen": 256, "decode_tps": 88.6, "acc": 142, "drafted": 247, "variant": "pr2_on", "round": "1", "prompt_i": 4} +{"session": "pr2_on_r1", "sha": "eefb1eebd8f34d7b", "notes": ["strata serve: decode expert cache hit rate: 94.2% (140461 hits / 149081 lookups); 3400 more read by the GPU over PCIe or from another GPU (2.2% of all 152481 routed)"], "prompt_tokens": 33, "prefill_tps": 105.8, "gen": 256, "decode_tps": 100.6, "acc": 155, "drafted": 234, "variant": "pr2_on", "round": "1", "prompt_i": 5} +{"session": "pr2_on_r1", "sha": "3660a7940e073f87", "notes": ["strata serve: decode expert cache hit rate: 91.9% (145899 hits / 158781 lookups); 3876 more read by the GPU over PCIe or from another GPU (2.4% of all 162657 routed)"], "prompt_tokens": 27, "prefill_tps": 93.4, "gen": 256, "decode_tps": 82.4, "acc": 140, "drafted": 242, "variant": "pr2_on", "round": "1", "prompt_i": 6} +{"session": "pr2_on_r1", "sha": "8699072667e005b0", "notes": ["strata serve: decode expert cache hit rate: 92.8% (127667 hits / 137617 lookups); 2347 more read by the GPU over PCIe or from another GPU (1.7% of all 139964 routed)"], "prompt_tokens": 29, "prefill_tps": 85.3, "gen": 256, "decode_tps": 100.5, "acc": 161, "drafted": 213, "variant": "pr2_on", "round": "1", "prompt_i": 7} +{"session": "pr2_on_r1", "sha": "fecc71685b0f99f9", "notes": ["strata serve: decode expert cache hit rate: 89.5% (116427 hits / 130027 lookups); 5286 more read by the GPU over PCIe or from another GPU (3.9% of all 135313 routed)"], "prompt_tokens": 25, "prefill_tps": 104.0, "gen": 256, "decode_tps": 93.7, "acc": 166, "drafted": 213, "variant": "pr2_on", "round": "1", "prompt_i": 8} +{"session": "pr2_on_r1", "sha": "1399ebf14598d778", "notes": ["strata serve: decode expert cache hit rate: 91.7% (116485 hits / 127046 lookups); 4274 more read by the GPU over PCIe or from another GPU (3.3% of all 131320 routed)"], "prompt_tokens": 32, "prefill_tps": 106.7, "gen": 256, "decode_tps": 105.6, "acc": 176, "drafted": 213, "variant": "pr2_on", "round": "1", "prompt_i": 9} +{"session": "pr2_on_r1", "sha": "e454b53016470668", "notes": ["strata serve: decode expert cache hit rate: 93.0% (148301 hits / 159378 lookups); 2849 more read by the GPU over PCIe or from another GPU (1.8% of all 162227 routed)"], "prompt_tokens": 25, "prefill_tps": 90.0, "gen": 256, "decode_tps": 83.7, "acc": 139, "drafted": 237, "variant": "pr2_on", "round": "1", "prompt_i": 10} +{"session": "pr2_on_r1", "sha": "356bb2a87582572e", "notes": ["strata serve: decode expert cache hit rate: 94.4% (132734 hits / 140630 lookups); 2108 more read by the GPU over PCIe or from another GPU (1.5% of all 142738 routed)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted"], "prompt_tokens": 24, "prefill_tps": 100.8, "gen": 256, "decode_tps": 105.3, "acc": 165, "drafted": 222, "variant": "pr2_on", "round": "1", "prompt_i": 11} +{"session": "pr2_on_r2", "sha": "dfe0024c7e0c22eb", "notes": ["strata serve: decode expert cache hit rate: 94.8% (79716 hits / 84132 lookups); 1388 more read by the GPU over PCIe or from another GPU (1.6% of all 85520 routed)", "strata serve: suffix drafts: 1 windows, 0 of 1 drafts accepted"], "prompt_tokens": 26, "prefill_tps": 135.3, "gen": 140, "decode_tps": 89.1, "acc": 70, "drafted": 114, "variant": "pr2_on", "round": "2", "prompt_i": 0} +{"session": "pr2_on_r2", "sha": "19a359e414570905", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 91.2% (114356 hits / 125350 lookups); 5029 more read by the GPU over PCIe or from another GPU (3.9% of all 130379 routed)", "strata serve: suffix drafts: 2 windows, 5 of 7 drafts accepted"], "prompt_tokens": 36, "prefill_tps": 114.5, "gen": 256, "decode_tps": 106.4, "acc": 179, "drafted": 215, "variant": "pr2_on", "round": "2", "prompt_i": 1} +{"session": "pr2_on_r2", "sha": "6cfd0a610cf088ef", "notes": ["strata serve: decode expert cache hit rate: 89.2% (131160 hits / 147064 lookups); 3921 more read by the GPU over PCIe or from another GPU (2.6% of all 150985 routed)"], "prompt_tokens": 25, "prefill_tps": 92.1, "gen": 256, "decode_tps": 82.2, "acc": 155, "drafted": 233, "variant": "pr2_on", "round": "2", "prompt_i": 2} +{"session": "pr2_on_r2", "sha": "b10ee1aac48deb24", "notes": ["strata serve: decode expert cache hit rate: 94.8% (138716 hits / 146392 lookups); 2434 more read by the GPU over PCIe or from another GPU (1.6% of all 148826 routed)"], "prompt_tokens": 28, "prefill_tps": 90.8, "gen": 256, "decode_tps": 108.3, "acc": 164, "drafted": 233, "variant": "pr2_on", "round": "2", "prompt_i": 3} +{"session": "pr2_on_r2", "sha": "2b2be37357f677ce", "notes": ["strata serve: decode expert cache hit rate: 94.3% (154047 hits / 163376 lookups); 2539 more read by the GPU over PCIe or from another GPU (1.5% of all 165915 routed)"], "prompt_tokens": 23, "prefill_tps": 101.1, "gen": 256, "decode_tps": 88.8, "acc": 142, "drafted": 247, "variant": "pr2_on", "round": "2", "prompt_i": 4} +{"session": "pr2_on_r2", "sha": "eefb1eebd8f34d7b", "notes": ["strata serve: decode expert cache hit rate: 94.2% (140461 hits / 149081 lookups); 3400 more read by the GPU over PCIe or from another GPU (2.2% of all 152481 routed)"], "prompt_tokens": 33, "prefill_tps": 106.4, "gen": 256, "decode_tps": 99.3, "acc": 155, "drafted": 234, "variant": "pr2_on", "round": "2", "prompt_i": 5} +{"session": "pr2_on_r2", "sha": "3660a7940e073f87", "notes": ["strata serve: decode expert cache hit rate: 91.9% (145899 hits / 158781 lookups); 3876 more read by the GPU over PCIe or from another GPU (2.4% of all 162657 routed)"], "prompt_tokens": 27, "prefill_tps": 92.5, "gen": 256, "decode_tps": 79.6, "acc": 140, "drafted": 242, "variant": "pr2_on", "round": "2", "prompt_i": 6} +{"session": "pr2_on_r2", "sha": "8699072667e005b0", "notes": ["strata serve: decode expert cache hit rate: 92.8% (127667 hits / 137617 lookups); 2347 more read by the GPU over PCIe or from another GPU (1.7% of all 139964 routed)"], "prompt_tokens": 29, "prefill_tps": 79.4, "gen": 256, "decode_tps": 100.4, "acc": 161, "drafted": 213, "variant": "pr2_on", "round": "2", "prompt_i": 7} +{"session": "pr2_on_r2", "sha": "fecc71685b0f99f9", "notes": ["strata serve: decode expert cache hit rate: 89.5% (116427 hits / 130027 lookups); 5286 more read by the GPU over PCIe or from another GPU (3.9% of all 135313 routed)"], "prompt_tokens": 25, "prefill_tps": 104.1, "gen": 256, "decode_tps": 92.5, "acc": 166, "drafted": 213, "variant": "pr2_on", "round": "2", "prompt_i": 8} +{"session": "pr2_on_r2", "sha": "1399ebf14598d778", "notes": ["strata serve: decode expert cache hit rate: 91.7% (116485 hits / 127046 lookups); 4274 more read by the GPU over PCIe or from another GPU (3.3% of all 131320 routed)"], "prompt_tokens": 32, "prefill_tps": 106.7, "gen": 256, "decode_tps": 105.8, "acc": 176, "drafted": 213, "variant": "pr2_on", "round": "2", "prompt_i": 9} +{"session": "pr2_on_r2", "sha": "e454b53016470668", "notes": ["strata serve: decode expert cache hit rate: 93.0% (148301 hits / 159378 lookups); 2849 more read by the GPU over PCIe or from another GPU (1.8% of all 162227 routed)"], "prompt_tokens": 25, "prefill_tps": 93.5, "gen": 256, "decode_tps": 87.1, "acc": 139, "drafted": 237, "variant": "pr2_on", "round": "2", "prompt_i": 10} +{"session": "pr2_on_r2", "sha": "9464ca13ce5fcfa7", "notes": ["strata serve: decode expert cache hit rate: 94.3% (134301 hits / 142357 lookups); 2235 more read by the GPU over PCIe or from another GPU (1.5% of all 144592 routed)"], "prompt_tokens": 24, "prefill_tps": 102.2, "gen": 256, "decode_tps": 108.7, "acc": 170, "drafted": 228, "variant": "pr2_on", "round": "2", "prompt_i": 11} +{"session": "pr1_on_r2", "sha": "bd4534a21f79c850", "notes": ["strata serve: decode expert cache hit rate: 94.2% (95930 hits / 101859 lookups); 1392 more read by the GPU over PCIe or from another GPU (1.3% of all 103251 routed)", "strata serve: asynchronous adaptive tier: 101 rounds, 4721 experts swapped in, 32.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.13 ms/round)"], "prompt_tokens": 26, "prefill_tps": 132.1, "gen": 162, "decode_tps": 95.7, "acc": 82, "drafted": 144, "variant": "pr1_on", "round": "2", "prompt_i": 0} +{"session": "pr1_on_r2", "sha": "91f70604a65a360e", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 88.7% (112523 hits / 126851 lookups); 2676 more read by the GPU over PCIe or from another GPU (2.1% of all 129527 routed)", "strata serve: asynchronous adaptive tier: 177 rounds, 9637 experts swapped in, 33.8 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)", "strata serve: suffix drafts: 1 windows, 2 of 3 drafts accepted"], "prompt_tokens": 36, "prefill_tps": 103.8, "gen": 256, "decode_tps": 116.5, "acc": 181, "drafted": 215, "variant": "pr1_on", "round": "2", "prompt_i": 1} +{"session": "pr1_on_r2", "sha": "104e7a57502bde12", "notes": ["strata serve: decode expert cache hit rate: 88.0% (136110 hits / 154594 lookups); 3354 more read by the GPU over PCIe or from another GPU (2.1% of all 157948 routed)", "strata serve: asynchronous adaptive tier: 289 rounds, 15316 experts swapped in, 32.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round)", "strata serve: suffix drafts: 1 windows, 1 of 3 drafts accepted"], "prompt_tokens": 25, "prefill_tps": 91.3, "gen": 256, "decode_tps": 88.6, "acc": 144, "drafted": 240, "variant": "pr1_on", "round": "2", "prompt_i": 2} +{"session": "pr1_on_r2", "sha": "5fc05e6fcaccbbb0", "notes": ["strata serve: decode expert cache hit rate: 93.5% (140724 hits / 150432 lookups); 1723 more read by the GPU over PCIe or from another GPU (1.1% of all 152155 routed)", "strata serve: asynchronous adaptive tier: 390 rounds, 19761 experts swapped in, 31.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted"], "prompt_tokens": 28, "prefill_tps": 83.2, "gen": 256, "decode_tps": 110.1, "acc": 155, "drafted": 234, "variant": "pr1_on", "round": "2", "prompt_i": 3} +{"session": "pr1_on_r2", "sha": "99f1255d987fb52c", "notes": ["strata serve: decode expert cache hit rate: 93.0% (147048 hits / 158033 lookups); 1676 more read by the GPU over PCIe or from another GPU (1.0% of all 159709 routed)", "strata serve: asynchronous adaptive tier: 502 rounds, 24475 experts swapped in, 30.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round)"], "prompt_tokens": 23, "prefill_tps": 96.2, "gen": 256, "decode_tps": 99.3, "acc": 145, "drafted": 238, "variant": "pr1_on", "round": "2", "prompt_i": 4} +{"session": "pr1_on_r2", "sha": "d302b1f915b0bc90", "notes": ["strata serve: decode expert cache hit rate: 92.6% (138728 hits / 149800 lookups); 1778 more read by the GPU over PCIe or from another GPU (1.2% of all 151578 routed)", "strata serve: asynchronous adaptive tier: 604 rounds, 29071 experts swapped in, 30.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)"], "prompt_tokens": 33, "prefill_tps": 96.9, "gen": 256, "decode_tps": 108.4, "acc": 154, "drafted": 231, "variant": "pr1_on", "round": "2", "prompt_i": 5} +{"session": "pr1_on_r2", "sha": "f89c398d1121891f", "notes": ["strata serve: decode expert cache hit rate: 89.0% (134593 hits / 151146 lookups); 2918 more read by the GPU over PCIe or from another GPU (1.9% of all 154064 routed)", "strata serve: asynchronous adaptive tier: 716 rounds, 34404 experts swapped in, 29.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)"], "prompt_tokens": 27, "prefill_tps": 88.3, "gen": 252, "decode_tps": 90.8, "acc": 143, "drafted": 230, "variant": "pr1_on", "round": "2", "prompt_i": 6} +{"session": "pr1_on_r2", "sha": "f280719c218e950f", "notes": ["strata serve: decode expert cache hit rate: 91.4% (128823 hits / 141016 lookups); 2243 more read by the GPU over PCIe or from another GPU (1.6% of all 143259 routed)", "strata serve: asynchronous adaptive tier: 816 rounds, 39045 experts swapped in, 29.8 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)", "strata serve: suffix drafts: 2 windows, 3 of 4 drafts accepted"], "prompt_tokens": 29, "prefill_tps": 90.7, "gen": 256, "decode_tps": 108.8, "acc": 157, "drafted": 217, "variant": "pr1_on", "round": "2", "prompt_i": 7} +{"session": "pr1_on_r2", "sha": "08b3b235c564a3c2", "notes": ["strata serve: decode expert cache hit rate: 86.4% (120429 hits / 139342 lookups); 3200 more read by the GPU over PCIe or from another GPU (2.2% of all 142542 routed)", "strata serve: asynchronous adaptive tier: 910 rounds, 45014 experts swapped in, 30.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)", "strata serve: suffix drafts: 1 windows, 2 of 2 drafts accepted"], "prompt_tokens": 25, "prefill_tps": 97.6, "gen": 256, "decode_tps": 97.2, "acc": 164, "drafted": 225, "variant": "pr1_on", "round": "2", "prompt_i": 8} +{"session": "pr1_on_r2", "sha": "554b161eb96c3713", "notes": ["strata serve: decode expert cache hit rate: 88.1% (109914 hits / 124809 lookups); 2814 more read by the GPU over PCIe or from another GPU (2.2% of all 127623 routed)", "strata serve: asynchronous adaptive tier: 987 rounds, 49957 experts swapped in, 30.6 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round)"], "prompt_tokens": 32, "prefill_tps": 98.4, "gen": 256, "decode_tps": 113.5, "acc": 181, "drafted": 210, "variant": "pr1_on", "round": "2", "prompt_i": 9} +{"session": "pr1_on_r2", "sha": "6ac1d281510b523a", "notes": ["strata serve: decode expert cache hit rate: 91.6% (143348 hits / 156412 lookups); 2202 more read by the GPU over PCIe or from another GPU (1.4% of all 158614 routed)", "strata serve: asynchronous adaptive tier: 1112 rounds, 54792 experts swapped in, 30.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round)"], "prompt_tokens": 25, "prefill_tps": 87.1, "gen": 256, "decode_tps": 92.9, "acc": 134, "drafted": 224, "variant": "pr1_on", "round": "2", "prompt_i": 10} +{"session": "pr1_on_r2", "sha": "d6b4772b5e3db371", "notes": ["strata serve: decode expert cache hit rate: 93.0% (127639 hits / 137221 lookups); 1432 more read by the GPU over PCIe or from another GPU (1.0% of all 138653 routed)", "strata serve: asynchronous adaptive tier: 1200 rounds, 58891 experts swapped in, 30.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted"], "prompt_tokens": 24, "prefill_tps": 94.7, "gen": 256, "decode_tps": 118.1, "acc": 170, "drafted": 217, "variant": "pr1_on", "round": "2", "prompt_i": 11} +{"session": "v0142_r2", "sha": "7ca75f5f9abd823e", "notes": ["strata serve: decode expert cache hit rate: 94.4% (87596 hits / 92749 lookups); 1180 more read by the GPU over PCIe or from another GPU (1.3% of all 93929 routed)"], "prompt_tokens": 26, "prefill_tps": 131.3, "gen": 149, "decode_tps": 89.5, "acc": 77, "drafted": 130, "variant": "v0142", "round": "2", "prompt_i": 0} +{"session": "v0142_r2", "sha": "53d74428a77fd76c", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 89.3% (112089 hits / 125499 lookups); 2203 more read by the GPU over PCIe or from another GPU (1.7% of all 127702 routed)", "strata serve: suffix drafts: 1 windows, 2 of 3 drafts accepted"], "prompt_tokens": 36, "prefill_tps": 101.7, "gen": 256, "decode_tps": 107.5, "acc": 183, "drafted": 211, "variant": "v0142", "round": "2", "prompt_i": 1} +{"session": "v0142_r2", "sha": "d7b45775481d1aa7", "notes": ["strata serve: decode expert cache hit rate: 88.2% (127813 hits / 144970 lookups); 2801 more read by the GPU over PCIe or from another GPU (1.9% of all 147771 routed)"], "prompt_tokens": 25, "prefill_tps": 81.4, "gen": 256, "decode_tps": 87.1, "acc": 159, "drafted": 229, "variant": "v0142", "round": "2", "prompt_i": 2} +{"session": "v0142_r2", "sha": "054268aa3fdbd003", "notes": ["strata serve: decode expert cache hit rate: 94.1% (141846 hits / 150688 lookups); 1409 more read by the GPU over PCIe or from another GPU (0.9% of all 152097 routed)"], "prompt_tokens": 28, "prefill_tps": 86.1, "gen": 256, "decode_tps": 100.7, "acc": 148, "drafted": 224, "variant": "v0142", "round": "2", "prompt_i": 3} +{"session": "v0142_r2", "sha": "c87fcf91f34a9322", "notes": ["strata serve: decode expert cache hit rate: 94.6% (162483 hits / 171765 lookups); 1307 more read by the GPU over PCIe or from another GPU (0.8% of all 173072 routed)"], "prompt_tokens": 23, "prefill_tps": 94.7, "gen": 256, "decode_tps": 92.8, "acc": 142, "drafted": 261, "variant": "v0142", "round": "2", "prompt_i": 4} +{"session": "v0142_r2", "sha": "b199bb6ddd622543", "notes": ["strata serve: decode expert cache hit rate: 93.6% (146709 hits / 156684 lookups); 1517 more read by the GPU over PCIe or from another GPU (1.0% of all 158201 routed)"], "prompt_tokens": 33, "prefill_tps": 100.9, "gen": 256, "decode_tps": 97.8, "acc": 148, "drafted": 237, "variant": "v0142", "round": "2", "prompt_i": 5} +{"session": "v0142_r2", "sha": "19b2d4ebca1fa3eb", "notes": ["strata serve: decode expert cache hit rate: 89.9% (109492 hits / 121845 lookups); 2200 more read by the GPU over PCIe or from another GPU (1.8% of all 124045 routed)"], "prompt_tokens": 27, "prefill_tps": 87.6, "gen": 210, "decode_tps": 86.2, "acc": 118, "drafted": 182, "variant": "v0142", "round": "2", "prompt_i": 6} +{"session": "v0142_r2", "sha": "c875ce3c7d0d94ce", "notes": ["strata serve: decode expert cache hit rate: 93.2% (142252 hits / 152566 lookups); 1825 more read by the GPU over PCIe or from another GPU (1.2% of all 154391 routed)", "strata serve: suffix drafts: 3 windows, 5 of 6 drafts accepted"], "prompt_tokens": 29, "prefill_tps": 98.8, "gen": 256, "decode_tps": 96.4, "acc": 147, "drafted": 228, "variant": "v0142", "round": "2", "prompt_i": 7} +{"session": "v0142_r2", "sha": "441aa2e34fb2d9f4", "notes": ["strata serve: decode expert cache hit rate: 90.0% (132255 hits / 146960 lookups); 2371 more read by the GPU over PCIe or from another GPU (1.6% of all 149331 routed)", "strata serve: suffix drafts: 8 windows, 12 of 17 drafts accepted"], "prompt_tokens": 25, "prefill_tps": 93.6, "gen": 256, "decode_tps": 90.6, "acc": 157, "drafted": 233, "variant": "v0142", "round": "2", "prompt_i": 8} +{"session": "v0142_r2", "sha": "9e336bf8c874b008", "notes": ["strata serve: decode expert cache hit rate: 91.1% (123298 hits / 135272 lookups); 2011 more read by the GPU over PCIe or from another GPU (1.5% of all 137283 routed)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted"], "prompt_tokens": 32, "prefill_tps": 101.8, "gen": 256, "decode_tps": 106.4, "acc": 177, "drafted": 224, "variant": "v0142", "round": "2", "prompt_i": 9} +{"session": "v0142_r2", "sha": "b915131613026836", "notes": ["strata serve: decode expert cache hit rate: 92.2% (149942 hits / 162630 lookups); 2094 more read by the GPU over PCIe or from another GPU (1.3% of all 164724 routed)"], "prompt_tokens": 25, "prefill_tps": 88.1, "gen": 256, "decode_tps": 87.5, "acc": 134, "drafted": 240, "variant": "v0142", "round": "2", "prompt_i": 10} +{"session": "v0142_r2", "sha": "356bb2a87582572e", "notes": ["strata serve: decode expert cache hit rate: 93.8% (134482 hits / 143383 lookups); 1260 more read by the GPU over PCIe or from another GPU (0.9% of all 144643 routed)", "strata serve: suffix drafts: 3 windows, 4 of 6 drafts accepted"], "prompt_tokens": 24, "prefill_tps": 94.0, "gen": 256, "decode_tps": 107.7, "acc": 163, "drafted": 224, "variant": "v0142", "round": "2", "prompt_i": 11} diff --git a/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/cold_on_async.jsonl b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/cold_on_async.jsonl new file mode 100644 index 00000000000..ceec7cea606 --- /dev/null +++ b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/cold_on_async.jsonl @@ -0,0 +1,48 @@ +{"session": "stack2_r1", "sha": "ebb203ed86327d58", "notes": ["strata serve: decode expert cache hit rate: 93.7% (75579 hits / 80652 lookups); 1369 more read by the GPU over PCIe or from another GPU (1.7% of all 82021 routed)", "strata serve: asynchronous adaptive tier: 86 rounds, 3985 experts swapped in, 33.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.13 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 1 drafts accepted", "strata serve: lookup chain: 1 of 72 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 26, "prefill_tps": 106.2, "gen": 136, "decode_tps": 95.2, "acc": 67, "drafted": 108, "variant": "stack2", "round": "1", "prompt_i": 0} +{"session": "stack2_r1", "sha": "91f70604a65a360e", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 89.0% (115838 hits / 130122 lookups); 2708 more read by the GPU over PCIe or from another GPU (2.0% of all 132830 routed)", "strata serve: asynchronous adaptive tier: 163 rounds, 8953 experts swapped in, 35.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 2 of 4 drafts accepted", "strata serve: lookup chain: 3 of 77 windows, 0 of 5 chained drafts accepted"], "prompt_tokens": 36, "prefill_tps": 97.5, "gen": 256, "decode_tps": 109.6, "acc": 180, "drafted": 221, "variant": "stack2", "round": "1", "prompt_i": 1} +{"session": "stack2_r1", "sha": "3c3811b1dba1198c", "notes": ["strata serve: decode expert cache hit rate: 88.7% (139245 hits / 156942 lookups); 4027 more read by the GPU over PCIe or from another GPU (2.5% of all 160969 routed)", "strata serve: asynchronous adaptive tier: 268 rounds, 14552 experts swapped in, 33.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.16 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 105 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 93.3, "gen": 256, "decode_tps": 91.5, "acc": 151, "drafted": 253, "variant": "stack2", "round": "1", "prompt_i": 2} +{"session": "stack2_r1", "sha": "12683764afeb5d5f", "notes": ["strata serve: decode expert cache hit rate: 93.7% (147024 hits / 156934 lookups); 1676 more read by the GPU over PCIe or from another GPU (1.1% of all 158610 routed)", "strata serve: asynchronous adaptive tier: 377 rounds, 19023 experts swapped in, 31.8 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 3 windows, 3 of 9 drafts accepted", "strata serve: lookup chain: 1 of 109 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 28, "prefill_tps": 66.1, "gen": 256, "decode_tps": 104.4, "acc": 148, "drafted": 240, "variant": "stack2", "round": "1", "prompt_i": 3} +{"session": "stack2_r1", "sha": "9f23cd8423cb1e46", "notes": ["strata serve: decode expert cache hit rate: 92.6% (148098 hits / 159986 lookups); 1860 more read by the GPU over PCIe or from another GPU (1.1% of all 161846 routed)", "strata serve: asynchronous adaptive tier: 488 rounds, 24136 experts swapped in, 31.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 111 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 23, "prefill_tps": 91.0, "gen": 256, "decode_tps": 92.6, "acc": 146, "drafted": 245, "variant": "stack2", "round": "1", "prompt_i": 4} +{"session": "stack2_r1", "sha": "65e396d8517aebd9", "notes": ["strata serve: decode expert cache hit rate: 92.4% (134587 hits / 145635 lookups); 1745 more read by the GPU over PCIe or from another GPU (1.2% of all 147380 routed)", "strata serve: asynchronous adaptive tier: 586 rounds, 28699 experts swapped in, 30.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 98 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 33, "prefill_tps": 82.0, "gen": 256, "decode_tps": 108.4, "acc": 159, "drafted": 226, "variant": "stack2", "round": "1", "prompt_i": 5} +{"session": "stack2_r1", "sha": "53120cbcda072b1b", "notes": ["strata serve: decode expert cache hit rate: 90.4% (145150 hits / 160645 lookups); 2660 more read by the GPU over PCIe or from another GPU (1.6% of all 163305 routed)", "strata serve: asynchronous adaptive tier: 704 rounds, 34100 experts swapped in, 30.6 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 118 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 27, "prefill_tps": 86.1, "gen": 256, "decode_tps": 87.7, "acc": 138, "drafted": 243, "variant": "stack2", "round": "1", "prompt_i": 6} +{"session": "stack2_r1", "sha": "b4dd6167183b6fb8", "notes": ["strata serve: decode expert cache hit rate: 92.3% (141074 hits / 152787 lookups); 2036 more read by the GPU over PCIe or from another GPU (1.3% of all 154823 routed)", "strata serve: asynchronous adaptive tier: 814 rounds, 38840 experts swapped in, 30.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted", "strata serve: lookup chain: 0 of 110 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 29, "prefill_tps": 73.5, "gen": 256, "decode_tps": 100.7, "acc": 146, "drafted": 232, "variant": "stack2", "round": "1", "prompt_i": 7} +{"session": "stack2_r1", "sha": "0f5ef8d1dcd33d47", "notes": ["strata serve: decode expert cache hit rate: 87.1% (125934 hits / 144631 lookups); 3145 more read by the GPU over PCIe or from another GPU (2.1% of all 147776 routed)", "strata serve: asynchronous adaptive tier: 909 rounds, 44677 experts swapped in, 30.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 3 windows, 5 of 6 drafts accepted", "strata serve: lookup chain: 2 of 95 windows, 2 of 4 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 84.9, "gen": 256, "decode_tps": 89.4, "acc": 162, "drafted": 235, "variant": "stack2", "round": "1", "prompt_i": 8} +{"session": "stack2_r1", "sha": "9e336bf8c874b008", "notes": ["strata serve: decode expert cache hit rate: 90.1% (118515 hits / 131477 lookups); 2188 more read by the GPU over PCIe or from another GPU (1.6% of all 133665 routed)", "strata serve: asynchronous adaptive tier: 990 rounds, 49293 experts swapped in, 31.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted", "strata serve: lookup chain: 0 of 81 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 32, "prefill_tps": 101.1, "gen": 256, "decode_tps": 114.7, "acc": 177, "drafted": 217, "variant": "stack2", "round": "1", "prompt_i": 9} +{"session": "stack2_r1", "sha": "ce1cd4e642eecbb6", "notes": ["strata serve: decode expert cache hit rate: 90.8% (140231 hits / 154478 lookups); 2399 more read by the GPU over PCIe or from another GPU (1.5% of all 156877 routed)", "strata serve: asynchronous adaptive tier: 1104 rounds, 54227 experts swapped in, 30.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 114 windows, 0 of 2 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 76.9, "gen": 256, "decode_tps": 96.7, "acc": 142, "drafted": 232, "variant": "stack2", "round": "1", "prompt_i": 10} +{"session": "stack2_r1", "sha": "6277229a9ec8319c", "notes": ["strata serve: decode expert cache hit rate: 93.0% (134711 hits / 144863 lookups); 1535 more read by the GPU over PCIe or from another GPU (1.0% of all 146398 routed)", "strata serve: asynchronous adaptive tier: 1197 rounds, 58472 experts swapped in, 30.6 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 3 drafts accepted", "strata serve: lookup chain: 0 of 93 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 24, "prefill_tps": 92.6, "gen": 256, "decode_tps": 114.1, "acc": 163, "drafted": 229, "variant": "stack2", "round": "1", "prompt_i": 11} +{"session": "p1_r1", "sha": "859da0f62e5603fd", "notes": ["strata serve: decode expert cache hit rate: 93.7% (88374 hits / 94287 lookups); 1110 more read by the GPU over PCIe or from another GPU (1.2% of all 95397 routed)", "strata serve: asynchronous adaptive tier: 97 rounds, 4528 experts swapped in, 32.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.13 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 80 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 26, "prefill_tps": 136.9, "gen": 156, "decode_tps": 98.4, "acc": 77, "drafted": 129, "variant": "p1", "round": "1", "prompt_i": 0} +{"session": "p1_r1", "sha": "19a359e414570905", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 89.0% (113917 hits / 128006 lookups); 3179 more read by the GPU over PCIe or from another GPU (2.4% of all 131185 routed)", "strata serve: asynchronous adaptive tier: 173 rounds, 9429 experts swapped in, 33.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 2 of 3 drafts accepted", "strata serve: lookup chain: 3 of 76 windows, 6 of 6 chained drafts accepted"], "prompt_tokens": 36, "prefill_tps": 108.4, "gen": 256, "decode_tps": 115.3, "acc": 180, "drafted": 218, "variant": "p1", "round": "1", "prompt_i": 1} +{"session": "p1_r1", "sha": "d34f67047e52a791", "notes": ["strata serve: decode expert cache hit rate: 86.7% (124892 hits / 144007 lookups); 1976 more read by the GPU over PCIe or from another GPU (1.4% of all 145983 routed)", "strata serve: asynchronous adaptive tier: 275 rounds, 14887 experts swapped in, 33.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.16 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 102 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 85.6, "gen": 256, "decode_tps": 90.2, "acc": 155, "drafted": 224, "variant": "p1", "round": "1", "prompt_i": 2} +{"session": "p1_r1", "sha": "742e6daeb3c155a1", "notes": ["strata serve: decode expert cache hit rate: 93.3% (146827 hits / 157291 lookups); 1336 more read by the GPU over PCIe or from another GPU (0.8% of all 158627 routed)", "strata serve: asynchronous adaptive tier: 383 rounds, 19424 experts swapped in, 31.8 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 3 drafts accepted", "strata serve: lookup chain: 2 of 108 windows, 0 of 4 chained drafts accepted"], "prompt_tokens": 28, "prefill_tps": 82.8, "gen": 256, "decode_tps": 104.2, "acc": 150, "drafted": 241, "variant": "p1", "round": "1", "prompt_i": 3} +{"session": "p1_r1", "sha": "0aeb828e68318a42", "notes": ["strata serve: decode expert cache hit rate: 92.8% (147895 hits / 159416 lookups); 1212 more read by the GPU over PCIe or from another GPU (0.8% of all 160628 routed)", "strata serve: asynchronous adaptive tier: 495 rounds, 24148 experts swapped in, 30.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 112 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 23, "prefill_tps": 91.0, "gen": 256, "decode_tps": 98.3, "acc": 146, "drafted": 240, "variant": "p1", "round": "1", "prompt_i": 4} +{"session": "p1_r1", "sha": "c53398d6676d6e5c", "notes": ["strata serve: decode expert cache hit rate: 92.7% (137572 hits / 148422 lookups); 1569 more read by the GPU over PCIe or from another GPU (1.0% of all 149991 routed)", "strata serve: asynchronous adaptive tier: 599 rounds, 28583 experts swapped in, 30.4 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 104 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 33, "prefill_tps": 97.4, "gen": 256, "decode_tps": 106.4, "acc": 155, "drafted": 225, "variant": "p1", "round": "1", "prompt_i": 5} +{"session": "p1_r1", "sha": "2dfb64e2c736af53", "notes": ["strata serve: decode expert cache hit rate: 89.4% (141260 hits / 157927 lookups); 2005 more read by the GPU over PCIe or from another GPU (1.3% of all 159932 routed)", "strata serve: asynchronous adaptive tier: 717 rounds, 33917 experts swapped in, 30.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 118 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 27, "prefill_tps": 87.1, "gen": 256, "decode_tps": 87.3, "acc": 138, "drafted": 236, "variant": "p1", "round": "1", "prompt_i": 6} +{"session": "p1_r1", "sha": "bae66bb9841080a4", "notes": ["strata serve: decode expert cache hit rate: 91.8% (135387 hits / 147493 lookups); 1002 more read by the GPU over PCIe or from another GPU (0.7% of all 148495 routed)", "strata serve: asynchronous adaptive tier: 819 rounds, 38484 experts swapped in, 30.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 3 drafts accepted", "strata serve: lookup chain: 0 of 102 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 29, "prefill_tps": 80.6, "gen": 256, "decode_tps": 105.5, "acc": 155, "drafted": 226, "variant": "p1", "round": "1", "prompt_i": 7} +{"session": "p1_r1", "sha": "3fbc6f8b140e4b1a", "notes": ["strata serve: decode expert cache hit rate: 87.9% (125950 hits / 143234 lookups); 2912 more read by the GPU over PCIe or from another GPU (2.0% of all 146146 routed)", "strata serve: asynchronous adaptive tier: 906 rounds, 44005 experts swapped in, 30.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 5 of 5 drafts accepted", "strata serve: lookup chain: 2 of 87 windows, 4 of 4 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 94.5, "gen": 256, "decode_tps": 98.9, "acc": 172, "drafted": 241, "variant": "p1", "round": "1", "prompt_i": 8} +{"session": "p1_r1", "sha": "1399ebf14598d778", "notes": ["strata serve: decode expert cache hit rate: 89.8% (118305 hits / 131758 lookups); 2113 more read by the GPU over PCIe or from another GPU (1.6% of all 133871 routed)", "strata serve: asynchronous adaptive tier: 986 rounds, 48440 experts swapped in, 30.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 80 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 32, "prefill_tps": 96.6, "gen": 256, "decode_tps": 113.5, "acc": 176, "drafted": 218, "variant": "p1", "round": "1", "prompt_i": 9} +{"session": "p1_r1", "sha": "682659498bc5bca0", "notes": ["strata serve: decode expert cache hit rate: 90.4% (143655 hits / 158933 lookups); 1561 more read by the GPU over PCIe or from another GPU (1.0% of all 160494 routed)", "strata serve: asynchronous adaptive tier: 1109 rounds, 53453 experts swapped in, 30.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 123 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 85.5, "gen": 256, "decode_tps": 88.5, "acc": 133, "drafted": 231, "variant": "p1", "round": "1", "prompt_i": 10} +{"session": "p1_r1", "sha": "afe948cd47b974c1", "notes": ["strata serve: decode expert cache hit rate: 92.3% (132397 hits / 143391 lookups); 1220 more read by the GPU over PCIe or from another GPU (0.8% of all 144611 routed)", "strata serve: asynchronous adaptive tier: 1203 rounds, 57819 experts swapped in, 30.4 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted", "strata serve: lookup chain: 0 of 94 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 24, "prefill_tps": 87.8, "gen": 256, "decode_tps": 109.9, "acc": 163, "drafted": 224, "variant": "p1", "round": "1", "prompt_i": 11} +{"session": "p1_r2", "sha": "394c3bfc01944c02", "notes": ["strata serve: decode expert cache hit rate: 93.5% (78287 hits / 83731 lookups); 1103 more read by the GPU over PCIe or from another GPU (1.3% of all 84834 routed)", "strata serve: asynchronous adaptive tier: 89 rounds, 4227 experts swapped in, 33.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.13 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 72 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 26, "prefill_tps": 136.8, "gen": 137, "decode_tps": 95.1, "acc": 67, "drafted": 114, "variant": "p1", "round": "2", "prompt_i": 0} +{"session": "p1_r2", "sha": "53d74428a77fd76c", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 89.0% (113903 hits / 127936 lookups); 2651 more read by the GPU over PCIe or from another GPU (2.0% of all 130587 routed)", "strata serve: asynchronous adaptive tier: 168 rounds, 9335 experts swapped in, 34.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 2 of 4 drafts accepted", "strata serve: lookup chain: 2 of 79 windows, 0 of 3 chained drafts accepted"], "prompt_tokens": 36, "prefill_tps": 105.1, "gen": 256, "decode_tps": 113.7, "acc": 179, "drafted": 214, "variant": "p1", "round": "2", "prompt_i": 1} +{"session": "p1_r2", "sha": "c48dc82ec5e3d197", "notes": ["strata serve: decode expert cache hit rate: 86.3% (122187 hits / 141626 lookups); 2091 more read by the GPU over PCIe or from another GPU (1.5% of all 143717 routed)", "strata serve: asynchronous adaptive tier: 266 rounds, 14802 experts swapped in, 34.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 98 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 82.2, "gen": 256, "decode_tps": 90.3, "acc": 159, "drafted": 223, "variant": "p1", "round": "2", "prompt_i": 2} +{"session": "p1_r2", "sha": "257ede47f5c2116f", "notes": ["strata serve: decode expert cache hit rate: 93.3% (138502 hits / 148517 lookups); 1248 more read by the GPU over PCIe or from another GPU (0.8% of all 149765 routed)", "strata serve: asynchronous adaptive tier: 371 rounds, 19301 experts swapped in, 32.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted", "strata serve: lookup chain: 3 of 105 windows, 0 of 3 chained drafts accepted"], "prompt_tokens": 28, "prefill_tps": 81.5, "gen": 256, "decode_tps": 108.1, "acc": 154, "drafted": 225, "variant": "p1", "round": "2", "prompt_i": 3} +{"session": "p1_r2", "sha": "dd3b5be43ee3a356", "notes": ["strata serve: decode expert cache hit rate: 92.6% (150929 hits / 163043 lookups); 1221 more read by the GPU over PCIe or from another GPU (0.7% of all 164264 routed)", "strata serve: asynchronous adaptive tier: 489 rounds, 24321 experts swapped in, 31.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 118 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 23, "prefill_tps": 92.7, "gen": 256, "decode_tps": 91.5, "acc": 139, "drafted": 242, "variant": "p1", "round": "2", "prompt_i": 4} +{"session": "p1_r2", "sha": "ad9deabd05fb5e4c", "notes": ["strata serve: decode expert cache hit rate: 92.9% (146090 hits / 157259 lookups); 1582 more read by the GPU over PCIe or from another GPU (1.0% of all 158841 routed)", "strata serve: asynchronous adaptive tier: 592 rounds, 28807 experts swapped in, 30.8 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 103 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 33, "prefill_tps": 81.1, "gen": 256, "decode_tps": 102.5, "acc": 153, "drafted": 245, "variant": "p1", "round": "2", "prompt_i": 5} +{"session": "p1_r2", "sha": "e567835d890c88ff", "notes": ["strata serve: decode expert cache hit rate: 88.6% (112205 hits / 126660 lookups); 1918 more read by the GPU over PCIe or from another GPU (1.5% of all 128578 routed)", "strata serve: asynchronous adaptive tier: 686 rounds, 33457 experts swapped in, 30.8 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 94 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 27, "prefill_tps": 85.7, "gen": 206, "decode_tps": 85.9, "acc": 114, "drafted": 192, "variant": "p1", "round": "2", "prompt_i": 6} +{"session": "p1_r2", "sha": "8300572eb8e72da7", "notes": ["strata serve: decode expert cache hit rate: 90.7% (129506 hits / 142815 lookups); 1174 more read by the GPU over PCIe or from another GPU (0.8% of all 143989 routed)", "strata serve: asynchronous adaptive tier: 785 rounds, 38121 experts swapped in, 30.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 2 of 2 drafts accepted", "strata serve: lookup chain: 3 of 99 windows, 1 of 6 chained drafts accepted"], "prompt_tokens": 29, "prefill_tps": 87.1, "gen": 256, "decode_tps": 98.5, "acc": 159, "drafted": 220, "variant": "p1", "round": "2", "prompt_i": 7} +{"session": "p1_r2", "sha": "b05462823cff3f6d", "notes": ["strata serve: decode expert cache hit rate: 88.0% (119767 hits / 136056 lookups); 2919 more read by the GPU over PCIe or from another GPU (2.1% of all 138975 routed)", "strata serve: asynchronous adaptive tier: 869 rounds, 43405 experts swapped in, 31.4 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 3 windows, 12 of 15 drafts accepted", "strata serve: lookup chain: 1 of 84 windows, 0 of 2 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 88.0, "gen": 256, "decode_tps": 98.7, "acc": 172, "drafted": 228, "variant": "p1", "round": "2", "prompt_i": 8} +{"session": "p1_r2", "sha": "a79e36e1fdfcf8c2", "notes": ["strata serve: decode expert cache hit rate: 88.0% (114095 hits / 129592 lookups); 2495 more read by the GPU over PCIe or from another GPU (1.9% of all 132087 routed)", "strata serve: asynchronous adaptive tier: 949 rounds, 48192 experts swapped in, 31.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 80 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 32, "prefill_tps": 94.4, "gen": 256, "decode_tps": 106.0, "acc": 177, "drafted": 216, "variant": "p1", "round": "2", "prompt_i": 9} +{"session": "p1_r2", "sha": "bd98ea9596950cd6", "notes": ["strata serve: decode expert cache hit rate: 90.3% (141434 hits / 156574 lookups); 1544 more read by the GPU over PCIe or from another GPU (1.0% of all 158118 routed)", "strata serve: asynchronous adaptive tier: 1064 rounds, 53070 experts swapped in, 31.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 115 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 84.2, "gen": 256, "decode_tps": 93.1, "acc": 141, "drafted": 233, "variant": "p1", "round": "2", "prompt_i": 10} +{"session": "p1_r2", "sha": "a5184cf865a4100f", "notes": ["strata serve: decode expert cache hit rate: 92.8% (131174 hits / 141327 lookups); 1084 more read by the GPU over PCIe or from another GPU (0.8% of all 142411 routed)", "strata serve: asynchronous adaptive tier: 1157 rounds, 57181 experts swapped in, 31.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted", "strata serve: lookup chain: 0 of 93 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 24, "prefill_tps": 91.4, "gen": 256, "decode_tps": 113.8, "acc": 165, "drafted": 220, "variant": "p1", "round": "2", "prompt_i": 11} +{"session": "stack2_r2", "sha": "5ab1c910151bd037", "notes": ["strata serve: decode expert cache hit rate: 94.4% (90564 hits / 95945 lookups); 1507 more read by the GPU over PCIe or from another GPU (1.5% of all 97452 routed)", "strata serve: asynchronous adaptive tier: 96 rounds, 4194 experts swapped in, 32.4 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.13 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 82 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 26, "prefill_tps": 117.6, "gen": 156, "decode_tps": 92.3, "acc": 77, "drafted": 131, "variant": "stack2", "round": "2", "prompt_i": 0} +{"session": "stack2_r2", "sha": "b63a4521aaf8e359", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 88.9% (109617 hits / 123275 lookups); 3289 more read by the GPU over PCIe or from another GPU (2.6% of all 126564 routed)", "strata serve: asynchronous adaptive tier: 170 rounds, 8929 experts swapped in, 34.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 2 windows, 3 of 5 drafts accepted", "strata serve: lookup chain: 2 of 74 windows, 4 of 4 chained drafts accepted"], "prompt_tokens": 36, "prefill_tps": 96.7, "gen": 256, "decode_tps": 111.2, "acc": 183, "drafted": 210, "variant": "stack2", "round": "2", "prompt_i": 1} +{"session": "stack2_r2", "sha": "94034a2e9138c7c1", "notes": ["strata serve: decode expert cache hit rate: 87.5% (129628 hits / 148123 lookups); 4115 more read by the GPU over PCIe or from another GPU (2.7% of all 152238 routed)", "strata serve: asynchronous adaptive tier: 278 rounds, 14671 experts swapped in, 33.6 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.16 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 3 drafts accepted", "strata serve: lookup chain: 0 of 108 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 78.1, "gen": 256, "decode_tps": 88.7, "acc": 149, "drafted": 232, "variant": "stack2", "round": "2", "prompt_i": 2} +{"session": "stack2_r2", "sha": "e877fba0e149a1e2", "notes": ["strata serve: decode expert cache hit rate: 94.0% (145232 hits / 154565 lookups); 1493 more read by the GPU over PCIe or from another GPU (1.0% of all 156058 routed)", "strata serve: asynchronous adaptive tier: 383 rounds, 19066 experts swapped in, 31.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 0 of 3 drafts accepted", "strata serve: lookup chain: 2 of 105 windows, 2 of 3 chained drafts accepted"], "prompt_tokens": 28, "prefill_tps": 83.7, "gen": 256, "decode_tps": 106.9, "acc": 153, "drafted": 238, "variant": "stack2", "round": "2", "prompt_i": 3} +{"session": "stack2_r2", "sha": "2e29723cd580a7a3", "notes": ["strata serve: decode expert cache hit rate: 92.4% (147335 hits / 159375 lookups); 1885 more read by the GPU over PCIe or from another GPU (1.2% of all 161260 routed)", "strata serve: asynchronous adaptive tier: 497 rounds, 24038 experts swapped in, 31.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 114 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 23, "prefill_tps": 86.4, "gen": 256, "decode_tps": 95.1, "acc": 142, "drafted": 240, "variant": "stack2", "round": "2", "prompt_i": 4} +{"session": "stack2_r2", "sha": "9770fe79f4832c54", "notes": ["strata serve: decode expert cache hit rate: 93.1% (147810 hits / 158680 lookups); 1647 more read by the GPU over PCIe or from another GPU (1.0% of all 160327 routed)", "strata serve: asynchronous adaptive tier: 603 rounds, 28557 experts swapped in, 30.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 106 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 33, "prefill_tps": 86.9, "gen": 256, "decode_tps": 103.7, "acc": 153, "drafted": 245, "variant": "stack2", "round": "2", "prompt_i": 5} +{"session": "stack2_r2", "sha": "7bd6eb2efbfb6f52", "notes": ["strata serve: decode expert cache hit rate: 90.0% (141436 hits / 157132 lookups); 2668 more read by the GPU over PCIe or from another GPU (1.7% of all 159800 routed)", "strata serve: asynchronous adaptive tier: 721 rounds, 33880 experts swapped in, 30.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 118 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 27, "prefill_tps": 84.4, "gen": 252, "decode_tps": 87.6, "acc": 136, "drafted": 236, "variant": "stack2", "round": "2", "prompt_i": 6} +{"session": "stack2_r2", "sha": "a2325d1b0cd42b9a", "notes": ["strata serve: decode expert cache hit rate: 91.6% (129172 hits / 141082 lookups); 2209 more read by the GPU over PCIe or from another GPU (1.5% of all 143291 routed)", "strata serve: asynchronous adaptive tier: 822 rounds, 38515 experts swapped in, 30.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 2 of 101 windows, 2 of 3 chained drafts accepted"], "prompt_tokens": 29, "prefill_tps": 88.4, "gen": 256, "decode_tps": 106.9, "acc": 157, "drafted": 216, "variant": "stack2", "round": "2", "prompt_i": 7} +{"session": "stack2_r2", "sha": "1864319f89ba324e", "notes": ["strata serve: decode expert cache hit rate: 85.6% (113739 hits / 132831 lookups); 3436 more read by the GPU over PCIe or from another GPU (2.5% of all 136267 routed)", "strata serve: asynchronous adaptive tier: 907 rounds, 44224 experts swapped in, 30.6 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 3 of 85 windows, 2 of 6 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 95.1, "gen": 256, "decode_tps": 98.9, "acc": 172, "drafted": 222, "variant": "stack2", "round": "2", "prompt_i": 8} +{"session": "stack2_r2", "sha": "ab214101c9d5a9a7", "notes": ["strata serve: decode expert cache hit rate: 88.6% (116029 hits / 131009 lookups); 2788 more read by the GPU over PCIe or from another GPU (2.1% of all 133797 routed)", "strata serve: asynchronous adaptive tier: 988 rounds, 49164 experts swapped in, 31.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 81 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 32, "prefill_tps": 92.3, "gen": 256, "decode_tps": 108.7, "acc": 175, "drafted": 219, "variant": "stack2", "round": "2", "prompt_i": 9} +{"session": "stack2_r2", "sha": "d800d30c04d02cc2", "notes": ["strata serve: decode expert cache hit rate: 91.5% (144640 hits / 158145 lookups); 2294 more read by the GPU over PCIe or from another GPU (1.4% of all 160439 routed)", "strata serve: asynchronous adaptive tier: 1107 rounds, 53975 experts swapped in, 30.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.17 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 2 windows, 2 of 4 drafts accepted", "strata serve: lookup chain: 1 of 119 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 86.3, "gen": 256, "decode_tps": 90.9, "acc": 138, "drafted": 234, "variant": "stack2", "round": "2", "prompt_i": 10} +{"session": "stack2_r2", "sha": "26011b0aa2eae8dd", "notes": ["strata serve: decode expert cache hit rate: 93.0% (131140 hits / 141003 lookups); 1457 more read by the GPU over PCIe or from another GPU (1.0% of all 142460 routed)", "strata serve: asynchronous adaptive tier: 1197 rounds, 58067 experts swapped in, 30.6 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.17 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 90 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 24, "prefill_tps": 92.2, "gen": 256, "decode_tps": 117.1, "acc": 168, "drafted": 223, "variant": "stack2", "round": "2", "prompt_i": 11} diff --git a/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/cold_on_async_pcie.jsonl b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/cold_on_async_pcie.jsonl new file mode 100644 index 00000000000..d4d3802170c --- /dev/null +++ b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/cold_on_async_pcie.jsonl @@ -0,0 +1,84 @@ +{"session": "stack2_r1", "sha": "b63cae5440075e6d", "notes": ["strata serve: decode expert cache hit rate: 94.6% (87721 hits / 92701 lookups); 1850 more read by the GPU over PCIe or from another GPU (2.0% of all 94551 routed)", "strata serve: asynchronous adaptive tier: 91 rounds, 4190 experts swapped in, 34.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 2 of 77 windows, 0 of 2 chained drafts accepted"], "prompt_tokens": 26, "prefill_tps": 105.8, "gen": 149, "decode_tps": 91.3, "acc": 74, "drafted": 130, "variant": "stack2", "round": "1", "prompt_i": 0} +{"session": "stack2_r1", "sha": "49d6ef3c0f8300cf", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 90.2% (110631 hits / 122684 lookups); 4421 more read by the GPU over PCIe or from another GPU (3.5% of all 127105 routed)", "strata serve: asynchronous adaptive tier: 165 rounds, 8932 experts swapped in, 37.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.16 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 2 windows, 6 of 7 drafts accepted", "strata serve: lookup chain: 4 of 74 windows, 1 of 5 chained drafts accepted"], "prompt_tokens": 36, "prefill_tps": 85.6, "gen": 256, "decode_tps": 101.5, "acc": 182, "drafted": 211, "variant": "stack2", "round": "1", "prompt_i": 1} +{"session": "stack2_r1", "sha": "93fec5a545198a57", "notes": ["strata serve: decode expert cache hit rate: 89.4% (130803 hits / 146319 lookups); 5082 more read by the GPU over PCIe or from another GPU (3.4% of all 151401 routed)", "strata serve: asynchronous adaptive tier: 270 rounds, 14221 experts swapped in, 35.8 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.17 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 105 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 79.5, "gen": 256, "decode_tps": 86.3, "acc": 151, "drafted": 232, "variant": "stack2", "round": "1", "prompt_i": 2} +{"session": "stack2_r1", "sha": "cc473dbb95dd468a", "notes": ["strata serve: decode expert cache hit rate: 93.9% (145849 hits / 155302 lookups); 1877 more read by the GPU over PCIe or from another GPU (1.2% of all 157179 routed)", "strata serve: asynchronous adaptive tier: 381 rounds, 18631 experts swapped in, 33.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.16 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 4 windows, 6 of 11 drafts accepted", "strata serve: lookup chain: 1 of 111 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 28, "prefill_tps": 71.4, "gen": 256, "decode_tps": 102.8, "acc": 148, "drafted": 235, "variant": "stack2", "round": "1", "prompt_i": 3} +{"session": "stack2_r1", "sha": "0b7cf7d63d17474b", "notes": ["strata serve: decode expert cache hit rate: 92.7% (144298 hits / 155595 lookups); 2158 more read by the GPU over PCIe or from another GPU (1.4% of all 157753 routed)", "strata serve: asynchronous adaptive tier: 497 rounds, 23623 experts swapped in, 32.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 116 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 23, "prefill_tps": 79.7, "gen": 256, "decode_tps": 91.5, "acc": 141, "drafted": 231, "variant": "stack2", "round": "1", "prompt_i": 4} +{"session": "stack2_r1", "sha": "40a1f2dde6af298a", "notes": ["strata serve: decode expert cache hit rate: 93.2% (147478 hits / 158303 lookups); 2004 more read by the GPU over PCIe or from another GPU (1.3% of all 160307 routed)", "strata serve: asynchronous adaptive tier: 605 rounds, 28319 experts swapped in, 31.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 108 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 33, "prefill_tps": 91.6, "gen": 256, "decode_tps": 99.6, "acc": 148, "drafted": 243, "variant": "stack2", "round": "1", "prompt_i": 5} +{"session": "stack2_r1", "sha": "50cf5c86f8dade94", "notes": ["strata serve: decode expert cache hit rate: 87.9% (103734 hits / 118028 lookups); 3403 more read by the GPU over PCIe or from another GPU (2.8% of all 121431 routed)", "strata serve: asynchronous adaptive tier: 692 rounds, 32844 experts swapped in, 31.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 2 of 87 windows, 0 of 4 chained drafts accepted"], "prompt_tokens": 27, "prefill_tps": 81.2, "gen": 218, "decode_tps": 85.7, "acc": 131, "drafted": 184, "variant": "stack2", "round": "1", "prompt_i": 6} +{"session": "stack2_r1", "sha": "66a3aa60e44e8bbc", "notes": ["strata serve: decode expert cache hit rate: 92.4% (133545 hits / 144559 lookups); 2584 more read by the GPU over PCIe or from another GPU (1.8% of all 147143 routed)", "strata serve: asynchronous adaptive tier: 793 rounds, 37399 experts swapped in, 31.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 2 of 3 drafts accepted", "strata serve: lookup chain: 0 of 101 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 29, "prefill_tps": 88.7, "gen": 256, "decode_tps": 103.6, "acc": 155, "drafted": 224, "variant": "stack2", "round": "1", "prompt_i": 7} +{"session": "stack2_r1", "sha": "cd3b55e275ab5c0f", "notes": ["strata serve: decode expert cache hit rate: 89.5% (122733 hits / 137183 lookups); 3120 more read by the GPU over PCIe or from another GPU (2.2% of all 140303 routed)", "strata serve: asynchronous adaptive tier: 883 rounds, 42622 experts swapped in, 31.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 5 windows, 14 of 23 drafts accepted", "strata serve: lookup chain: 0 of 90 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 90.1, "gen": 256, "decode_tps": 101.2, "acc": 167, "drafted": 224, "variant": "stack2", "round": "1", "prompt_i": 8} +{"session": "stack2_r1", "sha": "7ed07f55366475be", "notes": ["strata serve: decode expert cache hit rate: 90.2% (117323 hits / 130005 lookups); 2792 more read by the GPU over PCIe or from another GPU (2.1% of all 132797 routed)", "strata serve: asynchronous adaptive tier: 962 rounds, 47047 experts swapped in, 32.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 79 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 32, "prefill_tps": 93.2, "gen": 256, "decode_tps": 116.3, "acc": 178, "drafted": 217, "variant": "stack2", "round": "1", "prompt_i": 9} +{"session": "stack2_r1", "sha": "146e12a85205057f", "notes": ["strata serve: decode expert cache hit rate: 91.0% (141178 hits / 155064 lookups); 3082 more read by the GPU over PCIe or from another GPU (1.9% of all 158146 routed)", "strata serve: asynchronous adaptive tier: 1088 rounds, 52052 experts swapped in, 31.4 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 126 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 85.1, "gen": 256, "decode_tps": 90.9, "acc": 130, "drafted": 223, "variant": "stack2", "round": "1", "prompt_i": 10} +{"session": "stack2_r1", "sha": "5af1275047a6fd9a", "notes": ["strata serve: decode expert cache hit rate: 93.1% (133465 hits / 143407 lookups); 1775 more read by the GPU over PCIe or from another GPU (1.2% of all 145182 routed)", "strata serve: asynchronous adaptive tier: 1181 rounds, 56389 experts swapped in, 31.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 6 windows, 7 of 10 drafts accepted", "strata serve: lookup chain: 0 of 93 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 24, "prefill_tps": 90.7, "gen": 256, "decode_tps": 114.0, "acc": 163, "drafted": 226, "variant": "stack2", "round": "1", "prompt_i": 11} +{"session": "p1pm_r1", "sha": "f17218d8685c5792", "notes": ["strata serve: decode expert cache hit rate: 94.0% (87075 hits / 92643 lookups); 1436 more read by the GPU over PCIe or from another GPU (1.5% of all 94079 routed)", "strata serve: asynchronous adaptive tier: 93 rounds, 4429 experts swapped in, 33.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.13 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 2 of 76 windows, 0 of 2 chained drafts accepted"], "prompt_tokens": 26, "prefill_tps": 136.0, "gen": 153, "decode_tps": 97.4, "acc": 79, "drafted": 130, "variant": "p1pm", "round": "1", "prompt_i": 0} +{"session": "p1pm_r1", "sha": "cd99b0b3e34bd724", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 89.5% (117895 hits / 131793 lookups); 3842 more read by the GPU over PCIe or from another GPU (2.8% of all 135635 routed)", "strata serve: asynchronous adaptive tier: 171 rounds, 9452 experts swapped in, 34.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 2 of 4 drafts accepted", "strata serve: lookup chain: 3 of 78 windows, 0 of 5 chained drafts accepted"], "prompt_tokens": 36, "prefill_tps": 107.8, "gen": 256, "decode_tps": 112.2, "acc": 181, "drafted": 226, "variant": "p1pm", "round": "1", "prompt_i": 1} +{"session": "p1pm_r1", "sha": "d6f45a704920c48c", "notes": ["strata serve: decode expert cache hit rate: 87.5% (132141 hits / 150946 lookups); 2457 more read by the GPU over PCIe or from another GPU (1.6% of all 153403 routed)", "strata serve: asynchronous adaptive tier: 272 rounds, 14973 experts swapped in, 34.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.16 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 3 drafts accepted", "strata serve: lookup chain: 0 of 101 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 85.2, "gen": 256, "decode_tps": 88.4, "acc": 156, "drafted": 241, "variant": "p1pm", "round": "1", "prompt_i": 2} +{"session": "p1pm_r1", "sha": "404f60d5b0704ecb", "notes": ["strata serve: decode expert cache hit rate: 93.7% (140675 hits / 150107 lookups); 1814 more read by the GPU over PCIe or from another GPU (1.2% of all 151921 routed)", "strata serve: asynchronous adaptive tier: 377 rounds, 19286 experts swapped in, 32.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 2 of 3 drafts accepted", "strata serve: lookup chain: 3 of 105 windows, 0 of 4 chained drafts accepted"], "prompt_tokens": 28, "prefill_tps": 80.5, "gen": 256, "decode_tps": 108.6, "acc": 152, "drafted": 230, "variant": "p1pm", "round": "1", "prompt_i": 3} +{"session": "p1pm_r1", "sha": "f2eb6fe899250625", "notes": ["strata serve: decode expert cache hit rate: 93.1% (150625 hits / 161777 lookups); 1887 more read by the GPU over PCIe or from another GPU (1.2% of all 163664 routed)", "strata serve: asynchronous adaptive tier: 491 rounds, 24095 experts swapped in, 31.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 114 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 23, "prefill_tps": 91.4, "gen": 256, "decode_tps": 96.4, "acc": 144, "drafted": 245, "variant": "p1pm", "round": "1", "prompt_i": 4} +{"session": "p1pm_r1", "sha": "9151e1f753259a16", "notes": ["strata serve: decode expert cache hit rate: 92.8% (137738 hits / 148392 lookups); 2354 more read by the GPU over PCIe or from another GPU (1.6% of all 150746 routed)", "strata serve: asynchronous adaptive tier: 595 rounds, 28700 experts swapped in, 30.6 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 104 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 33, "prefill_tps": 97.3, "gen": 256, "decode_tps": 107.2, "acc": 154, "drafted": 227, "variant": "p1pm", "round": "1", "prompt_i": 5} +{"session": "p1pm_r1", "sha": "34a623fd80f472e9", "notes": ["strata serve: decode expert cache hit rate: 90.1% (140032 hits / 155500 lookups); 2602 more read by the GPU over PCIe or from another GPU (1.6% of all 158102 routed)", "strata serve: asynchronous adaptive tier: 711 rounds, 33993 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 116 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 27, "prefill_tps": 84.6, "gen": 256, "decode_tps": 90.0, "acc": 142, "drafted": 234, "variant": "p1pm", "round": "1", "prompt_i": 6} +{"session": "p1pm_r1", "sha": "ba07ec9ea9e4d906", "notes": ["strata serve: decode expert cache hit rate: 92.1% (131307 hits / 142611 lookups); 1456 more read by the GPU over PCIe or from another GPU (1.0% of all 144067 routed)", "strata serve: asynchronous adaptive tier: 813 rounds, 38379 experts swapped in, 30.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 3 drafts accepted", "strata serve: lookup chain: 0 of 102 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 29, "prefill_tps": 82.7, "gen": 256, "decode_tps": 107.5, "acc": 155, "drafted": 216, "variant": "p1pm", "round": "1", "prompt_i": 7} +{"session": "p1pm_r1", "sha": "262325624b9c237c", "notes": ["strata serve: decode expert cache hit rate: 88.2% (133561 hits / 151413 lookups); 3560 more read by the GPU over PCIe or from another GPU (2.3% of all 154973 routed)", "strata serve: asynchronous adaptive tier: 916 rounds, 44317 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 3 windows, 5 of 6 drafts accepted", "strata serve: lookup chain: 6 of 103 windows, 8 of 10 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 93.5, "gen": 256, "decode_tps": 90.3, "acc": 156, "drafted": 244, "variant": "p1pm", "round": "1", "prompt_i": 8} +{"session": "p1pm_r1", "sha": "1399ebf14598d778", "notes": ["strata serve: decode expert cache hit rate: 90.1% (117905 hits / 130907 lookups); 2732 more read by the GPU over PCIe or from another GPU (2.0% of all 133639 routed)", "strata serve: asynchronous adaptive tier: 995 rounds, 49004 experts swapped in, 30.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 2 of 79 windows, 1 of 4 chained drafts accepted"], "prompt_tokens": 32, "prefill_tps": 82.3, "gen": 256, "decode_tps": 112.6, "acc": 177, "drafted": 219, "variant": "p1pm", "round": "1", "prompt_i": 9} +{"session": "p1pm_r1", "sha": "4db8c27cf6a84ead", "notes": ["strata serve: decode expert cache hit rate: 91.3% (147329 hits / 161332 lookups); 2095 more read by the GPU over PCIe or from another GPU (1.3% of all 163427 routed)", "strata serve: asynchronous adaptive tier: 1122 rounds, 54045 experts swapped in, 30.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 2 of 127 windows, 0 of 4 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 84.2, "gen": 256, "decode_tps": 88.8, "acc": 130, "drafted": 233, "variant": "p1pm", "round": "1", "prompt_i": 10} +{"session": "p1pm_r1", "sha": "b6d0386a9d916145", "notes": ["strata serve: decode expert cache hit rate: 93.3% (131019 hits / 140384 lookups); 1504 more read by the GPU over PCIe or from another GPU (1.1% of all 141888 routed)", "strata serve: asynchronous adaptive tier: 1216 rounds, 58115 experts swapped in, 30.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 94 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 24, "prefill_tps": 90.0, "gen": 256, "decode_tps": 114.2, "acc": 163, "drafted": 218, "variant": "p1pm", "round": "1", "prompt_i": 11} +{"session": "p1pf6_r1", "sha": "778e5a6acbbfc42c", "notes": ["strata serve: decode expert cache hit rate: 94.1% (79594 hits / 84620 lookups); 1548 more read by the GPU over PCIe or from another GPU (1.8% of all 86168 routed)", "strata serve: asynchronous adaptive tier: 86 rounds, 4333 experts swapped in, 33.8 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.13 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 69 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 26, "prefill_tps": 137.4, "gen": 134, "decode_tps": 95.1, "acc": 67, "drafted": 120, "variant": "p1pf6", "round": "1", "prompt_i": 0} +{"session": "p1pf6_r1", "sha": "53d74428a77fd76c", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 90.6% (110061 hits / 121545 lookups); 5439 more read by the GPU over PCIe or from another GPU (4.3% of all 126984 routed)", "strata serve: asynchronous adaptive tier: 161 rounds, 9237 experts swapped in, 34.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 2 windows, 3 of 6 drafts accepted", "strata serve: lookup chain: 1 of 75 windows, 2 of 2 chained drafts accepted"], "prompt_tokens": 36, "prefill_tps": 114.0, "gen": 256, "decode_tps": 119.7, "acc": 183, "drafted": 210, "variant": "p1pf6", "round": "1", "prompt_i": 1} +{"session": "p1pf6_r1", "sha": "47bcd0263d478325", "notes": ["strata serve: decode expert cache hit rate: 88.7% (138109 hits / 155634 lookups); 3858 more read by the GPU over PCIe or from another GPU (2.4% of all 159492 routed)", "strata serve: asynchronous adaptive tier: 268 rounds, 14649 experts swapped in, 33.4 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.16 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 3 of 107 windows, 0 of 3 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 92.2, "gen": 256, "decode_tps": 88.5, "acc": 152, "drafted": 247, "variant": "p1pf6", "round": "1", "prompt_i": 2} +{"session": "p1pf6_r1", "sha": "50014aa855d70311", "notes": ["strata serve: decode expert cache hit rate: 94.5% (139739 hits / 147944 lookups); 2570 more read by the GPU over PCIe or from another GPU (1.7% of all 150514 routed)", "strata serve: asynchronous adaptive tier: 371 rounds, 18861 experts swapped in, 31.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 2 windows, 2 of 6 drafts accepted", "strata serve: lookup chain: 2 of 103 windows, 0 of 2 chained drafts accepted"], "prompt_tokens": 28, "prefill_tps": 91.4, "gen": 256, "decode_tps": 111.8, "acc": 153, "drafted": 228, "variant": "p1pf6", "round": "1", "prompt_i": 3} +{"session": "p1pf6_r1", "sha": "6fc7bda098716000", "notes": ["strata serve: decode expert cache hit rate: 94.1% (142624 hits / 151517 lookups); 2522 more read by the GPU over PCIe or from another GPU (1.6% of all 154039 routed)", "strata serve: asynchronous adaptive tier: 477 rounds, 23274 experts swapped in, 30.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 106 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 23, "prefill_tps": 101.1, "gen": 256, "decode_tps": 106.3, "acc": 151, "drafted": 231, "variant": "p1pf6", "round": "1", "prompt_i": 4} +{"session": "p1pf6_r1", "sha": "927c22874c615895", "notes": ["strata serve: decode expert cache hit rate: 93.6% (138700 hits / 148141 lookups); 3649 more read by the GPU over PCIe or from another GPU (2.4% of all 151790 routed)", "strata serve: asynchronous adaptive tier: 580 rounds, 28112 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 103 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 33, "prefill_tps": 109.4, "gen": 256, "decode_tps": 105.4, "acc": 153, "drafted": 231, "variant": "p1pf6", "round": "1", "prompt_i": 5} +{"session": "p1pf6_r1", "sha": "81f50b321b63cff3", "notes": ["strata serve: decode expert cache hit rate: 89.5% (135680 hits / 151542 lookups); 5135 more read by the GPU over PCIe or from another GPU (3.3% of all 156677 routed)", "strata serve: asynchronous adaptive tier: 688 rounds, 33787 experts swapped in, 30.4 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 2 of 108 windows, 0 of 4 chained drafts accepted"], "prompt_tokens": 27, "prefill_tps": 89.3, "gen": 256, "decode_tps": 89.9, "acc": 151, "drafted": 241, "variant": "p1pf6", "round": "1", "prompt_i": 6} +{"session": "p1pf6_r1", "sha": "c5f92576729bf280", "notes": ["strata serve: decode expert cache hit rate: 91.8% (137808 hits / 150074 lookups); 2663 more read by the GPU over PCIe or from another GPU (1.7% of all 152737 routed)", "strata serve: asynchronous adaptive tier: 804 rounds, 38666 experts swapped in, 30.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 116 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 29, "prefill_tps": 84.3, "gen": 256, "decode_tps": 96.3, "acc": 140, "drafted": 222, "variant": "p1pf6", "round": "1", "prompt_i": 7} +{"session": "p1pf6_r1", "sha": "ed59d680ea4cc16f", "notes": ["strata serve: decode expert cache hit rate: 88.5% (125760 hits / 142122 lookups); 6512 more read by the GPU over PCIe or from another GPU (4.4% of all 148634 routed)", "strata serve: asynchronous adaptive tier: 900 rounds, 44751 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 3 windows, 4 of 6 drafts accepted", "strata serve: lookup chain: 0 of 96 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 97.6, "gen": 256, "decode_tps": 94.6, "acc": 162, "drafted": 238, "variant": "p1pf6", "round": "1", "prompt_i": 8} +{"session": "p1pf6_r1", "sha": "1399ebf14598d778", "notes": ["strata serve: decode expert cache hit rate: 91.2% (116281 hits / 127558 lookups); 4586 more read by the GPU over PCIe or from another GPU (3.5% of all 132144 routed)", "strata serve: asynchronous adaptive tier: 980 rounds, 49399 experts swapped in, 30.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 80 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 32, "prefill_tps": 102.2, "gen": 256, "decode_tps": 114.4, "acc": 176, "drafted": 215, "variant": "p1pf6", "round": "1", "prompt_i": 9} +{"session": "p1pf6_r1", "sha": "9f104208dba40fb9", "notes": ["strata serve: decode expert cache hit rate: 92.1% (145304 hits / 157702 lookups); 3186 more read by the GPU over PCIe or from another GPU (2.0% of all 160888 routed)", "strata serve: asynchronous adaptive tier: 1097 rounds, 54324 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 117 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 91.4, "gen": 256, "decode_tps": 94.6, "acc": 139, "drafted": 237, "variant": "p1pf6", "round": "1", "prompt_i": 10} +{"session": "p1pf6_r1", "sha": "356bb2a87582572e", "notes": ["strata serve: decode expert cache hit rate: 93.9% (131209 hits / 139777 lookups); 2320 more read by the GPU over PCIe or from another GPU (1.6% of all 142097 routed)", "strata serve: asynchronous adaptive tier: 1187 rounds, 58366 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 90 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 24, "prefill_tps": 97.1, "gen": 256, "decode_tps": 115.4, "acc": 166, "drafted": 222, "variant": "p1pf6", "round": "1", "prompt_i": 11} +{"session": "p1both_r2", "sha": "778e5a6acbbfc42c", "notes": ["strata serve: decode expert cache hit rate: 94.1% (79594 hits / 84620 lookups); 1548 more read by the GPU over PCIe or from another GPU (1.8% of all 86168 routed)", "strata serve: asynchronous adaptive tier: 86 rounds, 4333 experts swapped in, 33.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.13 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 69 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 26, "prefill_tps": 135.3, "gen": 134, "decode_tps": 95.0, "acc": 67, "drafted": 120, "variant": "p1both", "round": "2", "prompt_i": 0} +{"session": "p1both_r2", "sha": "53d74428a77fd76c", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 90.6% (110061 hits / 121545 lookups); 5439 more read by the GPU over PCIe or from another GPU (4.3% of all 126984 routed)", "strata serve: asynchronous adaptive tier: 161 rounds, 9237 experts swapped in, 34.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 2 windows, 3 of 6 drafts accepted", "strata serve: lookup chain: 1 of 75 windows, 2 of 2 chained drafts accepted"], "prompt_tokens": 36, "prefill_tps": 111.3, "gen": 256, "decode_tps": 120.0, "acc": 183, "drafted": 210, "variant": "p1both", "round": "2", "prompt_i": 1} +{"session": "p1both_r2", "sha": "47bcd0263d478325", "notes": ["strata serve: decode expert cache hit rate: 88.7% (138109 hits / 155634 lookups); 3858 more read by the GPU over PCIe or from another GPU (2.4% of all 159492 routed)", "strata serve: asynchronous adaptive tier: 268 rounds, 14649 experts swapped in, 33.4 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.16 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 3 of 107 windows, 0 of 3 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 92.0, "gen": 256, "decode_tps": 88.8, "acc": 152, "drafted": 247, "variant": "p1both", "round": "2", "prompt_i": 2} +{"session": "p1both_r2", "sha": "50014aa855d70311", "notes": ["strata serve: decode expert cache hit rate: 94.5% (139739 hits / 147944 lookups); 2570 more read by the GPU over PCIe or from another GPU (1.7% of all 150514 routed)", "strata serve: asynchronous adaptive tier: 371 rounds, 18861 experts swapped in, 31.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 2 windows, 2 of 6 drafts accepted", "strata serve: lookup chain: 2 of 103 windows, 0 of 2 chained drafts accepted"], "prompt_tokens": 28, "prefill_tps": 70.1, "gen": 256, "decode_tps": 111.8, "acc": 153, "drafted": 228, "variant": "p1both", "round": "2", "prompt_i": 3} +{"session": "p1both_r2", "sha": "6fc7bda098716000", "notes": ["strata serve: decode expert cache hit rate: 94.1% (142624 hits / 151517 lookups); 2522 more read by the GPU over PCIe or from another GPU (1.6% of all 154039 routed)", "strata serve: asynchronous adaptive tier: 477 rounds, 23274 experts swapped in, 30.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 106 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 23, "prefill_tps": 102.1, "gen": 256, "decode_tps": 106.7, "acc": 151, "drafted": 231, "variant": "p1both", "round": "2", "prompt_i": 4} +{"session": "p1both_r2", "sha": "927c22874c615895", "notes": ["strata serve: decode expert cache hit rate: 93.6% (138700 hits / 148141 lookups); 3649 more read by the GPU over PCIe or from another GPU (2.4% of all 151790 routed)", "strata serve: asynchronous adaptive tier: 580 rounds, 28112 experts swapped in, 30.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 103 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 33, "prefill_tps": 109.7, "gen": 256, "decode_tps": 107.5, "acc": 153, "drafted": 231, "variant": "p1both", "round": "2", "prompt_i": 5} +{"session": "p1both_r2", "sha": "81f50b321b63cff3", "notes": ["strata serve: decode expert cache hit rate: 89.5% (135680 hits / 151542 lookups); 5135 more read by the GPU over PCIe or from another GPU (3.3% of all 156677 routed)", "strata serve: asynchronous adaptive tier: 688 rounds, 33787 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 2 of 108 windows, 0 of 4 chained drafts accepted"], "prompt_tokens": 27, "prefill_tps": 90.1, "gen": 256, "decode_tps": 89.0, "acc": 151, "drafted": 241, "variant": "p1both", "round": "2", "prompt_i": 6} +{"session": "p1both_r2", "sha": "c5f92576729bf280", "notes": ["strata serve: decode expert cache hit rate: 91.8% (137808 hits / 150074 lookups); 2663 more read by the GPU over PCIe or from another GPU (1.7% of all 152737 routed)", "strata serve: asynchronous adaptive tier: 804 rounds, 38666 experts swapped in, 29.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 116 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 29, "prefill_tps": 79.6, "gen": 256, "decode_tps": 95.9, "acc": 140, "drafted": 222, "variant": "p1both", "round": "2", "prompt_i": 7} +{"session": "p1both_r2", "sha": "ed59d680ea4cc16f", "notes": ["strata serve: decode expert cache hit rate: 88.5% (125760 hits / 142122 lookups); 6512 more read by the GPU over PCIe or from another GPU (4.4% of all 148634 routed)", "strata serve: asynchronous adaptive tier: 900 rounds, 44751 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 3 windows, 4 of 6 drafts accepted", "strata serve: lookup chain: 0 of 96 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 101.1, "gen": 256, "decode_tps": 95.5, "acc": 162, "drafted": 238, "variant": "p1both", "round": "2", "prompt_i": 8} +{"session": "p1both_r2", "sha": "1399ebf14598d778", "notes": ["strata serve: decode expert cache hit rate: 91.2% (116281 hits / 127558 lookups); 4586 more read by the GPU over PCIe or from another GPU (3.5% of all 132144 routed)", "strata serve: asynchronous adaptive tier: 980 rounds, 49399 experts swapped in, 30.6 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 80 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 32, "prefill_tps": 102.0, "gen": 256, "decode_tps": 115.9, "acc": 176, "drafted": 215, "variant": "p1both", "round": "2", "prompt_i": 9} +{"session": "p1both_r2", "sha": "9f104208dba40fb9", "notes": ["strata serve: decode expert cache hit rate: 92.1% (145304 hits / 157702 lookups); 3186 more read by the GPU over PCIe or from another GPU (2.0% of all 160888 routed)", "strata serve: asynchronous adaptive tier: 1097 rounds, 54324 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 117 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 83.3, "gen": 256, "decode_tps": 93.9, "acc": 139, "drafted": 237, "variant": "p1both", "round": "2", "prompt_i": 10} +{"session": "p1both_r2", "sha": "356bb2a87582572e", "notes": ["strata serve: decode expert cache hit rate: 93.9% (131209 hits / 139777 lookups); 2320 more read by the GPU over PCIe or from another GPU (1.6% of all 142097 routed)", "strata serve: asynchronous adaptive tier: 1187 rounds, 58366 experts swapped in, 30.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 90 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 24, "prefill_tps": 100.7, "gen": 256, "decode_tps": 118.8, "acc": 166, "drafted": 222, "variant": "p1both", "round": "2", "prompt_i": 11} +{"session": "p1pf6_r2", "sha": "778e5a6acbbfc42c", "notes": ["strata serve: decode expert cache hit rate: 94.1% (79594 hits / 84620 lookups); 1548 more read by the GPU over PCIe or from another GPU (1.8% of all 86168 routed)", "strata serve: asynchronous adaptive tier: 86 rounds, 4333 experts swapped in, 33.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.13 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 69 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 26, "prefill_tps": 132.5, "gen": 134, "decode_tps": 95.0, "acc": 67, "drafted": 120, "variant": "p1pf6", "round": "2", "prompt_i": 0} +{"session": "p1pf6_r2", "sha": "53d74428a77fd76c", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 90.6% (110061 hits / 121545 lookups); 5439 more read by the GPU over PCIe or from another GPU (4.3% of all 126984 routed)", "strata serve: asynchronous adaptive tier: 161 rounds, 9237 experts swapped in, 34.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 2 windows, 3 of 6 drafts accepted", "strata serve: lookup chain: 1 of 75 windows, 2 of 2 chained drafts accepted"], "prompt_tokens": 36, "prefill_tps": 112.8, "gen": 256, "decode_tps": 120.7, "acc": 183, "drafted": 210, "variant": "p1pf6", "round": "2", "prompt_i": 1} +{"session": "p1pf6_r2", "sha": "410c2a7039e4ce62", "notes": ["strata serve: decode expert cache hit rate: 88.7% (136720 hits / 154195 lookups); 3851 more read by the GPU over PCIe or from another GPU (2.4% of all 158046 routed)", "strata serve: asynchronous adaptive tier: 268 rounds, 14638 experts swapped in, 33.4 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 107 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 92.2, "gen": 256, "decode_tps": 88.6, "acc": 152, "drafted": 244, "variant": "p1pf6", "round": "2", "prompt_i": 2} +{"session": "p1pf6_r2", "sha": "e53e19f4862d288d", "notes": ["strata serve: decode expert cache hit rate: 93.4% (141446 hits / 151373 lookups); 3368 more read by the GPU over PCIe or from another GPU (2.2% of all 154741 routed)", "strata serve: asynchronous adaptive tier: 373 rounds, 19434 experts swapped in, 32.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 2 windows, 2 of 6 drafts accepted", "strata serve: lookup chain: 0 of 105 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 28, "prefill_tps": 91.3, "gen": 256, "decode_tps": 103.6, "acc": 154, "drafted": 236, "variant": "p1pf6", "round": "2", "prompt_i": 3} +{"session": "p1pf6_r2", "sha": "bafdd6d3450ea477", "notes": ["strata serve: decode expert cache hit rate: 93.0% (145524 hits / 156428 lookups); 3126 more read by the GPU over PCIe or from another GPU (2.0% of all 159554 routed)", "strata serve: asynchronous adaptive tier: 485 rounds, 24249 experts swapped in, 31.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 112 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 23, "prefill_tps": 100.1, "gen": 256, "decode_tps": 97.0, "acc": 146, "drafted": 239, "variant": "p1pf6", "round": "2", "prompt_i": 4} +{"session": "p1pf6_r2", "sha": "cfbb6a66d54854d6", "notes": ["strata serve: decode expert cache hit rate: 93.8% (140787 hits / 150048 lookups); 3573 more read by the GPU over PCIe or from another GPU (2.3% of all 153621 routed)", "strata serve: asynchronous adaptive tier: 590 rounds, 28934 experts swapped in, 30.4 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 105 windows, 0 of 2 chained drafts accepted"], "prompt_tokens": 33, "prefill_tps": 105.5, "gen": 256, "decode_tps": 107.5, "acc": 153, "drafted": 232, "variant": "p1pf6", "round": "2", "prompt_i": 5} +{"session": "p1pf6_r2", "sha": "26b52dd0f2bfead6", "notes": ["strata serve: decode expert cache hit rate: 91.1% (147172 hits / 161525 lookups); 4299 more read by the GPU over PCIe or from another GPU (2.6% of all 165824 routed)", "strata serve: asynchronous adaptive tier: 708 rounds, 34306 experts swapped in, 30.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 118 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 27, "prefill_tps": 93.9, "gen": 256, "decode_tps": 88.7, "acc": 141, "drafted": 249, "variant": "p1pf6", "round": "2", "prompt_i": 6} +{"session": "p1pf6_r2", "sha": "2b0d3d2c3ab6d3a6", "notes": ["strata serve: decode expert cache hit rate: 92.4% (131721 hits / 142566 lookups); 2271 more read by the GPU over PCIe or from another GPU (1.6% of all 144837 routed)", "strata serve: asynchronous adaptive tier: 810 rounds, 38629 experts swapped in, 29.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 3 drafts accepted", "strata serve: lookup chain: 0 of 102 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 29, "prefill_tps": 86.7, "gen": 256, "decode_tps": 107.9, "acc": 154, "drafted": 218, "variant": "p1pf6", "round": "2", "prompt_i": 7} +{"session": "p1pf6_r2", "sha": "e647fc706ae3c474", "notes": ["strata serve: decode expert cache hit rate: 89.7% (127482 hits / 142086 lookups); 5952 more read by the GPU over PCIe or from another GPU (4.0% of all 148038 routed)", "strata serve: asynchronous adaptive tier: 912 rounds, 44452 experts swapped in, 30.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted", "strata serve: lookup chain: 3 of 102 windows, 3 of 5 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 104.2, "gen": 256, "decode_tps": 96.1, "acc": 154, "drafted": 230, "variant": "p1pf6", "round": "2", "prompt_i": 8} +{"session": "p1pf6_r2", "sha": "b2a1738348c5189c", "notes": ["strata serve: decode expert cache hit rate: 91.5% (118685 hits / 129751 lookups); 4486 more read by the GPU over PCIe or from another GPU (3.3% of all 134237 routed)", "strata serve: asynchronous adaptive tier: 992 rounds, 49014 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 80 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 32, "prefill_tps": 101.9, "gen": 256, "decode_tps": 116.6, "acc": 177, "drafted": 219, "variant": "p1pf6", "round": "2", "prompt_i": 9} +{"session": "p1pf6_r2", "sha": "2d6d0a203d66b547", "notes": ["strata serve: decode expert cache hit rate: 91.5% (140126 hits / 153121 lookups); 3204 more read by the GPU over PCIe or from another GPU (2.0% of all 156325 routed)", "strata serve: asynchronous adaptive tier: 1106 rounds, 53839 experts swapped in, 30.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.16 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 114 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 89.5, "gen": 256, "decode_tps": 95.6, "acc": 143, "drafted": 230, "variant": "p1pf6", "round": "2", "prompt_i": 10} +{"session": "p1pf6_r2", "sha": "bd7f5743eac312b1", "notes": ["strata serve: decode expert cache hit rate: 93.7% (131721 hits / 140533 lookups); 2447 more read by the GPU over PCIe or from another GPU (1.7% of all 142980 routed)", "strata serve: asynchronous adaptive tier: 1194 rounds, 57905 experts swapped in, 30.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.16 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 88 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 24, "prefill_tps": 101.7, "gen": 256, "decode_tps": 118.6, "acc": 168, "drafted": 226, "variant": "p1pf6", "round": "2", "prompt_i": 11} +{"session": "p1pm_r2", "sha": "600fa23bdac03c2b", "notes": ["strata serve: decode expert cache hit rate: 93.4% (73877 hits / 79129 lookups); 1201 more read by the GPU over PCIe or from another GPU (1.5% of all 80330 routed)", "strata serve: asynchronous adaptive tier: 87 rounds, 4188 experts swapped in, 33.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 70 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 26, "prefill_tps": 136.8, "gen": 137, "decode_tps": 98.7, "acc": 68, "drafted": 106, "variant": "p1pm", "round": "2", "prompt_i": 0} +{"session": "p1pm_r2", "sha": "ec8dc2065f46dbbc", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 89.2% (115657 hits / 129605 lookups); 3212 more read by the GPU over PCIe or from another GPU (2.4% of all 132817 routed)", "strata serve: asynchronous adaptive tier: 164 rounds, 9240 experts swapped in, 35.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 2 of 4 drafts accepted", "strata serve: lookup chain: 7 of 77 windows, 5 of 14 chained drafts accepted"], "prompt_tokens": 36, "prefill_tps": 97.1, "gen": 256, "decode_tps": 110.6, "acc": 180, "drafted": 221, "variant": "p1pm", "round": "2", "prompt_i": 1} +{"session": "p1pm_r2", "sha": "fa733f50908eb787", "notes": ["strata serve: decode expert cache hit rate: 87.9% (144266 hits / 164123 lookups); 2549 more read by the GPU over PCIe or from another GPU (1.5% of all 166672 routed)", "strata serve: asynchronous adaptive tier: 272 rounds, 14811 experts swapped in, 34.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.16 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 108 windows, 0 of 2 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 85.1, "gen": 256, "decode_tps": 83.7, "acc": 150, "drafted": 262, "variant": "p1pm", "round": "2", "prompt_i": 2} +{"session": "p1pm_r2", "sha": "6916af449c11b3da", "notes": ["strata serve: decode expert cache hit rate: 94.3% (146907 hits / 155841 lookups); 1645 more read by the GPU over PCIe or from another GPU (1.0% of all 157486 routed)", "strata serve: asynchronous adaptive tier: 382 rounds, 19009 experts swapped in, 32.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 2 of 3 drafts accepted", "strata serve: lookup chain: 2 of 110 windows, 0 of 3 chained drafts accepted"], "prompt_tokens": 28, "prefill_tps": 80.4, "gen": 256, "decode_tps": 106.1, "acc": 147, "drafted": 236, "variant": "p1pm", "round": "2", "prompt_i": 3} +{"session": "p1pm_r2", "sha": "0cec6b5f5b31239e", "notes": ["strata serve: decode expert cache hit rate: 93.6% (149777 hits / 159941 lookups); 1718 more read by the GPU over PCIe or from another GPU (1.1% of all 161659 routed)", "strata serve: asynchronous adaptive tier: 494 rounds, 23628 experts swapped in, 30.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 112 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 23, "prefill_tps": 90.4, "gen": 256, "decode_tps": 100.2, "acc": 147, "drafted": 242, "variant": "p1pm", "round": "2", "prompt_i": 4} +{"session": "p1pm_r2", "sha": "8958ad7e7af5d8ec", "notes": ["strata serve: decode expert cache hit rate: 93.3% (147563 hits / 158122 lookups); 2417 more read by the GPU over PCIe or from another GPU (1.5% of all 160539 routed)", "strata serve: asynchronous adaptive tier: 600 rounds, 28291 experts swapped in, 30.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 106 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 33, "prefill_tps": 95.4, "gen": 256, "decode_tps": 102.4, "acc": 151, "drafted": 246, "variant": "p1pm", "round": "2", "prompt_i": 5} +{"session": "p1pm_r2", "sha": "ae1edebe3f93a56b", "notes": ["strata serve: decode expert cache hit rate: 89.9% (142259 hits / 158173 lookups); 2786 more read by the GPU over PCIe or from another GPU (1.7% of all 160959 routed)", "strata serve: asynchronous adaptive tier: 715 rounds, 33828 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 2 of 115 windows, 1 of 4 chained drafts accepted"], "prompt_tokens": 27, "prefill_tps": 87.0, "gen": 256, "decode_tps": 88.7, "acc": 143, "drafted": 242, "variant": "p1pm", "round": "2", "prompt_i": 6} +{"session": "p1pm_r2", "sha": "7e9a835a781ece3a", "notes": ["strata serve: decode expert cache hit rate: 90.8% (125497 hits / 138139 lookups); 1571 more read by the GPU over PCIe or from another GPU (1.1% of all 139710 routed)", "strata serve: asynchronous adaptive tier: 816 rounds, 38459 experts swapped in, 30.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 2 of 2 drafts accepted", "strata serve: lookup chain: 0 of 101 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 29, "prefill_tps": 77.1, "gen": 256, "decode_tps": 104.7, "acc": 155, "drafted": 209, "variant": "p1pm", "round": "2", "prompt_i": 7} +{"session": "p1pm_r2", "sha": "8b55c149ee5b137c", "notes": ["strata serve: decode expert cache hit rate: 88.2% (128495 hits / 145719 lookups); 3376 more read by the GPU over PCIe or from another GPU (2.3% of all 149095 routed)", "strata serve: asynchronous adaptive tier: 911 rounds, 44283 experts swapped in, 30.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 4 windows, 11 of 14 drafts accepted", "strata serve: lookup chain: 2 of 95 windows, 2 of 4 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 91.9, "gen": 256, "decode_tps": 95.1, "acc": 161, "drafted": 239, "variant": "p1pm", "round": "2", "prompt_i": 8} +{"session": "p1pm_r2", "sha": "1399ebf14598d778", "notes": ["strata serve: decode expert cache hit rate: 90.1% (119772 hits / 132875 lookups); 2669 more read by the GPU over PCIe or from another GPU (2.0% of all 135544 routed)", "strata serve: asynchronous adaptive tier: 992 rounds, 48951 experts swapped in, 30.9 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted", "strata serve: lookup chain: 0 of 81 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 32, "prefill_tps": 99.2, "gen": 256, "decode_tps": 109.7, "acc": 175, "drafted": 221, "variant": "p1pm", "round": "2", "prompt_i": 9} +{"session": "p1pm_r2", "sha": "f1b87bbe63112940", "notes": ["strata serve: decode expert cache hit rate: 90.9% (138922 hits / 152807 lookups); 2074 more read by the GPU over PCIe or from another GPU (1.3% of all 154881 routed)", "strata serve: asynchronous adaptive tier: 1110 rounds, 53752 experts swapped in, 30.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 118 windows, 0 of 2 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 83.9, "gen": 256, "decode_tps": 93.3, "acc": 139, "drafted": 224, "variant": "p1pm", "round": "2", "prompt_i": 10} +{"session": "p1pm_r2", "sha": "6282b048331a9157", "notes": ["strata serve: decode expert cache hit rate: 93.1% (131556 hits / 141370 lookups); 1512 more read by the GPU over PCIe or from another GPU (1.1% of all 142882 routed)", "strata serve: asynchronous adaptive tier: 1197 rounds, 57990 experts swapped in, 30.6 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 3 drafts accepted", "strata serve: lookup chain: 0 of 87 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 24, "prefill_tps": 93.1, "gen": 256, "decode_tps": 116.6, "acc": 169, "drafted": 227, "variant": "p1pm", "round": "2", "prompt_i": 11} +{"session": "stack2_r2", "sha": "ebb203ed86327d58", "notes": ["strata serve: decode expert cache hit rate: 93.7% (75579 hits / 80652 lookups); 1369 more read by the GPU over PCIe or from another GPU (1.7% of all 82021 routed)", "strata serve: asynchronous adaptive tier: 86 rounds, 3985 experts swapped in, 33.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.13 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 1 drafts accepted", "strata serve: lookup chain: 1 of 72 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 26, "prefill_tps": 128.2, "gen": 136, "decode_tps": 96.1, "acc": 67, "drafted": 108, "variant": "stack2", "round": "2", "prompt_i": 0} +{"session": "stack2_r2", "sha": "91f70604a65a360e", "notes": ["strata verify: captured the 5-token window (upload no error, sync no error)", "strata serve: decode expert cache hit rate: 89.1% (117125 hits / 131512 lookups); 2681 more read by the GPU over PCIe or from another GPU (2.0% of all 134193 routed)", "strata serve: asynchronous adaptive tier: 164 rounds, 9006 experts swapped in, 34.4 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 2 of 4 drafts accepted", "strata serve: lookup chain: 3 of 78 windows, 1 of 6 chained drafts accepted"], "prompt_tokens": 36, "prefill_tps": 100.0, "gen": 256, "decode_tps": 112.7, "acc": 179, "drafted": 223, "variant": "stack2", "round": "2", "prompt_i": 1} +{"session": "stack2_r2", "sha": "8f2229c21efebec9", "notes": ["strata serve: decode expert cache hit rate: 86.9% (129747 hits / 149267 lookups); 3613 more read by the GPU over PCIe or from another GPU (2.4% of all 152880 routed)", "strata serve: asynchronous adaptive tier: 270 rounds, 14734 experts swapped in, 33.4 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.16 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 1 of 106 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 90.3, "gen": 256, "decode_tps": 88.7, "acc": 150, "drafted": 235, "variant": "stack2", "round": "2", "prompt_i": 2} +{"session": "stack2_r2", "sha": "eb5eef04c0ff14a4", "notes": ["strata serve: decode expert cache hit rate: 92.9% (136269 hits / 146737 lookups); 1899 more read by the GPU over PCIe or from another GPU (1.3% of all 148636 routed)", "strata serve: asynchronous adaptive tier: 379 rounds, 19373 experts swapped in, 31.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 2 windows, 2 of 4 drafts accepted", "strata serve: lookup chain: 1 of 109 windows, 0 of 1 chained drafts accepted"], "prompt_tokens": 28, "prefill_tps": 84.1, "gen": 256, "decode_tps": 106.5, "acc": 148, "drafted": 219, "variant": "stack2", "round": "2", "prompt_i": 3} +{"session": "stack2_r2", "sha": "af474f0799a02a37", "notes": ["strata serve: decode expert cache hit rate: 92.8% (142209 hits / 153230 lookups); 1711 more read by the GPU over PCIe or from another GPU (1.1% of all 154941 routed)", "strata serve: asynchronous adaptive tier: 489 rounds, 24152 experts swapped in, 30.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 110 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 23, "prefill_tps": 91.7, "gen": 256, "decode_tps": 102.3, "acc": 146, "drafted": 230, "variant": "stack2", "round": "2", "prompt_i": 4} +{"session": "stack2_r2", "sha": "ac47d94a436e6f3a", "notes": ["strata serve: decode expert cache hit rate: 93.2% (145390 hits / 155992 lookups); 1606 more read by the GPU over PCIe or from another GPU (1.0% of all 157598 routed)", "strata serve: asynchronous adaptive tier: 594 rounds, 28739 experts swapped in, 30.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 105 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 33, "prefill_tps": 95.9, "gen": 256, "decode_tps": 106.0, "acc": 151, "drafted": 240, "variant": "stack2", "round": "2", "prompt_i": 5} +{"session": "stack2_r2", "sha": "bad3e6f1ffe35b9f", "notes": ["strata serve: decode expert cache hit rate: 88.4% (116055 hits / 131233 lookups); 2694 more read by the GPU over PCIe or from another GPU (2.0% of all 133927 routed)", "strata serve: asynchronous adaptive tier: 686 rounds, 33632 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 2 of 92 windows, 1 of 3 chained drafts accepted"], "prompt_tokens": 27, "prefill_tps": 88.5, "gen": 210, "decode_tps": 86.3, "acc": 119, "drafted": 206, "variant": "stack2", "round": "2", "prompt_i": 6} +{"session": "stack2_r2", "sha": "b18fe02a7c0d81cc", "notes": ["strata serve: decode expert cache hit rate: 91.9% (137883 hits / 150116 lookups); 2205 more read by the GPU over PCIe or from another GPU (1.4% of all 152321 routed)", "strata serve: asynchronous adaptive tier: 800 rounds, 38424 experts swapped in, 29.8 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted", "strata serve: lookup chain: 2 of 114 windows, 0 of 2 chained drafts accepted"], "prompt_tokens": 29, "prefill_tps": 93.8, "gen": 256, "decode_tps": 100.6, "acc": 145, "drafted": 223, "variant": "stack2", "round": "2", "prompt_i": 7} +{"session": "stack2_r2", "sha": "14d285335d12e1f8", "notes": ["strata serve: decode expert cache hit rate: 86.3% (118998 hits / 137822 lookups); 3325 more read by the GPU over PCIe or from another GPU (2.4% of all 141147 routed)", "strata serve: asynchronous adaptive tier: 891 rounds, 44287 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted", "strata serve: lookup chain: 3 of 91 windows, 2 of 6 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 90.7, "gen": 256, "decode_tps": 95.5, "acc": 165, "drafted": 226, "variant": "stack2", "round": "2", "prompt_i": 8} +{"session": "stack2_r2", "sha": "1b5e7e80c6b2252a", "notes": ["strata serve: decode expert cache hit rate: 88.8% (117962 hits / 132792 lookups); 2796 more read by the GPU over PCIe or from another GPU (2.1% of all 135588 routed)", "strata serve: asynchronous adaptive tier: 975 rounds, 49400 experts swapped in, 30.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 84 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 32, "prefill_tps": 100.3, "gen": 256, "decode_tps": 107.0, "acc": 172, "drafted": 220, "variant": "stack2", "round": "2", "prompt_i": 9} +{"session": "stack2_r2", "sha": "f710fc4973bb9e06", "notes": ["strata serve: decode expert cache hit rate: 91.9% (145554 hits / 158450 lookups); 2224 more read by the GPU over PCIe or from another GPU (1.4% of all 160674 routed)", "strata serve: asynchronous adaptive tier: 1093 rounds, 54159 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.15 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 118 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 25, "prefill_tps": 86.5, "gen": 256, "decode_tps": 96.3, "acc": 141, "drafted": 235, "variant": "stack2", "round": "2", "prompt_i": 10} +{"session": "stack2_r2", "sha": "6282b048331a9157", "notes": ["strata serve: decode expert cache hit rate: 93.2% (129789 hits / 139207 lookups); 1392 more read by the GPU over PCIe or from another GPU (1.0% of all 140599 routed)", "strata serve: asynchronous adaptive tier: 1179 rounds, 58133 experts swapped in, 30.3 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.14 ms/round, demand 0, 0 rounds skipped)", "strata serve: lookup chain: 0 of 86 windows, 0 of 0 chained drafts accepted"], "prompt_tokens": 24, "prefill_tps": 94.4, "gen": 256, "decode_tps": 119.6, "acc": 170, "drafted": 223, "variant": "stack2", "round": "2", "prompt_i": 11} diff --git a/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/context.jsonl b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/context.jsonl new file mode 100644 index 00000000000..08d50844f94 --- /dev/null +++ b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/context.jsonl @@ -0,0 +1,24 @@ +{"session": "ctx_v0142_64", "sha": "dc33602cc71a7040", "notes": ["strata: K/V grown to 57344 cells (0.76 GiB); the expert cache gave 269 slots for it, 104 hotter experts moved to colder ones' slots (8020 of 8289 slots hold experts)", "strata serve: decode expert cache hit rate: 93.8% (86361 hits / 92096 lookups); 1401 more read by the GPU over PCIe or from another GPU (1.5% of all 93497 routed)"], "prompt_tokens": 55630, "prefill_tps": 2179.7, "gen": 157, "decode_tps": 82.6, "acc": 83, "drafted": 128, "variant": "v0142", "size_k": 64, "rep": 0, "wall_s": 28.0} +{"session": "ctx_v0142_64", "sha": "addf507444dd2f59", "notes": ["strata serve: decode expert cache hit rate: 97.7% (93347 hits / 95519 lookups); 197 more read by the GPU over PCIe or from another GPU (0.2% of all 95716 routed)", "strata serve: suffix drafts: 1 windows, 1 of 3 drafts accepted"], "prompt_tokens": 55630, "prefill_tps": 164.5, "gen": 139, "decode_tps": 91.9, "acc": 70, "drafted": 135, "variant": "v0142", "size_k": 64, "rep": 1, "wall_s": 2.1} +{"session": "ctx_v0142_64", "sha": "8d830fd4dcc5ef03", "notes": ["strata serve: decode expert cache hit rate: 98.3% (92600 hits / 94157 lookups); 124 more read by the GPU over PCIe or from another GPU (0.1% of all 94281 routed)"], "prompt_tokens": 55630, "prefill_tps": 154.6, "gen": 152, "decode_tps": 101.8, "acc": 81, "drafted": 127, "variant": "v0142", "size_k": 64, "rep": 2, "wall_s": 2.1} +{"session": "ctx_v0142_64", "sha": "2fd40ee569e49c46", "notes": ["strata: K/V grown to 122880 cells (1.57 GiB); the expert cache gave 432 slots for it, 182 hotter experts moved to colder ones' slots (7588 of 8289 slots hold experts)", "strata serve: decode expert cache hit rate: 97.1% (105047 hits / 108157 lookups); 296 more read by the GPU over PCIe or from another GPU (0.3% of all 108453 routed)"], "prompt_tokens": 116833, "prefill_tps": 2094.6, "gen": 184, "decode_tps": 100.2, "acc": 101, "drafted": 149, "variant": "v0142", "size_k": 128, "rep": 0, "wall_s": 58.3} +{"session": "ctx_v0142_64", "sha": "cf80c246816a95eb", "notes": ["strata serve: decode expert cache hit rate: 98.2% (90131 hits / 91758 lookups); 139 more read by the GPU over PCIe or from another GPU (0.2% of all 91897 routed)", "strata serve: suffix drafts: 1 windows, 1 of 2 drafts accepted"], "prompt_tokens": 116833, "prefill_tps": 151.3, "gen": 147, "decode_tps": 94.1, "acc": 75, "drafted": 121, "variant": "v0142", "size_k": 128, "rep": 1, "wall_s": 2.2} +{"session": "ctx_v0142_64", "sha": "f5b9a378a44be80c", "notes": ["strata serve: decode expert cache hit rate: 98.2% (90132 hits / 91804 lookups); 153 more read by the GPU over PCIe or from another GPU (0.2% of all 91957 routed)"], "prompt_tokens": 116833, "prefill_tps": 155.9, "gen": 146, "decode_tps": 98.0, "acc": 81, "drafted": 128, "variant": "v0142", "size_k": 128, "rep": 2, "wall_s": 2.2} +{"session": "ctx_pr2_on_64", "sha": "bd9159551143f58a", "notes": ["strata: K/V grown to 57344 cells (0.76 GiB); the expert cache gave 269 slots for it, 127 hotter experts moved to colder ones' slots (8020 of 8289 slots hold experts)", "strata serve: decode expert cache hit rate: 94.5% (88795 hits / 93948 lookups); 1860 more read by the GPU over PCIe or from another GPU (1.9% of all 95808 routed)", "strata serve: suffix drafts: 1 windows, 0 of 3 drafts accepted"], "prompt_tokens": 55632, "prefill_tps": 2313.4, "gen": 157, "decode_tps": 84.4, "acc": 82, "drafted": 132, "variant": "pr2_on", "size_k": 64, "rep": 0, "wall_s": 26.5} +{"session": "ctx_pr2_on_64", "sha": "72de14399ee8bb0c", "notes": ["strata serve: decode expert cache hit rate: 97.9% (78697 hits / 80345 lookups); 341 more read by the GPU over PCIe or from another GPU (0.4% of all 80686 routed)", "strata serve: suffix drafts: 2 windows, 2 of 6 drafts accepted"], "prompt_tokens": 55632, "prefill_tps": 161.4, "gen": 132, "decode_tps": 104.8, "acc": 76, "drafted": 113, "variant": "pr2_on", "size_k": 64, "rep": 1, "wall_s": 1.9} +{"session": "ctx_pr2_on_64", "sha": "33ea903aa671dd18", "notes": ["strata serve: decode expert cache hit rate: 98.2% (96489 hits / 98285 lookups); 430 more read by the GPU over PCIe or from another GPU (0.4% of all 98715 routed)"], "prompt_tokens": 55632, "prefill_tps": 170.3, "gen": 156, "decode_tps": 100.3, "acc": 86, "drafted": 137, "variant": "pr2_on", "size_k": 64, "rep": 2, "wall_s": 2.2} +{"session": "ctx_pr2_on_64", "sha": "686a3421945a8b06", "notes": ["strata: K/V grown to 122880 cells (1.57 GiB); the expert cache gave 432 slots for it, 199 hotter experts moved to colder ones' slots (7588 of 8289 slots hold experts)", "strata serve: decode expert cache hit rate: 97.3% (88138 hits / 90538 lookups); 576 more read by the GPU over PCIe or from another GPU (0.6% of all 91114 routed)"], "prompt_tokens": 116835, "prefill_tps": 2208.3, "gen": 145, "decode_tps": 95.0, "acc": 81, "drafted": 129, "variant": "pr2_on", "size_k": 128, "rep": 0, "wall_s": 55.1} +{"session": "ctx_pr2_on_64", "sha": "7963d83bcdf2f406", "notes": ["strata serve: decode expert cache hit rate: 98.0% (105985 hits / 108110 lookups); 504 more read by the GPU over PCIe or from another GPU (0.5% of all 108614 routed)"], "prompt_tokens": 116835, "prefill_tps": 150.6, "gen": 163, "decode_tps": 96.6, "acc": 92, "drafted": 158, "variant": "pr2_on", "size_k": 128, "rep": 1, "wall_s": 2.4} +{"session": "ctx_pr2_on_64", "sha": "16291bcce37326a7", "notes": ["strata serve: decode expert cache hit rate: 98.7% (91148 hits / 92347 lookups); 167 more read by the GPU over PCIe or from another GPU (0.2% of all 92514 routed)"], "prompt_tokens": 116835, "prefill_tps": 146.8, "gen": 152, "decode_tps": 103.4, "acc": 86, "drafted": 128, "variant": "pr2_on", "size_k": 128, "rep": 2, "wall_s": 2.1} +{"session": "ctx_pr1_on_64", "sha": "4077b52877022011", "notes": ["strata: K/V grown to 57344 cells (0.76 GiB); the expert cache gave 269 slots for it, 110 hotter experts moved to colder ones' slots (8020 of 8289 slots hold experts)", "strata serve: decode expert cache hit rate: 93.1% (89924 hits / 96640 lookups); 1712 more read by the GPU over PCIe or from another GPU (1.7% of all 98352 routed)", "strata serve: asynchronous adaptive tier: 95 rounds, 4677 experts swapped in, 36.1 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.12 ms/round)"], "prompt_tokens": 55632, "prefill_tps": 2166.9, "gen": 154, "decode_tps": 86.0, "acc": 81, "drafted": 139, "variant": "pr1_on", "size_k": 64, "rep": 0, "wall_s": 28.1} +{"session": "ctx_pr1_on_64", "sha": "87c1110ca570330a", "notes": ["strata serve: decode expert cache hit rate: 98.0% (90063 hits / 91881 lookups); 177 more read by the GPU over PCIe or from another GPU (0.2% of all 92058 routed)", "strata serve: asynchronous adaptive tier: 163 rounds, 5461 experts swapped in, 33.0 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.11 ms/round)", "strata serve: suffix drafts: 1 windows, 1 of 3 drafts accepted"], "prompt_tokens": 55632, "prefill_tps": 166.2, "gen": 148, "decode_tps": 100.9, "acc": 83, "drafted": 128, "variant": "pr1_on", "size_k": 64, "rep": 1, "wall_s": 2.1} +{"session": "ctx_pr1_on_64", "sha": "a12ab4060e0f25f2", "notes": ["strata serve: decode expert cache hit rate: 98.3% (81884 hits / 83275 lookups); 117 more read by the GPU over PCIe or from another GPU (0.1% of all 83392 routed)", "strata serve: asynchronous adaptive tier: 227 rounds, 5946 experts swapped in, 31.8 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.10 ms/round)"], "prompt_tokens": 55632, "prefill_tps": 141.6, "gen": 139, "decode_tps": 104.9, "acc": 75, "drafted": 113, "variant": "pr1_on", "size_k": 64, "rep": 2, "wall_s": 1.9} +{"session": "ctx_pr1_on_64", "sha": "a3a5ee334c85c2de", "notes": ["strata: K/V grown to 122880 cells (1.57 GiB); the expert cache gave 432 slots for it, 199 hotter experts moved to colder ones' slots (7588 of 8289 slots hold experts)", "strata serve: decode expert cache hit rate: 96.8% (83154 hits / 85916 lookups); 250 more read by the GPU over PCIe or from another GPU (0.3% of all 86166 routed)", "strata serve: asynchronous adaptive tier: 294 rounds, 7075 experts swapped in, 31.2 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.10 ms/round)"], "prompt_tokens": 116831, "prefill_tps": 2088.5, "gen": 139, "decode_tps": 95.9, "acc": 74, "drafted": 117, "variant": "pr1_on", "size_k": 128, "rep": 0, "wall_s": 58.0} +{"session": "ctx_pr1_on_64", "sha": "36d42325cea1a1cb", "notes": ["strata serve: decode expert cache hit rate: 98.3% (97014 hits / 98736 lookups); 165 more read by the GPU over PCIe or from another GPU (0.2% of all 98901 routed)", "strata serve: asynchronous adaptive tier: 366 rounds, 7698 experts swapped in, 30.7 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.10 ms/round)", "strata serve: suffix drafts: 1 windows, 2 of 3 drafts accepted"], "prompt_tokens": 116831, "prefill_tps": 154.9, "gen": 152, "decode_tps": 96.5, "acc": 83, "drafted": 138, "variant": "pr1_on", "size_k": 128, "rep": 1, "wall_s": 2.2} +{"session": "ctx_pr1_on_64", "sha": "a41fac938ada325d", "notes": ["strata serve: decode expert cache hit rate: 98.2% (96554 hits / 98341 lookups); 167 more read by the GPU over PCIe or from another GPU (0.2% of all 98508 routed)", "strata serve: asynchronous adaptive tier: 440 rounds, 8265 experts swapped in, 30.5 ms per round (start to flip, between windows) (arena, copy-in only, batch 0, wait 1, pick inline 0.09 ms/round)"], "prompt_tokens": 116831, "prefill_tps": 152.4, "gen": 153, "decode_tps": 95.8, "acc": 81, "drafted": 135, "variant": "pr1_on", "size_k": 128, "rep": 2, "wall_s": 2.3} +{"session": "ctx_v0142_64", "sha": "9f5c2ef4692fd88e", "notes": ["strata: K/V grown to 57344 cells (0.76 GiB); the expert cache gave 269 slots for it, 104 hotter experts moved to colder ones' slots (8020 of 8289 slots hold experts)", "strata serve: decode expert cache hit rate: 94.1% (81780 hits / 86934 lookups); 1231 more read by the GPU over PCIe or from another GPU (1.4% of all 88165 routed)"], "prompt_tokens": 55629, "prefill_tps": 2164.7, "gen": 140, "decode_tps": 85.2, "acc": 79, "drafted": 128, "variant": "v0142", "size_k": 64, "rep": 0, "wall_s": 27.9} +{"session": "ctx_v0142_64", "sha": "5c0380723480c433", "notes": ["strata serve: decode expert cache hit rate: 97.9% (73074 hits / 74624 lookups); 111 more read by the GPU over PCIe or from another GPU (0.1% of all 74735 routed)"], "prompt_tokens": 55629, "prefill_tps": 170.4, "gen": 124, "decode_tps": 105.4, "acc": 68, "drafted": 103, "variant": "v0142", "size_k": 64, "rep": 1, "wall_s": 1.8} +{"session": "ctx_v0142_64", "sha": "0f39f8b3760336fc", "notes": ["strata serve: decode expert cache hit rate: 98.2% (70239 hits / 71507 lookups); 93 more read by the GPU over PCIe or from another GPU (0.1% of all 71600 routed)", "strata serve: suffix drafts: 1 windows, 2 of 3 drafts accepted"], "prompt_tokens": 55629, "prefill_tps": 173.1, "gen": 115, "decode_tps": 104.7, "acc": 63, "drafted": 100, "variant": "v0142", "size_k": 64, "rep": 2, "wall_s": 1.7} +{"session": "ctx_v0142_64", "sha": "3e26b7eecd267952", "notes": ["strata: K/V grown to 122880 cells (1.57 GiB); the expert cache gave 432 slots for it, 203 hotter experts moved to colder ones' slots (7588 of 8289 slots hold experts)", "strata serve: decode expert cache hit rate: 96.5% (52515 hits / 54398 lookups); 176 more read by the GPU over PCIe or from another GPU (0.3% of all 54574 routed)"], "prompt_tokens": 116834, "prefill_tps": 2087.5, "gen": 93, "decode_tps": 100.1, "acc": 53, "drafted": 77, "variant": "v0142", "size_k": 128, "rep": 0, "wall_s": 57.5} +{"session": "ctx_v0142_64", "sha": "76d91bdeb91bb59a", "notes": ["strata serve: decode expert cache hit rate: 97.8% (72388 hits / 74042 lookups); 159 more read by the GPU over PCIe or from another GPU (0.2% of all 74201 routed)"], "prompt_tokens": 116834, "prefill_tps": 157.9, "gen": 127, "decode_tps": 101.6, "acc": 69, "drafted": 99, "variant": "v0142", "size_k": 128, "rep": 1, "wall_s": 1.9} +{"session": "ctx_v0142_64", "sha": "14c0bb7dbe3686b3", "notes": ["strata serve: decode expert cache hit rate: 97.9% (108506 hits / 110827 lookups); 174 more read by the GPU over PCIe or from another GPU (0.2% of all 111001 routed)"], "prompt_tokens": 116834, "prefill_tps": 153.6, "gen": 166, "decode_tps": 88.1, "acc": 84, "drafted": 152, "variant": "v0142", "size_k": 128, "rep": 2, "wall_s": 2.6} diff --git a/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/strata_ab2.py b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/strata_ab2.py new file mode 100644 index 00000000000..be2bdb8f1a7 --- /dev/null +++ b/bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/strata_ab2.py @@ -0,0 +1,326 @@ +"""Tests of the patched Strata engine (branch perf/async-adapt-arena) against the release and the unpatched local build. +Every session is a fresh engine; it is stopped at the end. Run in the foreground (<= 10 min per call). + smoke one short request with STRATA_DECODE_TIMING=1; prints the async/adapt/ERR log lines + ab 12 distinct cold prompts per session (one request each, fixed seeds) + det greedy (temp 0), 6 prompts, n fresh engines: answers' sha256 compared + stress 63k prompt then 4 follow-up turns in the same conversation + report paired per-prompt ratios of every variant against +Local exe: env STRATA_DEV_EXE (default strata-dev\\build-vs22\\strata.exe).""" +import copy +import hashlib +import json +import os +import re +import statistics as st +import subprocess +import sys +import time +import urllib.request +import uuid +from pathlib import Path + +STRATA = Path(r"C:\Users\urben\Documents\strata") +DEV_EXE = os.environ.get("STRATA_DEV_EXE", r"C:\Users\urben\Documents\strata-dev\build-vs22\strata.exe") +CUDA128 = r"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\bin" +DEV = r"C:\Users\urben\Documents\strata-dev" +# the install config now runs the patched engine: variants are built from the pre-patch (release) config +BASE_CFG = json.loads((STRATA / "strata-iq3_s.json.before-async").read_text(encoding="utf-8")) +# the morning's starting point (engine 0.1.38 config before any tuning) is not reproducible: 0.1.38 is gone +FIXTURE_262K = r"C:\Users\urben\Documents\folk\bench\fixtures\out\262k.jsonl" +SCRATCH = Path(__file__).parent +PORT = 8080 +LOCAL = {"exe": DEV_EXE, "lib_dirs": [CUDA128]} +ASYNC = {"--adapt-async": "1"} +# name: (config overrides, args, env) +VARS = { + # the morning's starting point: engine 0.1.38 (kept by setup in engine/.previous) with the config before any tuning + "base0138": ({"_base": "strata-iq3_s.json.before-optim", "exe": str(STRATA / "engine/.previous/strata.exe")}, {}, {}), + "rel": ({}, {}, {}), + "loc": (LOCAL, {}, {}), + "async": (LOCAL, ASYNC, {}), + "asyncb": (LOCAL, ASYNC, {"STRATA_ADAPT_BOUNCE": "1"}), + "asyncbp": (LOCAL, ASYNC, {"STRATA_ADAPT_BOUNCE": "1", "STRATA_PCIE_MIN1": "1"}), + "pmin1": (LOCAL, {}, {"STRATA_PCIE_MIN1": "1"}), + "async_b16": (LOCAL, ASYNC, {"STRATA_ADAPT_ASYNC_BATCH": "16"}), + "async_b80": (LOCAL, ASYNC, {"STRATA_ADAPT_ASYNC_BATCH": "80"}), + "async_nowait": (LOCAL, ASYNC, {"STRATA_ADAPT_ASYNC_WAIT": "0"}), + "stack2prof": (LOCAL, {**ASYNC, "--pool-tasks": "36", "--lookup-chain": "2", "--mtp-q4": "head"}, + {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1", + "STRATA_IQ3S_MT1": "1", "STRATA_VERIFY_PROFILE": "1", "STRATA_SPEC_DEPTH": "1"}), + "stack3": (LOCAL, {**ASYNC, "--pool-tasks": "36", "--lookup-chain": "2", "--mtp-q4": "head"}, + {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1", + "STRATA_IQ3S_MT1": "1", "STRATA_GR_V3": "1", "STRATA_EXPERT_V2": "1", "STRATA_QFUSE": "1", "STRATA_MMVF_ROWS": "1"}), + "r2all": (LOCAL, {**ASYNC, "--pool-tasks": "36", "--lookup-chain": "2", "--mtp-q4": "head"}, + {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1", + "STRATA_IQ3S_MT1": "1", "STRATA_PIN_BY_NEED": "1", "STRATA_ADAPT_ASYNC_DEMAND": "1", "STRATA_GR_128": "1"}), + "r2allprof": (LOCAL, {**ASYNC, "--pool-tasks": "36", "--lookup-chain": "2", "--mtp-q4": "head"}, + {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1", + "STRATA_IQ3S_MT1": "1", "STRATA_PIN_BY_NEED": "1", "STRATA_ADAPT_ASYNC_DEMAND": "1", "STRATA_GR_128": "1", + "STRATA_VERIFY_PROFILE": "1"}), + "r2p23": (LOCAL, {**ASYNC, "--pool-tasks": "36", "--lookup-chain": "2", "--mtp-q4": "head"}, + {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1", + "STRATA_IQ3S_MT1": "1", "STRATA_ADAPT_ASYNC_DEMAND": "1", "STRATA_GR_128": "1"}), + "r2p23prof": (LOCAL, {**ASYNC, "--pool-tasks": "36", "--lookup-chain": "2", "--mtp-q4": "head"}, + {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1", + "STRATA_IQ3S_MT1": "1", "STRATA_ADAPT_ASYNC_DEMAND": "1", "STRATA_GR_128": "1", "STRATA_VERIFY_PROFILE": "1"}), + "p3": (LOCAL, {**ASYNC, "--pool-tasks": "36", "--lookup-chain": "2", "--mtp-q4": "head"}, + {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1", + "STRATA_IQ3S_MT1": "1", "STRATA_GR_128": "1"}), + "p3b16": (LOCAL, {**ASYNC, "--pool-tasks": "36", "--lookup-chain": "2", "--mtp-q4": "head"}, + {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1", + "STRATA_IQ3S_MT1": "1", "STRATA_GR_128": "1", "STRATA_ADAPT_ASYNC_BATCH": "16"}), + "p1": (LOCAL, {**ASYNC, "--pool-tasks": "36", "--lookup-chain": "2", "--mtp-q4": "head"}, + {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1", + "STRATA_IQ3S_MT1": "1", "STRATA_PIN_BY_NEED": "1", "STRATA_ARENA_PIN_GIB": "29"}), + "p1pm": (LOCAL, {**ASYNC, "--pool-tasks": "36", "--lookup-chain": "2", "--mtp-q4": "head"}, + {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1", + "STRATA_IQ3S_MT1": "1", "STRATA_PIN_BY_NEED": "1", "STRATA_ARENA_PIN_GIB": "29", "STRATA_PCIE_MIN1": "1"}), + "p1pf6": (LOCAL, {**ASYNC, "--pool-tasks": "36", "--lookup-chain": "2", "--mtp-q4": "head", "--pcie-frac": "0.6"}, + {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1", + "STRATA_IQ3S_MT1": "1", "STRATA_PIN_BY_NEED": "1", "STRATA_ARENA_PIN_GIB": "29"}), + "p1both": (LOCAL, {**ASYNC, "--pool-tasks": "36", "--lookup-chain": "2", "--mtp-q4": "head", "--pcie-frac": "0.6"}, + {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1", + "STRATA_IQ3S_MT1": "1", "STRATA_PIN_BY_NEED": "1", "STRATA_ARENA_PIN_GIB": "29", "STRATA_PCIE_MIN1": "1"}), + # bit-exact mode (docs/MULTI_GPU.md): STRATA_IQ_MT_MIN=1 --pcie-frac 0 --adapt-every 0, the PRs' options OFF + "x_v0142": ({"exe": DEV + r"\bin-v0142\strata.exe", "lib_dirs": [CUDA128]}, + {"--pcie-frac": "0", "--adapt-every": "0"}, {"STRATA_IQ_MT_MIN": "1"}), + "x_pr1": ({"exe": DEV + r"\bin-pr1\strata.exe", "lib_dirs": [CUDA128]}, + {"--pcie-frac": "0", "--adapt-every": "0"}, {"STRATA_IQ_MT_MIN": "1"}), + "x_pr2": ({"exe": DEV + r"\bin-pr2\strata.exe", "lib_dirs": [CUDA128]}, + {"--pcie-frac": "0", "--adapt-every": "0"}, {"STRATA_IQ_MT_MIN": "1"}), + # the PR builds, options off / on + "v0142": ({"exe": DEV + r"\bin-v0142\strata.exe", "lib_dirs": [CUDA128]}, {}, {}), + "pr1_on": ({"exe": DEV + r"\bin-pr1\strata.exe", "lib_dirs": [CUDA128]}, ASYNC, {}), + "pr2_on": ({"exe": DEV + r"\bin-pr2\strata.exe", "lib_dirs": [CUDA128]}, {"--pcie-frac": "0.6"}, + {"STRATA_PIN_BY_NEED": "1", "STRATA_ARENA_PIN_GIB": "29", "STRATA_PCIE_MIN1": "1"}), + "stack1": (LOCAL, ASYNC, {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1"}), + "stack2": (LOCAL, {**ASYNC, "--pool-tasks": "36", "--lookup-chain": "2", "--mtp-q4": "head"}, + {"STRATA_GDN_SPLIT": "1", "STRATA_DF_BRANCH": "1", "STRATA_TSUM": "1", "STRATA_ATTN_LANECELL": "1", + "STRATA_IQ3S_MT1": "1"}), +} +VARS_X = dict(VARS) +for _n in ("v0142", "pr1", "pr2"): + _o, _a, _e = VARS_X["x_" + _n] + VARS["y_" + _n] = (_o, {**_a, "--expert-cache": "8000"}, _e) +COLD = [ + "Explique le fonctionnement d'une pompe à chaleur en 6 phrases.", + "Write a Python class implementing an LRU cache with O(1) get and put, with a short usage example.", + "Describe the main causes of the fall of the Western Roman Empire.", + "Donne une recette détaillée de ratatouille pour 4 personnes.", + "Explain how mRNA vaccines work, step by step.", + "Écris une fonction JavaScript qui fait un debounce d'une autre fonction, avec des commentaires en français.", + "Write a short project status email announcing a two-week delay and its reasons.", + "Présente les principales caractéristiques géographiques de l'île de La Réunion.", + "Explain the difference between permutations and combinations with three worked examples.", + "Write a SQL query that returns the top 3 customers by revenue per country, and explain it.", + "Résume la pensée de Descartes sur le doute méthodique.", + "Compare TCP and UDP and give two use cases for each.", +] +WARM = ["Bonjour, présente-toi en une phrase.", "Say hello in one short sentence."] +LINE = re.compile(r"prompt (\d+) tokens = (\d+) reused \+ (\d+) read in (\d+) ms \(([\d.]+) tok/s\), (\d+) generated in " + r"(\d+) ms \(([\d.]+) tok/s\)(?:, drafts accepted (\d+) of (\d+))?") +NOTE = re.compile(r"adapt|async|ERR|error|residency|bounce|PCIE_MIN1|decode timing|K/V grown|hit rate|GPU stages|stage|profile|spec depth|lookup chain|suffix", re.I) + + +def free_gb() -> float: + out = subprocess.run(["powershell", "-NoProfile", "-Command", + "(Get-CimInstance Win32_OperatingSystem).FreePhysicalMemory"], capture_output=True, text=True) + return int(out.stdout.strip() or 0) / 1024 / 1024 + + +def strata_running() -> bool: + return "strata.exe" in subprocess.run(["tasklist", "/FI", "IMAGENAME eq strata.exe"], capture_output=True, text=True).stdout + + +class Server: + def __init__(self, name: str, variant: str, extra_env: dict | None = None): + over, args, env = VARS[variant] + over = dict(over) + base = over.pop("_base", None) + cfg = json.loads((STRATA / base).read_text(encoding="utf-8")) if base else copy.deepcopy(BASE_CFG) + cfg.update(copy.deepcopy(over)) + a = cfg["args"] + for flag, val in args.items(): + if flag in a: + a[a.index(flag) + 1] = val + else: + a += [flag, val] + cfg.setdefault("env", {}).update(env) + cfg["env"].update(extra_env or {}) + self.name, self.log = name, SCRATCH / f"ab2_{name}.log" + self.log.write_bytes(b"") + cfg["log"] = str(self.log) + path = STRATA / "strata-ab.json" + path.write_text(json.dumps(cfg, indent=1), encoding="utf-8") + for _ in range(60): + if not strata_running() and free_gb() > 50: + break + time.sleep(2) + print(f"[{name}] start ({variant}), free RAM {free_gb():.1f} GB", flush=True) + self.proc = subprocess.Popen([str(STRATA / ".venv/Scripts/python.exe"), "serve/server.py", "--engine", "strata", + "--config", str(path), "--port", str(PORT)], cwd=STRATA, + stdout=open(SCRATCH / f"ab2_{name}.out", "wb"), stderr=subprocess.STDOUT) + t0 = time.time() + while True: + try: + urllib.request.urlopen(f"http://127.0.0.1:{PORT}/v1/models", timeout=5).read() + break + except Exception: + if self.proc.poll() is not None or time.time() - t0 > 300: + self.stop() + tail = (SCRATCH / f"ab2_{name}.out").read_bytes()[-1500:].decode("utf-8", "replace") + raise SystemExit(f"{name}: server did not start\n{tail}") + time.sleep(3) + for i, p in enumerate(WARM): + self.ask([{"role": "user", "content": p}], seed=7 + i, max_tokens=48) + + def ask(self, messages: list, temp=0.7, seed=None, max_tokens=256) -> dict: + req = {"model": "strata", "messages": messages, "max_tokens": max_tokens, "temperature": temp, + "top_p": 0.8 if temp else 1.0, "stream": False, "chat_template_kwargs": {"enable_thinking": False}} + if seed: + req["seed"] = seed + start = self.log.stat().st_size + r = urllib.request.Request(f"http://127.0.0.1:{PORT}/v1/chat/completions", json.dumps(req).encode(), + {"Content-Type": "application/json"}) + big = sum(len(m["content"]) for m in messages) > 20_000 + with urllib.request.urlopen(r, timeout=900 if big else 150) as resp: + body = json.loads(resp.read()) + time.sleep(0.5) + text = body["choices"][0]["message"].get("content") or "" + row = dict(session=self.name, text=text, sha=hashlib.sha256(text.encode()).hexdigest()[:16], notes=[]) + for line in self.log.read_bytes()[start:].decode("utf-8", "replace").splitlines(): + m = LINE.search(line) + if m: + row.update(prompt_tokens=int(m[1]), prefill_tps=float(m[5]), gen=int(m[6]), decode_tps=float(m[8]), + acc=int(m[9]) if m[9] else 0, drafted=int(m[10]) if m[10] else 0) + elif NOTE.search(line): + row["notes"].append(line.strip()[:400]) + return row + + def stop(self) -> None: + subprocess.run(["taskkill", "/T", "/F", "/PID", str(self.proc.pid)], capture_output=True) + subprocess.run(["taskkill", "/F", "/IM", "strata.exe"], capture_output=True) + for _ in range(60): + if not strata_running(): + break + time.sleep(1) + + +def startup_notes(srv: Server) -> list: + return [l.strip()[:300] for l in srv.log.read_bytes().decode("utf-8", "replace").splitlines() + if re.search(r"adapt-async|asynchronous|bounce|PCIE_MIN1|is off|ERR|error|pin by need|ranked pairs|strata hc|differs|128|demand|arena", l, re.I)] + + +cmd = sys.argv[1] +if cmd == "smoke": + v = sys.argv[2] + srv = Server(f"smoke_{v}", v, {"STRATA_DECODE_TIMING": "1"}) + try: + for l in startup_notes(srv): + print(" start:", l) + for i in (0, 1, 4): + r = srv.ask([{"role": "user", "content": COLD[i]}], seed=3000 + i) + print(f" prompt {i}: decode {r.get('decode_tps')} tok/s, gen {r.get('gen')}, drafts {r.get('acc')}/{r.get('drafted')}") + for n in r["notes"][-6:]: + print(" ", n) + finally: + srv.stop() +elif cmd == "ab": + out = Path(sys.argv[4]) + for v in sys.argv[2].split(","): + srv = Server(f"{v}_r{sys.argv[3]}", v) + try: + vals = [] + for i, p in enumerate(COLD): + r = srv.ask([{"role": "user", "content": p}], seed=3000 + i) + r.update(variant=v, round=sys.argv[3], prompt_i=i) + r.pop("text") + with out.open("a", encoding="utf-8") as f: + f.write(json.dumps(r, ensure_ascii=False) + "\n") + if "decode_tps" in r: + vals.append(r["decode_tps"]) + vals.sort() + print(f"{v:14s} round {sys.argv[3]}: median {vals[len(vals) // 2]:.1f} tok/s (min {vals[0]:.1f}, max {vals[-1]:.1f})", + flush=True) + errs = [l for l in startup_notes(srv) if re.search(r"ERR|error", l)] + if errs: + print(" errors:", errs[:3]) + finally: + srv.stop() +elif cmd == "det": + v, n, out = sys.argv[2], int(sys.argv[3]), Path(sys.argv[4]) + shas = [] + for k in range(n): + srv = Server(f"det_{v}_{k}", v) + try: + run = [srv.ask([{"role": "user", "content": COLD[i]}], temp=0)["sha"] for i in range(6)] + finally: + srv.stop() + shas.append(run) + with out.open("a", encoding="utf-8") as f: + f.write(json.dumps({"variant": v, "engine": k, "shas": run}) + "\n") + print(f"det {v} engine {k}: {run}", flush=True) + same = sum(len({s[i] for s in shas}) == 1 for i in range(6)) + print(f"det {v}: {same}/6 prompts identical across {n} fresh engines", flush=True) +elif cmd == "stress": + v = sys.argv[2] + srv = Server(f"stress_{v}", v) + try: + fixture = json.loads(open(r"C:\Users\urben\Documents\folk\bench\fixtures\out\112k.jsonl", encoding="utf-8").readline()) + msgs = [{"role": "user", "content": f"[run {uuid.uuid4().hex}]\n" + fixture["messages"][0]["content"][:260_000] + + "\n\nIn 5 sentences: what does this code base do?"}] + follow = ["Which module is the most complex, and why?", "List three possible bugs you would look for first.", + "Résume ta réponse précédente en français en 3 points.", "Write a short unit test for one of them."] + for turn in range(5): + r = srv.ask(msgs, max_tokens=256) + print(f"turn {turn}: prompt {r.get('prompt_tokens')} prefill {r.get('prefill_tps')} decode {r.get('decode_tps')} " + f"gen {r.get('gen')} | {r['text'][:90]!r}", flush=True) + for n in r["notes"]: + if re.search(r"ERR|error|residency|K/V grown", n, re.I): + print(" ", n) + if turn < 4: + msgs += [{"role": "assistant", "content": r["text"]}, {"role": "user", "content": follow[turn]}] + finally: + srv.stop() +elif cmd == "ctx": + v, sizes, out = sys.argv[2], [int(x) for x in sys.argv[3].split(",")], Path(sys.argv[4]) + # the 262k fixture is ~235k tokens with this tokenizer: the 240k fixture's text follows it for the largest sizes + text = "".join(json.loads(open(f, encoding="utf-8").readline())["messages"][0]["content"] + for f in (FIXTURE_262K, FIXTURE_262K.replace("262k", "240k"))) + srv = Server(f"ctx_{v}_{sizes[0]}", v) + try: + for k in sizes: + prompt = (f"[run {uuid.uuid4().hex}]\n" + text[: int(k * 1024 * 3.53)] + + "\n\nIn 5 sentences: what does this code base do?") + # one prompt read, then three answers with fixed seeds (the same for every variant) on the cached prefix + reps = [] + for rep, seed in enumerate((1001, 1002, 1003)): + t0 = time.time() + r = srv.ask([{"role": "user", "content": prompt}], max_tokens=256, seed=seed) + r.update(variant=v, size_k=k, rep=rep, wall_s=round(time.time() - t0, 1)) + r.pop("text") + with out.open("a", encoding="utf-8") as f: + f.write(json.dumps(r, ensure_ascii=False) + "\n") + reps.append(r) + r = reps[0] + pt, pf = r.get("prompt_tokens", 0), r.get("prefill_tps") or 1 + dec = [x["decode_tps"] for x in reps if x.get("decode_tps")] + print(f"{v} {k}k: prompt {pt} tok, prefill {pf} tok/s ({pt / pf:.1f} s), decode " + f"{' / '.join(f'{d:.1f}' for d in dec)} tok/s (mean {sum(dec) / max(1, len(dec)):.1f})", flush=True) + finally: + srv.stop() +elif cmd == "report": + rows = [json.loads(l) for l in open(sys.argv[2], encoding="utf-8")] + ref = sys.argv[3] + d = {} + for r in rows: + if "decode_tps" in r: + d.setdefault(r["variant"], {}).setdefault(r["prompt_i"], []).append(r["decode_tps"]) + base = {i: st.mean(v) for i, v in d.get(ref, {}).items()} + for v, per in sorted(d.items()): + means = {i: st.mean(x) for i, x in per.items()} + ratios = [means[i] / base[i] for i in means if i in base] + allv = sorted(x for xs in per.values() for x in xs) + print(f"{v:14s} median {allv[len(allv) // 2]:6.1f} tok/s (n={len(allv)}), vs {ref}: ratio median " + f"{st.median(ratios):.3f}, prompts faster {sum(x > 1 for x in ratios)}/{len(ratios)}") +(STRATA / "strata-ab.json").unlink(missing_ok=True) diff --git a/docs/DETAILS.md b/docs/DETAILS.md index 3f673bff77b..43fc677be85 100644 --- a/docs/DETAILS.md +++ b/docs/DETAILS.md @@ -177,6 +177,13 @@ other ~18 GB), a 32 GB PC with a 12-16 GB GPU the Coder; IQ3_XXS on a 32 GB PC s rounds differently from the CPU) depends on when its copy lands. It stays on the blocking tier (said in the log) when the exchange buffers are not page-locked; the stats line reports ms per round. +- **Pin by need** (`STRATA_PIN_BY_NEED=1`, opt-in, the arena on one GPU): Windows page-locks about half the RAM at most (the + WDDM shared budget), so the arena registers its first ~30 GiB and the layers past it get no PCIe share. With the variable + every blob gets a page-aligned stride (+0.15 % RAM) and the expert profile's non-GPU-resident experts are registered by rank + instead, up to `STRATA_ARENA_PIN_GIB` (29 by default on Windows). `STRATA_PCIE_MIN1=1` sends one miss over PCIe as soon as a + layer has two (the share otherwise rounds to 0 at 1-2 misses). RTX 3090 + Ryzen 5 5600X: prompt read +5-7 % at 56K-117K + tokens; decode level alone, +2-3 % with `--adapt-async 1` and `--pcie-frac 0.6` + ([report](../bench/results/2026-10-11-community-rtx3090-5600x-arena-pin-by-need/README.md)). - `STRATA_EXCHANGE_ROTATE=1` (opt-in): an adaptive swap hands buffer ownership over instead of copying the evicted blob into the RAM copy (equal-size blobs, fully page-locked copy). Same tokens, fewer host copies; it works with `--adapt-async 1` too. Details and the measurement: [EXCHANGE_ROTATION.md](EXCHANGE_ROTATION.md). diff --git a/include/strata/core/expert_source.hpp b/include/strata/core/expert_source.hpp index b51c8f99d33..3bdeb1ad55a 100644 --- a/include/strata/core/expert_source.hpp +++ b/include/strata/core/expert_source.hpp @@ -22,6 +22,7 @@ #pragma once #include "strata/core/expert_cache.hpp" +#include "strata/core/pinned.hpp" #include "strata/core/exchange_storage.hpp" #include "strata/core/hit_hook.hpp" #include "strata/kernels/cpu/pool.hpp" @@ -909,9 +910,22 @@ class ArenaExpertSource : public ExpertSource { int64_t reads() const { return reads_; } bool pinned(int64_t layer, int64_t expert) const override; const uint8_t* device_alias(int64_t layer, int64_t expert) const override; + /// Prefix pinning: the old rule (device_alias(layer, 0)); pin by need: at least one pinned range in the layer. + bool pcie_layer(int64_t layer) const override; void prefetch(int64_t layer, int64_t expert) override; uint64_t release(int64_t layer, int64_t expert) override; + /// Pin by need (STRATA_PIN_BY_NEED=1): BEFORE open(), the (layer, expert) pairs worth pinning, by decreasing + /// priority - the profile's ranked pairs the GPU cache will NOT hold, then the unranked ones. open() merges + /// neighbours into byte ranges and registers only those (PinnedArena::ByNeed); pinned()/device_alias()/pcie_layer() + /// then follow the registered ranges instead of a prefix. Never called: the old prefix pinning, unchanged. + void set_pin_priority(std::vector> ranked) { + pin_pairs_ = std::move(ranked); + pin_by_need_ = true; + } + /// Pin by need, after open(): the registered ranges (0 when the prefix rule, or nothing, is in force) + size_t pin_ranges() const { return pin_start_.size(); } + /// What backing was obtained and why, for the startup print. "The engine adapts to the machine it is on" is /// only true if the engine says what it got. const std::string& note() const { return note_; } @@ -942,6 +956,21 @@ class ArenaExpertSource : public ExpertSource { double load_read_s_ = 0.0; double load_copy_s_ = 0.0; uint64_t pinned_bytes_ = 0; + // pin by need: set_pin_priority's pairs, and (after open) the registered ranges - sorted starts, ends and the + // device alias of each start - plus pcie_layer's answer per layer. `ranges_` false = the prefix rule above. + bool pin_by_need_ = false; + bool ranges_ = false; + // pin by need: the arena's page-aligned blob stride (see PadMap); `padded_` false = the packed experts.bin layout + bool padded_ = false; + PadMap pad_; + /// where blob (layer, expert) starts in the arena: the ONE address function of this class + uint64_t arena_off(int64_t layer, int64_t expert) const; + std::vector> pin_pairs_; + std::vector pin_start_, pin_end_; + std::vector pin_dev_; + std::vector layer_pcie_; + /// index of the registered range holding [off, off + len), or -1 + int64_t pin_range_of(uint64_t off, uint64_t len) const; std::string gguf_; }; @@ -952,7 +981,9 @@ bool check_experts_gguf(const std::string& native, const strata::kernels::cpu::E /// Fills `dst` (lay.total bytes, the experts.bin layout) from the GGUF files, one role at a time. /// `unbuffered`: each chunk read past the file cache (Windows); `ready`: layer l is written only once /// *ready > l + 1 (an arena that is still being registered). +/// `pad` (optional): the destination is the page-aligned padded layout (pin by need), see PadMap. LoadStats load_experts_gguf(const std::string& native, uint8_t* dst, const strata::kernels::cpu::ExpertLayout& lay, - int threads, bool unbuffered = false, const std::atomic* ready = nullptr); + int threads, bool unbuffered = false, const std::atomic* ready = nullptr, + const PadMap* pad = nullptr); } // namespace strata::core diff --git a/include/strata/core/pinned.hpp b/include/strata/core/pinned.hpp index 51d0948fbd8..3d306aa868a 100644 --- a/include/strata/core/pinned.hpp +++ b/include/strata/core/pinned.hpp @@ -17,6 +17,7 @@ #include #include #include +#include #include namespace strata::core { @@ -52,6 +53,19 @@ struct PinnedArena { /// existing allocation path. Population/coordination and backing-file lifetime remain the caller's job. PinnedArena(uint64_t bytes, const std::vector& bounds, uint64_t max_pinned_bytes = 0, const std::string& shared_file = {}, uint64_t shared_pack_hash = 0); + /// Pin by need (STRATA_PIN_BY_NEED=1): register only the given byte ranges (offset, length), in the given order + /// (the caller's priority: the hottest experts the GPU does not hold first), each rounded out to 4 KiB pages and + /// trimmed against the ranges already registered; stops at the first refusal of the driver (the WDDM budget is + /// not raisable: we choose WHAT to pin), or when `max_pinned_bytes` (or STRATA_ARENA_PIN_GIB) would be passed. + /// Everything not registered - the holes - is locked resident instead. Registered before any page is touched, + /// as the other constructors do. `registered_bytes` is then the TOTAL registered, not a prefix: use + /// `pin_ranges`. + struct ByNeed {}; + PinnedArena(uint64_t bytes, ByNeed, const std::vector>& ranges, + uint64_t max_pinned_bytes = 0, const std::string& shared_file = {}, uint64_t shared_pack_hash = 0); + bool by_need = false; + std::vector> pin_ranges; ///< registered (offset, length), sorted by offset, page-rounded + std::vector> locked_ranges; ///< the holes locked resident (offset, length) /// #285: reserve only; the caller registers the slices with register_slices(), on a thread, while its readers /// fill the ones already registered (one registration of the whole arena cost ~2.5 s at 33 GiB of 4 KB pages). struct Deferred {}; @@ -109,13 +123,24 @@ struct LoadStats { // by the old and the new reader must produce identical `layer_checksums`. LoadStats load_experts(const std::string& path, uint8_t* dst, uint64_t blob_bytes, uint64_t blobs_per_layer, uint64_t layers, int threads, uint64_t chunk); +/// Pin by need: the arena's page-aligned blob stride. Layer L's blob e sits at `dst_off[L] + e * stride[L]` (stride = +/// blob rounded up to 4 KiB, the pad is never read), instead of the packed `layer_off[L] + e * blob[L]`; the FILE +/// offsets stay the packed ones. Every blob then starts on a page, so any set of blobs registers exactly. +struct PadMap { + std::vector dst_off, blob, stride; ///< per layer + uint64_t total = 0; ///< arena bytes of the padded layout (without the spare blob) + uint64_t blob_off(int64_t layer, int64_t expert) const { + return dst_off[(size_t) layer] + (uint64_t) expert * stride[(size_t) layer]; + } +}; /// Plan v0.3 P6: the same with one byte range per layer (`layer_off[L]`, `layer_bytes[L]`). +/// `pad` (optional): the destination is the padded layout above (`layer_off` stays the file offsets). /// `ready` (optional): layer L is written only once *ready > L + 1 - its slice and the next one registered (a /// PinnedArena registering its slices meanwhile: writing a page while cudaHostRegister runs on it corrupted the /// arena under WDDM, even on large pages; a layer boundary inside a page puts that page in both registrations). LoadStats load_experts_ranges(const std::string& path, uint8_t* dst, const std::vector& layer_off, const std::vector& layer_bytes, int threads, uint64_t chunk, - const std::atomic* ready = nullptr); + const std::atomic* ready = nullptr, const PadMap* pad = nullptr); /// The same ranges read UNBUFFERED straight into `dst` (Windows): no staging buffer and no file-cache copy - the /// drive's DMA lands where the experts live. Every range, `dst` and `chunk` must be 4 KiB aligned; returns ok = diff --git a/include/strata/platform/memory.hpp b/include/strata/platform/memory.hpp index 2944ec96e4f..38bc55c9e36 100644 --- a/include/strata/platform/memory.hpp +++ b/include/strata/platform/memory.hpp @@ -8,6 +8,8 @@ #include #include +#include +#include namespace strata::platform { @@ -20,6 +22,11 @@ struct LockResult { /// Lock [p, p + bytes) into physical memory. Partial success is reported, not hidden. LockResult lock_resident(void* p, uint64_t bytes); +/// Pin-by-need: lock several disjoint regions (the holes between the registered ranges of an arena). The Windows +/// working-set minimum is raised ONCE for the total (lock_resident per region would add its margin every time); +/// stops at the first refusal and reports the bytes locked so far. Undo each region with unlock_resident. +LockResult lock_resident_ranges(const std::vector>& regions); + /// Undo lock_resident for the same region (best effort). void unlock_resident(void* p, uint64_t bytes); diff --git a/src/core/expert_source.cpp b/src/core/expert_source.cpp index 4604eb8d4c1..3738cdbb4c7 100644 --- a/src/core/expert_source.cpp +++ b/src/core/expert_source.cpp @@ -3613,7 +3613,12 @@ void expert_pool_dispatch_multi(ExpertDispatch& d, const float* x_f, const int32 } } const bool pcie_ok = d.pcie_num > 0 && d.src->pcie_layer(d.layers); - const int m = pcie_ok ? (nmiss * d.pcie_num) >> 8 : 0; + int m = pcie_ok ? (nmiss * d.pcie_num) >> 8 : 0; + // STRATA_PCIE_MIN1 (opt-in): the share rounds to 0 for 1-2 misses per layer, so the PCIe lane idles on the typical + // decode step; with >= 2 misses give it at least one (the last in routing order). It only flies if its blob is + // pinned (the fetch below checks), else it stays a CPU miss exactly as before. Read once. + static const bool pcie_min1 = [] { const char* v = std::getenv("STRATA_PCIE_MIN1"); return v && std::atoi(v) != 0; }(); + if (pcie_min1 && pcie_ok && m < 1 && nmiss >= 2) m = 1; int miss_rank = 0, groups = 0, entries = 0, fetches = 0; GpuPlanSink& P = *d.plan; const uint8_t* dma_src[64]; @@ -4140,7 +4145,11 @@ bool check_experts_gguf(const std::string& gguf, const strata::kernels::cpu::Exp // `unbuffered` (Windows, experts_unbuffered): each chunk's 4 KiB-aligned window is read with FILE_FLAG_NO_BUFFERING into // an aligned buffer and scattered into the blobs - no copy through the file cache when the drive is read anyway. LoadStats load_experts_gguf(const std::string& gguf, uint8_t* dst, const strata::kernels::cpu::ExpertLayout& lay, - int threads, bool unbuffered, const std::atomic* ready) { + int threads, bool unbuffered, const std::atomic* ready, const PadMap* pad) { + // where blob (l, e) goes in `dst`: packed (experts.bin) or the padded layout of pin by need + auto dst_blob = [&lay, pad](int64_t l, int64_t e) -> uint64_t { + return pad != nullptr ? pad->blob_off(l, e) : lay.blob_offset(l, e); + }; // `ready`: layer l is written only once *ready > l + 1 (a PinnedArena registering its slices meanwhile; the next // slice too, since its registration starts on the page that may hold this layer's tail) auto wait_ready = [ready](int64_t l) { @@ -4217,7 +4226,7 @@ LoadStats load_experts_gguf(const std::string& gguf, uint8_t* dst, const strata: const uint8_t* q = buf + (src + done - a0); for (uint64_t k = 0; k < n / per[r]; ++k) { const uint64_t e = done / per[r] + k; - std::memcpy(dst + lay.blob_offset(l, (int64_t) e) + at[r], q + k * per[r], (size_t) per[r]); + std::memcpy(dst + dst_blob(l, (int64_t) e) + at[r], q + k * per[r], (size_t) per[r]); } } } @@ -4281,7 +4290,7 @@ LoadStats load_experts_gguf(const std::string& gguf, uint8_t* dst, const strata: if (std::fread(buf.data(), 1, (size_t) n, f) != (size_t) n) { bad = true; return; } for (uint64_t k = 0; k < n / per[r]; ++k) { const uint64_t e = done / per[r] + k; - std::memcpy(dst + lay.blob_offset(l, (int64_t) e) + at[r], buf.data() + k * per[r], (size_t) per[r]); + std::memcpy(dst + dst_blob(l, (int64_t) e) + at[r], buf.data() + k * per[r], (size_t) per[r]); } } } @@ -4371,6 +4380,7 @@ bool ArenaExpertSource::open(const std::string& pack_dir, int64_t n_layers, int6 pinned_bytes_ = 0; dev_slice_.clear(); slice_bytes_ = 0; + ranges_ = false; blobs_ = n_layers * n_expert; n_expert_ = n_expert; reads_ = 0; @@ -4427,6 +4437,56 @@ bool ArenaExpertSource::open(const std::string& pack_dir, int64_t n_layers, int6 lbytes.push_back(lay.blob_bytes(l) * (uint64_t) n_expert); } bounds.push_back(want); + // Pin by need: the arena gets a page-aligned blob STRIDE (blob rounded up to 4 KiB, ~+0.15 %), so every blob starts + // on a page and any set of blobs can be registered exactly (a canonical blob is 337.5 pages: packed, an isolated + // blob could never be registered without its neighbours' bytes). Not with the mapped arena file (STRATA_ARENA_MMAP + // writes experts.bin from the arena). The file offsets (loff) stay packed; only the destination moves. + padded_ = false; + pad_ = PadMap{}; + if (pin_by_need_ && !pin_pairs_.empty() && !arena_mmap) { + padded_ = true; + uint64_t at = 0; + for (int64_t l = 0; l < n_layers; ++l) { + const uint64_t b = lay.blob_bytes(l), s = (b + 4095) & ~(uint64_t) 4095; + pad_.dst_off.push_back(at); + pad_.blob.push_back(b); + pad_.stride.push_back(s); + at += s * (uint64_t) n_expert; + } + pad_.total = at; + } + const uint64_t arena_bytes = padded_ ? pad_.total : want; // the spare blob below comes on top, as before + // Pin by need: the pairs set_pin_priority gave, as byte ranges in priority order. Neighbours (adjacent blobs) merge + // into one range that takes the best rank of its members, so the hottest experts are registered first and the + // number of cudaHostRegister calls stays far below the number of pairs. + std::vector> need_ranges; + const bool by_need = padded_; + if (by_need) { + // every blob starts on a page and owns its whole stride (pad included), so a run of adjacent blobs is one exact + // range: [first start, last start + stride). The best rank of a run's members is its priority. + struct Ext { uint64_t off, len; size_t rank; }; + std::vector ex; + ex.reserve(pin_pairs_.size()); + std::vector seen((size_t) (n_layers * n_expert), 0); + for (size_t i = 0; i < pin_pairs_.size(); ++i) { + const int64_t l = pin_pairs_[i].first, e = pin_pairs_[i].second; + if (l < 0 || l >= n_layers || e < 0 || e >= n_expert || seen[(size_t) (l * n_expert + e)]) continue; + seen[(size_t) (l * n_expert + e)] = 1; + ex.push_back({arena_off(l, e), pad_.stride[(size_t) l], i}); + } + std::sort(ex.begin(), ex.end(), [](const Ext& a, const Ext& b) { return a.off < b.off; }); + std::vector merged; + for (const Ext& x : ex) { + if (!merged.empty() && merged.back().off + merged.back().len == x.off) { + merged.back().len += x.len; + merged.back().rank = std::min(merged.back().rank, x.rank); + } else { + merged.push_back(x); + } + } + std::stable_sort(merged.begin(), merged.end(), [](const Ext& a, const Ext& b) { return a.rank < b.rank; }); + for (const Ext& x : merged) need_ranges.emplace_back(x.off, x.len); + } // #285: on Windows the per-layer registration runs on a thread ahead of the readers, which wait for their // layer's slice (the whole arena registered before the load cost ~2.5 s at 33 GiB of 4 KB pages, not hidden). // Only where the whole arena would be registered: no cap (STRATA_ARENA_PIN_GIB, multi-GPU), no shared arena. @@ -4435,12 +4495,14 @@ bool ArenaExpertSource::open(const std::string& pack_dir, int64_t n_layers, int6 // fallback after the load) with identical output; the start-time gain does not pay for that. #ifdef _WIN32 const char* defer_env = std::getenv("STRATA_DEFERRED_REGISTER"); - const bool deferred = max_pinned_bytes == 0 && arena_pin_cap_gib() == -1 && shared_arena_file.empty() && + const bool deferred = !by_need && max_pinned_bytes == 0 && arena_pin_cap_gib() == -1 && shared_arena_file.empty() && (defer_env != nullptr && defer_env[0] != 0 && defer_env[0] != '0'); #else const bool deferred = false; #endif - PinnedArena* a = deferred ? new PinnedArena(want + (uint64_t) blob, bounds, PinnedArena::Deferred{}) + PinnedArena* a = by_need ? new PinnedArena(arena_bytes + (uint64_t) blob, PinnedArena::ByNeed{}, need_ranges, + max_pinned_bytes, shared_arena_file, pack_hash) + : deferred ? new PinnedArena(want + (uint64_t) blob, bounds, PinnedArena::Deferred{}) : new PinnedArena(want + (uint64_t) blob, bounds, max_pinned_bytes, shared_arena_file, pack_hash); if (!a->valid()) { @@ -4479,11 +4541,11 @@ bool ArenaExpertSource::open(const std::string& pack_dir, int64_t n_layers, int6 } const std::atomic* rp = deferred ? &ready : nullptr; if (from_gguf) { - st = load_experts_gguf(gguf_, a->data(), lay, readers, unbuffered, rp); + st = load_experts_gguf(gguf_, a->data(), lay, readers, unbuffered, rp, padded_ ? &pad_ : nullptr); } else { - if (unbuffered) st = load_experts_direct(path, a->data(), loff, lbytes, readers, /*chunk=*/8u << 20, rp); - if (!unbuffered || (!st.ok && st.error.empty())) // unaligned ranges: the buffered reader - st = load_experts_ranges(path, a->data(), loff, lbytes, threads, /*chunk=*/8u << 20, rp); + if (unbuffered && !padded_) st = load_experts_direct(path, a->data(), loff, lbytes, readers, /*chunk=*/8u << 20, rp); + if (!unbuffered || padded_ || (!st.ok && st.error.empty())) // unaligned ranges / the padded layout: the buffered reader + st = load_experts_ranges(path, a->data(), loff, lbytes, threads, /*chunk=*/8u << 20, rp, padded_ ? &pad_ : nullptr); } if (reg.joinable()) reg.join(); std::fprintf(stderr, "strata generate: expert arena read %s (%s)\n", unbuffered ? "unbuffered" : "through the file cache", @@ -4532,7 +4594,34 @@ bool ArenaExpertSource::open(const std::string& pack_dir, int64_t n_layers, int6 // plan v0.3 P6: device aliases of the mapped registration, for the PCIe share of the misses dev_slice_.clear(); slice_bytes_ = a->slice_bytes; - if (a->registered_bytes > 0) { + pin_start_.clear(); pin_end_.clear(); pin_dev_.clear(); layer_pcie_.clear(); + ranges_ = false; + if (a->by_need) { + // device alias of each registered range's start (device_alias adds the blob's distance from it); one + // refusal drops the whole table: no PCIe share rather than a wrong pointer + ranges_ = true; + for (const auto& r : a->pin_ranges) { + void* d = nullptr; + if (cudaHostGetDevicePointer(&d, (void*) (base_ + r.first), 0) != cudaSuccess) { + (void) cudaGetLastError(); + ranges_ = false; + break; + } + pin_start_.push_back(r.first); + pin_end_.push_back(r.first + r.second); + pin_dev_.push_back((const uint8_t*) d); + } + if (!ranges_) { + pin_start_.clear(); pin_end_.clear(); pin_dev_.clear(); + pinned_bytes_ = 0; + } else { + layer_pcie_.assign((size_t) n_layers, 0); + n_expert_ = n_expert; // pinned() reads it; the common tail below sets the same value + for (int64_t l = 0; l < n_layers; ++l) + for (int64_t e = 0; e < n_expert && !layer_pcie_[(size_t) l]; ++e) + layer_pcie_[(size_t) l] = pinned(l, e) ? 1 : 0; + } + } else if (a->registered_bytes > 0) { std::vector starts = a->slice_bytes > 0 ? a->slice_starts : std::vector{0}; for (uint64_t off : starts) { void* d = nullptr; @@ -4605,13 +4694,39 @@ uint64_t ArenaExpertSource::release(int64_t layer, int64_t expert) { #endif } +int64_t ArenaExpertSource::pin_range_of(uint64_t off, uint64_t len) const { + // last range starting at or before the blob; it must also end after it (a blob is inside ONE range: merged + // neighbours are contiguous, and a blob split by a trimmed page is reported unpinned - the safe answer) + const auto it = std::upper_bound(pin_start_.begin(), pin_start_.end(), off); + if (it == pin_start_.begin()) return -1; + const size_t i = (size_t) (it - pin_start_.begin()) - 1; + return off + len <= pin_end_[i] ? (int64_t) i : -1; +} + +uint64_t ArenaExpertSource::arena_off(int64_t layer, int64_t expert) const { + return padded_ ? pad_.blob_off(layer, expert) : strata::kernels::cpu::expert_layout().blob_offset(layer, expert); +} + +bool ArenaExpertSource::pcie_layer(int64_t layer) const { + if (!ranges_) return device_alias(layer, 0) != nullptr; // the prefix rule (ExpertSource's default) + return layer >= 0 && (size_t) layer < layer_pcie_.size() && layer_pcie_[(size_t) layer] != 0; +} + bool ArenaExpertSource::pinned(int64_t layer, int64_t expert) const { if (base_ == nullptr || layer < 0 || expert < 0 || expert >= n_expert_) return false; const auto& lay = strata::kernels::cpu::expert_layout(); + if (ranges_) return pin_range_of(arena_off(layer, expert), lay.blob_bytes(layer)) >= 0; // the whole blob inside ONE registered range return lay.blob_offset(layer, expert) + lay.blob_bytes(layer) <= pinned_bytes_; } const uint8_t* ArenaExpertSource::device_alias(int64_t layer, int64_t expert) const { + if (ranges_) { // pin by need: the range's device base + the blob's offset inside it + if (base_ == nullptr || layer < 0 || expert < 0 || expert >= n_expert_) return nullptr; + const auto& rl = strata::kernels::cpu::expert_layout(); + const uint64_t off = arena_off(layer, expert); + const int64_t i = pin_range_of(off, rl.blob_bytes(layer)); + return i < 0 ? nullptr : pin_dev_[(size_t) i] + (off - pin_start_[(size_t) i]); + } if (dev_slice_.empty() || !pinned(layer, expert)) return nullptr; const auto& lay = strata::kernels::cpu::expert_layout(); if (slice_bytes_ == 0) return dev_slice_[0] + lay.blob_offset(layer, expert); @@ -4628,7 +4743,7 @@ const uint8_t* ArenaExpertSource::blob(int64_t layer, int64_t expert) { ++reads_; // Pointer arithmetic into resident memory. No fault, no copy, no mapping - which is the entire point of // this class over `FileExpertSource`. - return base_ + strata::kernels::cpu::expert_layout().blob_offset(layer, expert); + return base_ + arena_off(layer, expert); } } // namespace strata::core diff --git a/src/core/pinned.cu b/src/core/pinned.cu index 12cda847588..34c4e6a860e 100644 --- a/src/core/pinned.cu +++ b/src/core/pinned.cu @@ -10,7 +10,10 @@ #include #include #include +#include #include +#include +#include #include #include @@ -453,6 +456,93 @@ PinnedArena::PinnedArena(uint64_t bytes, const std::vector& bounds, } } +PinnedArena::PinnedArena(uint64_t bytes, ByNeed, const std::vector>& ranges, + uint64_t max_pinned_bytes, const std::string& shared_file, + uint64_t shared_pack_hash) : capacity(bytes) { + by_need = true; + if (bytes == 0) return; + base = reserve(bytes, backing, note, shared_file, shared_pack_hash, mapping_base, mapping_bytes); + if (base != nullptr && mapping_base == nullptr) { + mapping_base = base; + mapping_bytes = bytes; + } + if (base == nullptr) return; + // Register BEFORE any page is touched (see the first constructor). Same caps as there: the engine's + // `max_pinned_bytes`, else STRATA_ARENA_PIN_GIB=N (> 0); "auto" (-2) is the sliced pin's and does not apply. + const int env_gib = arena_pin_cap_gib(); + uint64_t cap = max_pinned_bytes; + if (cap == 0 && env_gib > 0) cap = (uint64_t) env_gib << 30; +#ifdef _WIN32 + // WDDM: the pin must leave margin (the budget is ~RAM/2 and later cudaMallocs need room). Unset: 29 GiB; + // "auto" (-2): the sliced pin's shared-memory-budget limit (29 GiB when it cannot be worked out); + // STRATA_ARENA_PIN_GIB=0 ("the whole arena"): no cap, up to the driver's refusal. + if (cap == 0 && env_gib != 0) { + uint64_t lim = 0; + std::string why; + cap = env_gib == -2 && sliced_pin_limit(lim, why) && lim > 0 ? lim : (29ull << 30); + } +#endif + constexpr uint64_t kPage = 4096; + std::map done; // registered [start, end), by start: ranges never overlap + uint64_t total = 0; + int refused = 0; + bool capped = false; + for (const auto& rg : ranges) { + if (rg.second == 0 || rg.first >= bytes) continue; + // INWARD: a registered page holds no byte of an unpinned neighbour blob (a copy that STARTS in a registered page + // and runs past the registration is rejected by CUDA); the boundary pages stay unregistered + uint64_t a = (rg.first + kPage - 1) & ~(kPage - 1); + uint64_t b = std::min(rg.first + rg.second, bytes) & ~(kPage - 1); + // a page shared with a range registered before (blobs smaller than a page, or odd offsets) is already + // registered: registering it twice is an error, so trim to what is left; a range inside one is skipped + auto it = done.upper_bound(a); + if (it != done.begin()) { + auto p = std::prev(it); + if (p->second > a) a = p->second; + } + if (it != done.end() && it->first < b) b = it->first; + if (a >= b) continue; + if (cap > 0 && total + (b - a) > cap) { capped = true; break; } + if (cudaHostRegister((uint8_t*) base + a, (size_t) (b - a), cudaHostRegisterPortable | cudaHostRegisterMapped) != + cudaSuccess) { + (void) cudaGetLastError(); + refused = 1; + break; + } + done[a] = b; + total += b - a; + } + for (const auto& d : done) pin_ranges.emplace_back(d.first, d.second - d.first); + registered_bytes = total; + registered_slices = (int) pin_ranges.size(); + // the holes stay resident through the working-set lock, as the sliced fallback does for its tail + std::vector> holes; + uint64_t cur = 0, hole_bytes = 0; + for (const auto& r : pin_ranges) { + if (r.first > cur) { locked_ranges.emplace_back(cur, r.first - cur); hole_bytes += r.first - cur; } + cur = r.first + r.second; + } + if (cur < bytes) { locked_ranges.emplace_back(cur, bytes - cur); hole_bytes += bytes - cur; } + note = "pin by need: " + std::to_string(pin_ranges.size()) + " ranges registered (" + std::to_string(total >> 20) + + " MiB)" + (refused ? ", the driver refused the next one" : capped ? ", the cap was reached" : "") + + "; " + note; + const char* env = std::getenv("STRATA_ARENA_LOCK"); + if (backing == PageBacking::LargePages) { // #779: large pages cannot be paged out: nothing to lock + note = "large pages are resident without a lock; " + note; + locked_ranges.clear(); + } else if (env != nullptr && std::string(env) == "0") { + note = "arena lock disabled (STRATA_ARENA_LOCK=0); " + note; + locked_ranges.clear(); + } else { + for (const auto& r : locked_ranges) holes.emplace_back((uint8_t*) base + r.first, r.second); + const strata::platform::LockResult lr = strata::platform::lock_resident_ranges(holes); + locked_bytes = lr.locked_bytes; + note = lr.note + " (" + std::to_string(hole_bytes >> 20) + " MiB of holes); " + note; + // a partial lock is unlocked region by region in the destructor; what it did not reach was never locked + // (VirtualUnlock/munlock of an unlocked page is harmless), so the list is kept whole + } +} + PinnedArena::PinnedArena(uint64_t bytes, const std::vector& bounds, Deferred) : capacity(bytes), bounds_(bounds) { if (bytes == 0 || bounds.size() < 2) return; @@ -496,6 +586,15 @@ void PinnedArena::register_slices(std::atomic& ready) { } PinnedArena::~PinnedArena() { + if (base && by_need) { + for (const auto& r : locked_ranges) strata::platform::unlock_resident((uint8_t*) base + r.first, r.second); + for (const auto& r : pin_ranges) cudaHostUnregister((uint8_t*) base + r.first); + release(mapping_base ? mapping_base : base, mapping_bytes ? mapping_bytes : capacity); + base = nullptr; + mapping_base = nullptr; + mapping_bytes = 0; + return; + } if (base) { if (locked_bytes) strata::platform::unlock_resident((uint8_t*) base + (slice_bytes ? registered_bytes : 0), locked_bytes); if (slice_bytes) { @@ -663,7 +762,7 @@ bool experts_unbuffered(const std::vector& files, uint64_t arena_by LoadStats load_experts_ranges(const std::string& path, uint8_t* dst, const std::vector& layer_off, const std::vector& layer_bytes, int threads, uint64_t chunk, - const std::atomic* ready) { + const std::atomic* ready, const PadMap* pad) { LoadStats st; const uint64_t layers = (uint64_t) layer_off.size(); st.layers = layers; @@ -732,7 +831,17 @@ LoadStats load_experts_ranges(const std::string& path, uint8_t* dst, const std:: return; } const auto t_copy = std::chrono::steady_clock::now(); - std::memcpy(dst + off + pos, buf.data(), (size_t) n); + if (pad == nullptr) { + std::memcpy(dst + off + pos, buf.data(), (size_t) n); + } else { // the padded layout: a chunk may span blobs, each lands at its own page-aligned start + const uint64_t B = pad->blob[(size_t) L], S = pad->stride[(size_t) L]; + for (uint64_t q = 0; q < n;) { + const uint64_t p = pos + q, bi = p / B, in = p % B; + const uint64_t m = std::min(n - q, B - in); + std::memcpy(dst + pad->dst_off[(size_t) L] + bi * S + in, buf.data() + q, (size_t) m); + q += m; + } + } h = fnv1a64(buf.data(), n, h); copy_ns += (uint64_t) std::chrono::duration_cast( std::chrono::steady_clock::now() - t_copy).count(); diff --git a/src/platform/memory.cpp b/src/platform/memory.cpp index c9f2a512ad2..2c4c71ba745 100644 --- a/src/platform/memory.cpp +++ b/src/platform/memory.cpp @@ -59,6 +59,49 @@ LockResult lock_resident(void* p, uint64_t bytes) { return r; } +LockResult lock_resident_ranges(const std::vector>& regions) { + LockResult r; + uint64_t total = 0; + for (const auto& g : regions) total += g.second; + if (total == 0) { r.note = "nothing to lock"; return r; } + HANDLE self = GetCurrentProcess(); + SIZE_T min_ws = 0, max_ws = 0; + DWORD flags = 0; + if (!GetProcessWorkingSetSizeEx(self, &min_ws, &max_ws, &flags)) { + r.note = "GetProcessWorkingSetSizeEx failed (error " + std::to_string(GetLastError()) + ")"; + return r; + } + // same growth as lock_resident, but for the sum of the regions and with ONE margin + const SIZE_T margin = (SIZE_T) 512 << 20; + const SIZE_T new_min = min_ws + (SIZE_T) total + margin; + const SIZE_T new_max = max_ws > new_min + margin ? max_ws : new_min + margin; + if (!SetProcessWorkingSetSizeEx(self, new_min, new_max, + QUOTA_LIMITS_HARDWS_MIN_DISABLE | QUOTA_LIMITS_HARDWS_MAX_DISABLE)) { + r.note = "SetProcessWorkingSetSizeEx(" + std::to_string((unsigned long long) (new_min >> 20)) + + " MiB) failed (error " + std::to_string(GetLastError()) + ")"; + return r; + } + const uint64_t chunk = 1ull << 30; + for (const auto& g : regions) { + uint8_t* base = (uint8_t*) g.first; + for (uint64_t off = 0; off < g.second; off += chunk) { + const uint64_t n = g.second - off < chunk ? g.second - off : chunk; + if (!VirtualLock(base + off, (SIZE_T) n)) { + r.note = "VirtualLock stopped after " + std::to_string((unsigned long long) (r.locked_bytes >> 20)) + + " of " + std::to_string((unsigned long long) (total >> 20)) + " MiB (error " + + std::to_string(GetLastError()) + ")"; + r.ok = r.locked_bytes > 0; + return r; + } + r.locked_bytes += n; + } + } + r.ok = true; + r.note = "locked " + std::to_string((unsigned long long) (total >> 20)) + " MiB in " + + std::to_string(regions.size()) + " regions via working-set minimum + VirtualLock"; + return r; +} + void unlock_resident(void* p, uint64_t bytes) { if (p == nullptr || bytes == 0) return; const uint64_t chunk = 1ull << 30; @@ -128,6 +171,18 @@ LockResult lock_resident(void* p, uint64_t bytes) { return r; } +LockResult lock_resident_ranges(const std::vector>& regions) { + LockResult r; + for (const auto& g : regions) { + if (g.first == nullptr || g.second == 0) continue; + if (mlock(g.first, g.second) != 0) { r.note = "mlock failed (raise ulimit -l)"; r.ok = r.locked_bytes > 0; return r; } + r.locked_bytes += g.second; + } + r.ok = r.locked_bytes > 0; + r.note = r.ok ? "mlock of " + std::to_string(regions.size()) + " regions" : "nothing to lock"; + return r; +} + void unlock_resident(void* p, uint64_t bytes) { if (p != nullptr && bytes != 0) munlock(p, bytes); } diff --git a/src/program/generate.cpp b/src/program/generate.cpp index ff3f2e1a659..b4c266bcfc1 100644 --- a/src/program/generate.cpp +++ b/src/program/generate.cpp @@ -4605,11 +4605,94 @@ int main(int argc, char** argv) { else if (pin_wddm_cap) std::fprintf(stderr, "strata generate: multi-GPU under WDDM: at most 8 GiB of the expert arena is pinned " "(STRATA_ARENA_PIN_GIB changes it)\n"); + // ---- STRATA_PIN_BY_NEED=1 (default off: the prefix pinning above, byte-identical). WDDM does not let the + // pin grow past ~RAM/2, and the prefix spends it on layers 0-31 whatever the GPU holds: layers 32-47 stay 100 % + // CPU while ~10 GiB of pinned blobs sit in GPU-resident experts no DMA ever reads. Pinning is registered + // BEFORE the arena's pages are touched (pinned.cu), so the set must be chosen here, before arena_src.open: the + // profile is already read, and the GPU cache's size - opened much later - is ESTIMATED from the same free-VRAM + // reading its auto sizing uses (the weights, session and drafter are loaded by now, host registration takes no + // VRAM): the first R ranked pairs are taken as GPU-resident, and the rest (then the unranked pairs, in layer + // order) are what the arena pins, hottest first, until the driver refuses. R is under-estimated a little + // (x0.98): a resident pair pinned by mistake costs a few MiB, a hot non-resident one skipped costs DMA. + // STRATA_PIN_BY_NEED_SKIP= forces R. Single GPU, profile given, no helper caches only. + std::vector> pin_cand; // the non-resident estimate, by decreasing rank + if (const char* pn = std::getenv("STRATA_PIN_BY_NEED"); pn != nullptr && pn[0] != '\0' && pn[0] != '0') { + const char* off_why = profile.empty() ? "it needs --expert-profile (the ranking)" + : multi_gpu || o.peer_device >= 1 ? "not with a layer split or a peer GPU" + : std::any_of(o.expert_cache_remote.begin(), o.expert_cache_remote.end(), + [](int n) { return n > 0; }) ? "not with helper caches on other GPUs" + : nullptr; + if (off_why != nullptr) { + std::fprintf(stderr, "strata generate: pin by need: off (%s); the prefix pinning stays\n", off_why); + } else { + const auto& pl = strata::kernels::cpu::expert_layout(); + size_t skip = profile.size(); + if (const char* sk = std::getenv("STRATA_PIN_BY_NEED_SKIP"); sk != nullptr && sk[0] != '\0') { + skip = std::min(profile.size(), (size_t) std::max(std::atoll(sk), 0)); + } else { + // the bytes the GPU cache will hold: --expert-cache N slots of the largest blob, or what auto sizing + // finds free (the same reserve terms as "expert cache auto" below, without its small-card rescue, + // which only ever grants MORE slots) + uint64_t cap_bytes; + if (o.expert_cache > 0) { + cap_bytes = (uint64_t) o.expert_cache * pl.max_blob; + } else { + const int64_t pf_mib = (o.prefill_chunk > 0 && !pf_borrow) ? 160 + (o.prefill_chunk * 680) / 1024 : 0; + int64_t mtp_b = (!o.mtp.empty() && native_head.loaded()) + ? (int64_t) mtp.bind_bytes(native_head.row_bytes(), n_vocab) : 0; + if (stages.empty()) + for (const auto& d : slot_mtp) mtp_b += (int64_t) d->bind_bytes(native_head.row_bytes(), n_vocab); + const int64_t pipe_b = o.pipeline_windows <= 0 ? 0 + : (kPipeWindowMib << 20) + (o.pipeline_windows >= 2 ? 2 * (int64_t) gdn_snapshot_bytes(ss) : 0); + const int64_t room = (int64_t) strata::core::device_free_bytes() - + ((((int64_t) o.vram_reserve_mib + pf_mib) << 20) + mtp_b + pipe_b); + cap_bytes = room > 0 ? (uint64_t) room : 0; + } + cap_bytes = cap_bytes / 100 * 98; + uint64_t used = 0; + skip = 0; + for (const auto& pr : profile) { + const uint64_t b = pl.native ? (pl.blob_bytes(pr.first) + 255) / 256 * 256 : (uint64_t) pl.max_blob; + if (used + b > cap_bytes) break; + used += b; + ++skip; + } + } + std::vector seen((size_t) (g.n_layers * g.n_expert), 0); + for (const auto& pr : profile) + if (pr.first >= 0 && pr.first < g.n_layers && pr.second >= 0 && pr.second < g.n_expert) + seen[(size_t) (pr.first * g.n_expert + pr.second)] = 1; + pin_cand.assign(profile.begin() + (long) skip, profile.end()); + for (int64_t l = 0; l < g.n_layers; ++l) + for (int64_t e = 0; e < g.n_expert; ++e) + if (!seen[(size_t) (l * g.n_expert + e)]) pin_cand.emplace_back((int32_t) l, (int32_t) e); + std::fprintf(stderr, "strata generate: pin by need: %zu of the %zu ranked pairs taken as GPU-resident " + "(STRATA_PIN_BY_NEED_SKIP= sets it), %zu candidates to pin\n", + skip, profile.size(), pin_cand.size()); + arena_src.set_pin_priority(pin_cand); + } + } if (!arena_src.open(o.pack, g.n_layers, g.n_expert, /*threads=*/6, err, pin_limit, o.shared_expert_arena)) { std::fprintf(stderr, "strata generate: %s\n", err.c_str()); return 1; } + if (!pin_cand.empty()) { + const auto& pl = strata::kernels::cpu::expert_layout(); + uint64_t cand_b = 0, pin_b = 0; + for (const auto& pr : pin_cand) { + const uint64_t b = pl.blob_bytes(pr.first); + cand_b += b; + if (arena_src.pinned(pr.first, pr.second)) pin_b += b; + } + int64_t pcie_layers = 0; + for (int64_t l = 0; l < g.n_layers; ++l) pcie_layers += arena_src.pcie_layer(l) ? 1 : 0; + std::fprintf(stderr, "strata generate: pin by need: %zu ranges, %.2f GiB pinned, %.1f %% of the non-resident " + "experts (%lld of %lld layers have a PCIe share)\n", + arena_src.pin_ranges(), (double) pin_b / 1073741824.0, + cand_b > 0 ? 100.0 * (double) pin_b / (double) cand_b : 0.0, (long long) pcie_layers, + (long long) g.n_layers); + } if (!arena_src.ram_warning().empty()) // #633: said before the load's numbers, which it explains std::fprintf(stderr, "strata generate: WARNING: %s\n", arena_src.ram_warning().c_str()); std::fprintf(stderr, "strata generate: expert arena: %s\n", arena_src.note().c_str());