Matrix A - minicpm5_2b - run 38043190930 (partial: 21 of 24 cells)

tkv advantage over each engine's own bf16 KV

Same engine, same workload, KV cache swapped: bf16 → tkv. Higher is better on every bar.

arbi-servevLLMSGLang
Decode tok/s per stream: tkv vs bf16
0%20%40%60%80%% vs bf16arbi-serve c1: tkv vs bf16 +56.9%+57%vLLM c1: tkv vs bf16 +58.3%+58%SGLang c1: tkv vs bf16 +56.7%+57%c1@126karbi-serve c8: tkv vs bf16 +36.5%+37%vLLM c8: tkv vs bf16 +31.1%+31%SGLang c8: tkv vs bf16 +33.9%+34%c8@14karbi-serve c64: tkv vs bf16 +32.8%+33%SGLang c64: tkv vs bf16 +41.1%+41%c64@1.6kvLLM c256: tkv vs bf16 +21.1%+21%SGLang c256: tkv vs bf16 +29.5%+29%c256@0.8kconcurrency @ median prompt length
Prefill tok/s: tkv vs bf16
0%20%40%60%80%% vs bf16arbi-serve c1: tkv vs bf16 +67.6%+68%vLLM c1: tkv vs bf16 +63.6%+64%SGLang c1: tkv vs bf16 +63.2%+63%c1@126karbi-serve c8: tkv vs bf16 +22.5%+22%vLLM c8: tkv vs bf16 +15.1%+15%SGLang c8: tkv vs bf16 +29.3%+29%c8@14karbi-serve c64: tkv vs bf16 +4.3%+4%SGLang c64: tkv vs bf16 +8.8%+9%c64@1.6kvLLM c256: tkv vs bf16 +0.6%+0.6%SGLang c256: tkv vs bf16 +4.6%+5%c256@0.8kconcurrency @ median prompt length
TTFT reduction: tkv vs bf16
0%10%20%30%40%50%% lower TTFTarbi-serve c1: tkv vs bf16 +40.3%+40%vLLM c1: tkv vs bf16 +38.9%+39%SGLang c1: tkv vs bf16 +38.7%+39%c1@126karbi-serve c8: tkv vs bf16 +16.6%+17%vLLM c8: tkv vs bf16 +10.9%+11%SGLang c8: tkv vs bf16 +22.4%+22%c8@14karbi-serve c64: tkv vs bf16 +6.8%+7%SGLang c64: tkv vs bf16 +8.9%+9%c64@1.6kvLLM c256: tkv vs bf16 +0.6%+0.6%SGLang c256: tkv vs bf16 +4.8%+5%c256@0.8kconcurrency @ median prompt length

Engine parity

One colour per engine: the engines track each other, with the tkv lines (solid) above the bf16 lines (dashed).

arbi-servevLLMSGLangtkv KVbf16 KV
Decode tok/s per stream
050100150tok/s per streamc1@126kc8@14kc64@1.6kc256@0.8kconcurrency (log scale) @ median prompt lengtharbi-serve bf16 c1: 80.6 tok/s per streamarbi-serve bf16 c8: 61.2 tok/s per streamarbi-serve bf16 c64: 55.9 tok/s per streamvLLM bf16 c1: 85.0 tok/s per streamvLLM bf16 c8: 70.8 tok/s per streamvLLM bf16 c64: 67.9 tok/s per streamvLLM bf16 c256: 27.1 tok/s per streamSGLang bf16 c1: 84.3 tok/s per streamSGLang bf16 c8: 69.1 tok/s per streamSGLang bf16 c64: 67.1 tok/s per streamSGLang bf16 c256: 23.4 tok/s per streamarbi-serve tkv c1: 126 tok/s per streamarbi-serve tkv c8: 83.6 tok/s per streamarbi-serve tkv c64: 74.2 tok/s per streamvLLM tkv c1: 135 tok/s per streamvLLM tkv c8: 92.9 tok/s per streamvLLM tkv c256: 32.8 tok/s per streamSGLang tkv c1: 132 tok/s per streamSGLang tkv c8: 92.5 tok/s per streamSGLang tkv c64: 94.6 tok/s per streamSGLang tkv c256: 30.3 tok/s per stream
Prefill tok/s
02.5k5k7.5k10k12.5kprefill tok/sc1@126kc8@14kc64@1.6kc256@0.8kconcurrency (log scale) @ median prompt lengtharbi-serve bf16 c1: 5766 prefill tok/sarbi-serve bf16 c8: 4715 prefill tok/sarbi-serve bf16 c64: 882 prefill tok/svLLM bf16 c1: 5858 prefill tok/svLLM bf16 c8: 4362 prefill tok/svLLM bf16 c64: 817 prefill tok/svLLM bf16 c256: 212 prefill tok/sSGLang bf16 c1: 5730 prefill tok/sSGLang bf16 c8: 4464 prefill tok/sSGLang bf16 c64: 867 prefill tok/sSGLang bf16 c256: 233 prefill tok/sarbi-serve tkv c1: 9663 prefill tok/sarbi-serve tkv c8: 5774 prefill tok/sarbi-serve tkv c64: 919 prefill tok/svLLM tkv c1: 9587 prefill tok/svLLM tkv c8: 5019 prefill tok/svLLM tkv c256: 213 prefill tok/sSGLang tkv c1: 9352 prefill tok/sSGLang tkv c8: 5772 prefill tok/sSGLang tkv c64: 943 prefill tok/sSGLang tkv c256: 244 prefill tok/s

