Spark-X2.6-4B inference speedPrefill and decode throughput across 4K, 32K, 128K and 256K context lengths. Two separate test groups. Higher is better. Missing measurements are omitted. Test group 2 hardware: Mac M5 Pro, 16-core.
{"contexts": ["4K", "32K", "128K", "256K"], "metrics": ["group1_prefill", "group1_decode", "group2_prefill", "group2_decode"], "values": [[[14107, 12131, 8274, 5787], [14668, 12543, 7791, null], [18156, 14834, 9078, 5971], [17035, 12821, 6898, 5136]], [[210.54, 172.78, 107.92, 71.93], [179.64, 153.55, 104.3, null], [219.34, 175.67, 104.9, 67.85], [213.52, 184.42, 130.21, 91.42]], [[1630.55, 1125.2, 575.49, 341.46], [1699.55, 1247.68, 672.44, null], [1858.32, 1266.98, 586.9, 343.02], [2369.17, 1742.24, 1006.2, 594.22]], [[65.82, 56.61, 37.87, 25.41], [62.15, 52.69, 34.5, null], [76.14, 62.04, 37.73, 23.43], [86.58, 72.05, 45.81, 27.84]]]}
Inference Speed
Throughput across context lengths
TOKENS / SECOND ↑
RTX 4090
llama.cpp · TensorRT
Qwen3.5-4B · llama.cpp · Q4_K_M
Gemma4-E4B · llama.cpp · Q4_K_M
Spark-X2.6-4B · llama.cpp · Q4_K_M
Spark-X2.6-4B · TensorRT · INT4
Prefill
tokens/s
0
4k
8k
12k
16k
20k
4K
32K
128K
256K
Context length
Qwen3.5-4B · llama.cpp · Q4_K_M | 4K | 14,107 tokens/s
Qwen3.5-4B · llama.cpp · Q4_K_M | 32K | 12,131 tokens/s
Qwen3.5-4B · llama.cpp · Q4_K_M | 128K | 8,274 tokens/s
Qwen3.5-4B · llama.cpp · Q4_K_M | 256K | 5,787 tokens/s
Gemma4-E4B · llama.cpp · Q4_K_M | 4K | 14,668 tokens/s
Gemma4-E4B · llama.cpp · Q4_K_M | 32K | 12,543 tokens/s
Gemma4-E4B · llama.cpp · Q4_K_M | 128K | 7,791 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 4K | 18,156 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 32K | 14,834 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 128K | 9,078 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 256K | 5,971 tokens/s
Spark-X2.6-4B · TensorRT · INT4 | 4K | 17,035 tokens/s
Spark-X2.6-4B · TensorRT · INT4 | 32K | 12,821 tokens/s
Spark-X2.6-4B · TensorRT · INT4 | 128K | 6,898 tokens/s
Spark-X2.6-4B · TensorRT · INT4 | 256K | 5,136 tokens/s
Decode
tokens/s
0
48
96
144
192
240
4K
32K
128K
256K
Context length
Qwen3.5-4B · llama.cpp · Q4_K_M | 4K | 210.54 tokens/s
Qwen3.5-4B · llama.cpp · Q4_K_M | 32K | 172.78 tokens/s
Qwen3.5-4B · llama.cpp · Q4_K_M | 128K | 107.92 tokens/s
Qwen3.5-4B · llama.cpp · Q4_K_M | 256K | 71.93 tokens/s
Gemma4-E4B · llama.cpp · Q4_K_M | 4K | 179.64 tokens/s
Gemma4-E4B · llama.cpp · Q4_K_M | 32K | 153.55 tokens/s
Gemma4-E4B · llama.cpp · Q4_K_M | 128K | 104.3 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 4K | 219.34 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 32K | 175.67 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 128K | 104.9 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 256K | 67.85 tokens/s
Spark-X2.6-4B · TensorRT · INT4 | 4K | 213.52 tokens/s
Spark-X2.6-4B · TensorRT · INT4 | 32K | 184.42 tokens/s
Spark-X2.6-4B · TensorRT · INT4 | 128K | 130.21 tokens/s
Spark-X2.6-4B · TensorRT · INT4 | 256K | 91.42 tokens/s
Mac M5 Pro · 16-core
llama.cpp · MLX
Qwen3.5-4B · llama.cpp · Q4_K_M
Gemma4-E4B · llama.cpp · Q4_K_M
Spark-X2.6-4B · llama.cpp · Q4_K_M
Spark-X2.6-4B · MLX · INT4
Prefill
tokens/s
0
500
1k
1.5k
2k
2.5k
4K
32K
128K
256K
Context length
Qwen3.5-4B · llama.cpp · Q4_K_M | 4K | 1,630.55 tokens/s
Qwen3.5-4B · llama.cpp · Q4_K_M | 32K | 1,125.2 tokens/s
Qwen3.5-4B · llama.cpp · Q4_K_M | 128K | 575.49 tokens/s
Qwen3.5-4B · llama.cpp · Q4_K_M | 256K | 341.46 tokens/s
Gemma4-E4B · llama.cpp · Q4_K_M | 4K | 1,699.55 tokens/s
Gemma4-E4B · llama.cpp · Q4_K_M | 32K | 1,247.68 tokens/s
Gemma4-E4B · llama.cpp · Q4_K_M | 128K | 672.44 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 4K | 1,858.32 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 32K | 1,266.98 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 128K | 586.9 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 256K | 343.02 tokens/s
Spark-X2.6-4B · MLX · INT4 | 4K | 2,369.17 tokens/s
Spark-X2.6-4B · MLX · INT4 | 32K | 1,742.24 tokens/s
Spark-X2.6-4B · MLX · INT4 | 128K | 1,006.2 tokens/s
Spark-X2.6-4B · MLX · INT4 | 256K | 594.22 tokens/s
Decode
tokens/s
0
20
40
60
80
100
4K
32K
128K
256K
Context length
Qwen3.5-4B · llama.cpp · Q4_K_M | 4K | 65.82 tokens/s
Qwen3.5-4B · llama.cpp · Q4_K_M | 32K | 56.61 tokens/s
Qwen3.5-4B · llama.cpp · Q4_K_M | 128K | 37.87 tokens/s
Qwen3.5-4B · llama.cpp · Q4_K_M | 256K | 25.41 tokens/s
Gemma4-E4B · llama.cpp · Q4_K_M | 4K | 62.15 tokens/s
Gemma4-E4B · llama.cpp · Q4_K_M | 32K | 52.69 tokens/s
Gemma4-E4B · llama.cpp · Q4_K_M | 128K | 34.5 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 4K | 76.14 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 32K | 62.04 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 128K | 37.73 tokens/s
Spark-X2.6-4B · llama.cpp · Q4_K_M | 256K | 23.43 tokens/s
Spark-X2.6-4B · MLX · INT4 | 4K | 86.58 tokens/s
Spark-X2.6-4B · MLX · INT4 | 32K | 72.05 tokens/s
Spark-X2.6-4B · MLX · INT4 | 128K | 45.81 tokens/s
Spark-X2.6-4B · MLX · INT4 | 256K | 27.84 tokens/s
Missing measurements are omitted. Each test group uses its own throughput scale.
Higher is better