Every measured prefill in the sybil-solutions campaigns, with the storage tier that
served it. 517 rows from 34 datasets, 12 models.
Generated from data/prefill.jsonl; every row cites the file it came from.
GLM-5.3-Flash EXL3 3.05 bpw on one RTX 3090, campaign N129, 2026-10-08. Identical image, identical settings, only the store changes. The 7 GB/s arms are the same four-drive array with its bandwidth capped to one drive's, so they separate bandwidth from drive count.
| store | RAM cap | prefill tok/s | TTFT s | ms / 1k prompt tokens | decode C1 tok/s | NVMe read GB/s | share of link ceiling | avg read latency ms | stall ms / token |
|---|---|---|---|---|---|---|---|---|---|
| 1x M.2 drive | 16 GB | 242.2 | 33.82 | 4128.82 | 3.50 | 6.46 | 87% | 7.04 | - |
| 4x array, capped to 1 drive's bandwidth | 16 GB | 254.3 | 32.21 | 3932.36 | 4.52 | 6.83 | 98% | 1.88 | - |
| 4x M.2 array in RAID0 | 16 GB | 649.7 | 12.61 | 1539.17 | 12.79 | 17.26 | 66% | 0.72 | 38.4 |
| 1x M.2 drive | 55 GB | 402.4 | 20.36 | 2485.09 | 10.16 | 6.77 | 91% | 4.84 | 46.6 |
| 4x array, capped to 1 drive's bandwidth | 55 GB | 393.3 | 20.83 | 2542.59 | 14.34 | 6.72 | 96% | 1.31 | 23.5 |
| 4x M.2 array in RAID0 | 55 GB | 663.8 | 12.34 | 1506.48 | 17.43 | 11.18 | 43% | 0.84 | 10.6 |
8k prompt, C1. TTFT = 8192 / prefill tok/s. I/O columns are the prefill phase's device counters.
Prefill speed is not constant in prompt length: the first chunk pays for warm-up, the marginal chunks run near the GPU's own rate. Marginal tok/s is the speed of the tokens added over the row above, computed from the TTFT column.
EXL3 3.0 bpw on one 3090, experts pinned in host RAM, run D119
| prompt tokens | prefill tok/s | TTFT s | ms / 1k tokens | marginal tok/s | marginal ms / 1k tokens |
|---|---|---|---|---|---|
| 8,192 | 589.1 | 13.9 | 1697.5 | - | - |
| 32,768 | 774.6 | 42.3 | 1291.0 | 866 | 1155.2 |
| 65,536 | 813.2 | 80.6 | 1229.7 | 856 | 1168.5 |
| 131,072 | 791.4 | 165.6 | 1263.6 | 771 | 1297.6 |
| 196,608 | 781.1 | 251.7 | 1280.2 | 761 | 1313.3 |
| 261,000 | 764.1 | 341.6 | 1308.7 | 716 | 1395.8 |
EXL3 3.05 bpw on one 3090 whose experts live on a Mac mini's SSD over USB4, config C
| prompt tokens | prefill tok/s | TTFT s | ms / 1k tokens | marginal tok/s | marginal ms / 1k tokens |
|---|---|---|---|---|---|
| 2,565 | 176.7 | 14.5 | 5659.3 | - | - |
| 8,018 | 417.8 | 19.2 | 2393.5 | 1166 | 857.3 |
| 18,330 | 470.1 | 39.0 | 2127.2 | 521 | 1920.2 |
| 33,842 | 584.2 | 57.9 | 1711.7 | 819 | 1220.8 |
| 97,811 | 560.9 | 175.0 | 1782.8 | 546 | 1830.1 |
| 189,481 | 548.1 | 346.0 | 1824.5 | 536 | 1865.4 |
Thirty-four datasets, most of them one host and one protocol each. These bullets are the fastest single-stream prefill in each of the ones worth singling out.
deepseek-v4.1-flash-4x-rtx-pro-6000, 4x RTX PRO 6000). That repo's metric includes queueing, so treat it as an upper bound; it still reports 5,845 tok/s at 500k.local-ai-recipe-kit-submissions-2x-r9700-32gb, a community submission to the kit).local-ai-registry-gates-rtx-3090-24gb). The IQ3_S pack on the same prompt measures 2,174.trellis-serve-xpu-b70-int8 vs trellis-serve-xpu-b70). On a VRAM-resident model, prefill is a kernel problem, not a storage one.glm53-tensorfold-2x-spark). The only sub-million-token prefill in the set, and the clearest picture of what a million-token prompt costs.local-ai-registry-gates-radeon-8060s-64gb), against 2,664 for the 3090 above. Same prompt shape, 38x apart.| dataset | family | model | host | storage | prompt tokens | rows | fastest prefill tok/s | at tokens | ms / 1k tokens |
|---|---|---|---|---|---|---|---|---|---|
| deepseek-v4.1-flash-4x-rtx-pro-6000 | deepseek | DeepSeek-V4.1-Flash | - | auxiliary tables on disk, not stated | 512-500000 | 89 | 7816.6 | 32768 | 128 |
| local-ai-recipe-kit-submissions-2x-r9700-32gb | qwen | Qwen3.8-Flash-Next | - | all experts in host RAM | 8192-65536 | 16 | 4396.7 | 32768 | 227 |
| deepseek-v4.1-flash-h200 | deepseek | DeepSeek-V4.1-Flash | - | all experts in host RAM, auxiliary tables on disk | 8192-32980 | 32 | 3197.9 | 32737 | 313 |
| local-ai-recipe-kit-3090 | qwen | Qwen3.8-Flash-Next | omarchy | 1x M.2 drive | 8192-65536 | 4 | 2848.0 | 32768 | 351 |
| local-ai-recipe-kit-targets-rtx-3090-24gb | qwen | Qwen3.8-Flash-Next | - | 1x M.2 drive | 8192-65536 | 4 | 2846.0 | 32768 | 351 |
| local-ai-recipe-kit-submissions-rtx-3090-24gb | qwen | Qwen3.8-Flash-Next | omarchy | 1x M.2 drive | 8192-65536 | 4 | 2836.9 | 32768 | 352 |
| local-ai-registry-gates-rtx-3090-24gb | mixed | Qwen3.8-Flash-Next +3 more | rtx-3090-24gb | 1x M.2 drive, all experts in host RAM, everything in VRAM | 93437-173372 | 11 | 2664.0 | 106294 | 375 |
| trellis-serve-xpu-b70-int8 | qwen | Qwen3.8-27B | - | everything in VRAM | 4096-253952 | 4 | 2421.0 | 4096 | 413 |
| local-ai-registry-gates-dgx-spark-gb10-128gb | mixed | GLM-5.3-Flash +1 more | dgx-spark-gb10-128gb | one shared memory pool | 175457-751923 | 3 | 2094.0 | 751923 | 478 |
| glm53-tensorfold-3x-spark | glm | GLM-5.3-Flash | three DGX Sparks (TP=3, NCCL, KV_POOL_GIB=27) | one shared memory pool | 8212-262169 | 6 | 2064.2 | 32790 | 484 |
| local-ai-registry-gates-rtx-4080-super-16gb | qwen | Welp-35B-A3B | rtx-4080-super-16gb | everything in VRAM | 213570 | 1 | 2028.0 | 213570 | 493 |
| glm53-tensorfold-2x-spark | glm | GLM-5.3-Flash | two DGX Sparks (TP=2 over ConnectX-7 RoCE) | one shared memory pool | 8219-981841 | 7 | 1978.9 | 32790 | 505 |
| trellis-serve-xpu-b70 | qwen | Qwen3.8-27B | - | everything in VRAM | 4185-254125 | 22 | 1666.0 | 4200 | 600 |
| qwen-serve-27b-3090-sglang | qwen | Qwen3.8-27B | - | everything in VRAM | 8741-138452 | 40 | 1615.8 | 17397 | 619 |
| moetier-qwen38fn | qwen | Qwen3.8-Flash-Next | omarchy | 4x array, capped to 1 drive's bandwidth, 4x M.2 array in RAID0 | 8192-32768 | 55 | 1193.4 | 32768 | 838 |
| qwen-serve-27b-b70-llamacpp | qwen | Qwen3.8-27B | - | everything in VRAM | 2500-245000 | 12 | 1164.0 | 2500 | 859 |
| local-ai-registry-gates-intel-arc-pro-b70-32gb | mixed | Qwen3.8-Flash-Next +1 more | intel-arc-pro-b70-32gb | 1x M.2 drive, all experts in host RAM, everything in VRAM | 213575-213612 | 7 | 1087.0 | 213612 | 920 |
| qwen-serve-b70-offload | qwen | Qwen3.8-Flash-Next | omarchy | 4x M.2 array in RAID0 | 942-7406 | 4 | 1029.5 | 7406 | 971 |
| local-ai-recipe-kit-targets-intel-arc-pro-b70-32gb | qwen | Qwen3.8-Flash-Next | - | 1x M.2 drive | 8192-65536 | 4 | 1027.0 | 8192 | 974 |
| local-ai-recipe-kit-b70 | qwen | Qwen3.8-Flash-Next | - | 1x M.2 drive | 8192-65536 | 4 | 1022.7 | 8192 | 978 |
| trellis-serve-xpu-b70-llamacpp | qwen | Qwen3.8-27B | - | everything in VRAM | 7335-58172 | 2 | 999.1 | 7335 | 1001 |
| glm-flash-lite | glm | GLM-5.3-Flash | omarchy | 1x M.2 drive, 4x array, capped to 1 drive's bandwidth, 4x M.2 array in RAID0, all experts in host RAM, not stated | 8192-32768 | 96 | 973.7 | 32768 | 1027 |
| dsv41-flash-offload | deepseek | DeepSeek-V4.1-Flash | - | all experts in host RAM | 8192-261000 | 23 | 813.2 | 65536 | 1230 |
| qwen38-flash-next-3090-usb-offload | qwen | Qwen3.8-Flash-Next | mini | drive on the far side of USB | 2565-189481 | 10 | 584.2 | 33842 | 1712 |
| local-ai-registry-gates-rx-6700-xt-12gb | qwen | Qwen3.5-9B | rx-6700-xt-12gb | everything in VRAM | 52583 | 1 | 559.0 | 52583 | 1789 |
| local-ai-registry-gates-rtx-3060-12gb | qwen | Qwen3.6-35B-A3B +1 more | rtx-3060-12gb | all experts in host RAM, everything in VRAM | 106252-106294 | 2 | 512.0 | 106252 | 1953 |
| framework-research-phase0-strix | qwen | Qwen3.5-122B-A10B-REAP-20 +1 more | Strix Halo Framework Desktop | one shared memory pool | 64-131072 | 33 | 443.0 | 512 | 2257 |
| trellis-serve-xpu-b70-llamacpp-tp2 | qwen | Qwen3.8-27B | - | everything in VRAM | 7379-58352 | 2 | 341.4 | 7379 | 2929 |
| framework-research-rpc-hetero | qwen | Qwen3.5-122B-A10B-REAP-20 | halo (Strix Halo) + | drive on the far side of USB, one shared memory pool | 20-8832 | 12 | 320.9 | 8832 | 3117 |
| local-ai-registry-gates-apple-m5-pro-48gb | qwen | Qwen3.8-Flash-Next +1 more | apple-m5-pro-48gb | one shared memory pool | 25740-166625 | 3 | 218.0 | 25740 | 4587 |
| local-ai-registry-gates-apple-m5-pro-24gb | qwen | Qwen3.8-27B | apple-m5-pro-24gb | one shared memory pool | 166655 | 1 | 176.0 | 166655 | 5682 |
| local-ai-registry-gates-x86-64-avx2-cpu | other | LFM2.5-2.6B | x86-64-avx2-cpu | all experts in host RAM | 5552 | 1 | 84.0 | 5552 | 11905 |
| local-ai-registry-gates-radeon-8060s-64gb | qwen | Qwen3.8-27B | radeon-8060s-64gb | one shared memory pool | 106252 | 1 | 70.0 | 106252 | 14286 |
| local-ai-registry-gates-apple-m2-max-96gb | qwen | Qwen3.8-27B | apple-m2-max-96gb | one shared memory pool | 166667 | 1 | 52.0 | 166667 | 19231 |
dataset: protocols differ
(sweep medians vs one request per length), and so do hosts.transcribed rows were read off a Markdown table by hand; everything else is
machine-read from the source repo's JSON.git clone https://github.com/sybil-solutions/prefill-cost && cd prefill-cost git clone --depth 1 https://github.com/sybil-solutions/moetier ../moetier && git clone --depth 1 https://github.com/sybil-solutions/glm-flash-lite ../glm-flash-lite && git clone --depth 1 https://github.com/sybil-solutions/dsv41-flash-offload ../dsv41-flash-offload && git clone --depth 1 https://github.com/sybil-solutions/qwen38-flash-next-3090-usb-offload ../qwen38-flash-next-3090-usb-offload python3 tools/extract.py --sources .. # staging rows python3 tools/merge.py # validate + data/prefill.jsonl python3 tools/render.py # README tables + docs/index.html
| repo | commits | files | rows |
|---|---|---|---|
| [moetier](https://github.com/sybil-solutions/moetier) | `2da3ec482d` | 68 | 129 |
| [deepseek-v4.1-flash-4x-rtx-pro-6000](https://github.com/sybil-solutions/deepseek-v4.1-flash-4x-rtx-pro-6000) | `ce69105cb5` | 4 | 89 |
| [qwen-serve](https://github.com/sybil-solutions/qwen-serve) | `730d8101d0` | 6 | 56 |
| [framework-research](https://github.com/sybil-solutions/framework-research) | `7eb74068e3` | 2 | 45 |
| [local-ai-recipe-kit](https://github.com/sybil-solutions/local-ai-recipe-kit) | `ef9782ce0c` | 7 | 36 |
| [deepseek-v4.1-flash-h200](https://github.com/sybil-solutions/deepseek-v4.1-flash-h200) | `8a0104bc9f` | 5 | 32 |
| [local-ai-registry](https://github.com/sybil-solutions/local-ai-registry) | `c0604cff48` | 32 | 32 |
| [trellis-serve](https://github.com/sybil-solutions/trellis-serve) | `a1f72be2ff` | 3 | 30 |
| [dsv41-flash-offload](https://github.com/sybil-solutions/dsv41-flash-offload) | `08802b6fe0` | 7 | 23 |
| [glm-flash-lite](https://github.com/sybil-solutions/glm-flash-lite) | `6fe077da79` | 12 | 22 |
| [glm53-flash-tensorfold-4x-spark](https://github.com/sybil-solutions/glm53-flash-tensorfold-4x-spark) | `16a92c85d6` | 1 | 13 |
| [qwen38-flash-next-3090-usb-offload](https://github.com/sybil-solutions/qwen38-flash-next-3090-usb-offload) | `9392e65a95` | 1 | 10 |