Scaling with batch

Total decode throughput over all concurrent streams.

arbi-servevLLMSGLangtkv KVbf16 KV
Total decode tok/s (all streams)
02k4k6k8k10ktok/s, all streamsc1@126kc8@14kc64@1.6kc256@0.8kconcurrency (log scale) @ median prompt lengtharbi-serve bf16 c1: 81 tok/s, all streamsarbi-serve bf16 c8: 627 tok/s, all streamsarbi-serve bf16 c64: 3961 tok/s, all streamsvLLM bf16 c1: 85 tok/s, all streamsvLLM bf16 c8: 722 tok/s, all streamsvLLM bf16 c64: 4708 tok/s, all streamsvLLM bf16 c256: 8030 tok/s, all streamsSGLang bf16 c1: 84 tok/s, all streamsSGLang bf16 c8: 708 tok/s, all streamsSGLang bf16 c64: 4644 tok/s, all streamsSGLang bf16 c256: 6790 tok/s, all streamsarbi-serve tkv c1: 126 tok/s, all streamsarbi-serve tkv c8: 802 tok/s, all streamsarbi-serve tkv c64: 5172 tok/s, all streamsvLLM tkv c1: 135 tok/s, all streamsvLLM tkv c8: 891 tok/s, all streamsvLLM tkv c256: 9396 tok/s, all streamsSGLang tkv c1: 132 tok/s, all streamsSGLang tkv c8: 884 tok/s, all streamsSGLang tkv c64: 6230 tok/s, all streamsSGLang tkv c256: 8474 tok/s, all streams

Canonical table

Matrix A - minicpm5_2b - run 38043190930 (partial: 21 of 24 cells)
       │                                     c1@126k                                      │                                      c8@14k                                      │                                     c64@1.6k                                     │                                    c256@0.8k                                     
engine │ prefill tok/s decode/stream  decode total          TTFT          TPOT agg@900 tok/s │ prefill tok/s decode/stream  decode total          TTFT          TPOT agg@900 tok/s │ prefill tok/s decode/stream  decode total          TTFT          TPOT agg@900 tok/s │ prefill tok/s decode/stream  decode total          TTFT          TPOT agg@900 tok/s 
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arbi   │     9663/5766      126/80.6        126/81   13352/22378      7.9/12.4         44/27 │     5774/4715     83.6/61.2       802/627     2470/2960     12.0/16.3       487/373 │       919/882     74.2/55.9     5172/3961     2255/2420     13.5/17.9     3927/3116 │           —/—           —/—           —/—           —/—           —/—           —/— 
vllm   │     9587/5858      135/85.0        135/85   13459/22024      7.4/11.8         45/28 │     5019/4362     92.9/70.8       891/722     3361/3771     10.8/14.1       504/405 │         —/817        —/67.9        —/4708        —/2987        —/14.7        —/3572 │       213/212     32.8/27.1     9396/8030     4779/4810     30.4/36.9     6290/5612 
sglang │     9352/5730      132/84.3        132/84   13796/22518      7.6/11.9         44/27 │     5772/4464     92.5/69.1       884/708     2773/3573     10.8/14.5       527/398 │       943/867     94.6/67.1     6230/4644     2216/2433     10.6/14.9     4716/3589 │       244/233     30.3/23.4     8474/6790     4107/4316     33.0/42.7     5598/4636 
cells: tkv/bf16 · TTFT,TPOT=ms median · prefill=prompt tok / TTFT · decode/stream=1000/TPOT · decode total=all streams over their decode spans · agg=all streams @ 900 tok, prefill INCLUDED · best / worst>20% / worst-close / plain mid