Google 31B params BF16 Dense

Gemma-4-31B-it

Dense 31B in BF16 op DGX Spark betaalt zijn breedte direct. Single-user op 4k context blijft net bruikbaar, maar bij c=10 zakt decode naar 3.4 t/s/user en 25k context tikt op 177 sec TTFT. Onder de rustige kantoor-baseline klimt de queue naar 168 concurrente requests en TTFT mean naar 204 seconden. Voor deze hardware is dense 31B de verkeerde architectuur, een MoE als de 26B-A4B doet vergelijkbaar werk drie tot vier keer sneller.

66.4
Arena score
12
Throughput tok/s
62 GB
VRAM
9/9
Benches measured
Hugging Face → vLLM v0.20.1 DGX Spark, NVIDIA GB10, 128 GB unified memory Last measured 6 May 2026

The quality component of the Arena score. Not measured by me, from the vendor's official model cards. For cross-model comparison with a consistent eval harness, Artificial Analysis is a useful third party. The average of the three benchmarks feeds one-to-one into the Score formula (weighted heavier in Aggregate/Agent, lighter in Batch).

80.7
Avg
82.6
MMLU-Pro
82.3
GPQA-Diamond
77.1
HumanEval
Decode throughput · total t/s · c=10
BF16
1k ctx 20.0 t/s
8k ctx 19.0 t/s
4k+turn 22.0 t/s
25k ctx 7.0 t/s

5 closed-loop tests with llama-benchy and 4 open-loop tests with vllm bench serve. Per benchmark the tokens/sec (decode throughput) and TTFT p50. TTFT translates directly into UX feel, tps into capacity. Expand "view command" for the exact command.

01 · llama-benchy closed-loop

Chat

Korte prompt, lang antwoord. De vorm die als normale chat moet aanvoelen, TTFT bepaalt of het "snappy" is.

pp (prompt) 1024 tg (gen) 1024 depth 0 concurrency 10 runs 3
tokens/sec
3.4 t/s
TTFT · p50
7,19s
3 runs · seed 42
02 · llama-benchy closed-loop

RAG · 8k context

Middelgrote context, een paar documentchunks met antwoord van normale lengte. Toont prefill-kosten zonder de muur te raken.

pp (prompt) 8192 tg (gen) 512 depth 0 concurrency 10 runs 3
tokens/sec
2.7 t/s
TTFT · p50
44,19s
3 runs · seed 42
03 · llama-benchy closed-loop

Lange output / agents

Korte instructie, veel output. Code-generation, rapporten of gestructureerde agent-output. Stress-test voor decode throughput.

pp (prompt) 256 tg (gen) 4096 depth 0 concurrency 10 runs 3
tokens/sec
3.5 t/s
TTFT · p50
2,09s
3 runs · seed 42
04 · llama-benchy closed-loop

Grote context · 25k

Stress-test met grote prompts. Niet per se chatmateriaal, wel exact waar de prefill-muur zichtbaar wordt en TTFT instort.

pp (prompt) 25000 tg (gen) 256 depth 0 concurrency 10 runs 3
tokens/sec
1.4 t/s
TTFT · p50
177,23s
3 runs · seed 42
05 · llama-benchy closed-loop

Multi-turn · kantoorwerk

Vijf beurten per gesprek, tien gesprekken parallel. Dicht bij hoe een team dit echt gebruikt, met groeiende context per turn.

pp (prompt) 2048 tg (gen) 512 depth 4 concurrency 10 runs 3
tokens/sec
3.2 t/s
TTFT · p50
11,76s
3 runs · seed 42
06 · vllm bench serve open-loop

Realistische kantoor-baseline

Random dataset · 4000 tokens in, 500 tokens uit · request-rate 0.3, burstiness 0.7. Een rustig kantoor.

dataset random rate (req/s) 0,30 burstiness 0,7 prompts 200
tokens/sec
3.6 t/s
TTFT · p50
164,38s
200 prompts · seed 42
07 · vllm bench serve open-loop

Echte gesprekken · ShareGPT

ShareGPT V3 · gemiddeld 228 tokens per turn · natuurlijk variërend per gesprek. Wat real users doen, niet een synthetische random distributie.

dataset sharegpt v3 rate (req/s) 0,30 burstiness 0,7 prompts 250
tokens/sec
3.5 t/s
TTFT · p50
903ms
250 prompts · seed 42
08 · vllm bench serve open-loop

Maandagochtend-piek

Random · 4000 in / 500 uit · request-rate 1.5 req/s, burstiness 1.0, max 25 parallel. Wanneer iedereen tegelijk inlogt, zien we de queue groeien?

dataset random rate (req/s) 1,50 burstiness 1,0 prompts 300 max parallel 25
tokens/sec
14.5 t/s
TTFT · p50
4,97s
300 prompts · seed 42
09 · vllm bench serve open-loop

Reasoning workload

Lange chain-of-thought outputs · 1k in / 4k uit · trage rate (0.2 req/s) want elke request kost veel decode-budget. Test of TTFT stabiel blijft.

dataset random rate (req/s) 0,20 burstiness 1,0 prompts 50
tokens/sec
1.9 t/s
TTFT · p50
1,85s
50 prompts · seed 42
What works

Single-user 4k context blijft net bruikbaar

Bij c=1 op 4k context: 3.7 t/s/user decode, TTFT 3.9 sec. Niet snel, maar bruikbaar voor één gebruiker met korte prompts. Daarboven valt het hard tegen.

What broke

Office-baseline tikt op 200+ sec TTFT

Onder de rustige kantoor-workload (0.3 rps Poisson) klimt de queue naar 168 concurrente requests, TTFT mean 204 sec, P99 boven 8 minuten. Voor productie-inzet niet bruikbaar.

What disappointed

25k context is een non-starter

TTFT mean 177 sec bij c=10, stddev 90 sec. Met 10 concurrent requests à 25k tokens prefill loopt de queue uren achter. De prefill-muur staat hier al bij c=5.

What surprised

62 GB weights laten KV-cache krap

Dense BF16 vreet geheugen. Op 128 GB unified blijft circa 55 GB voor KV-cache, en daarmee zit de scheduler met c=10 op 25k krap. Op deze Spark is dit duidelijk een MoE-hardware, niet een dense-hardware.

More numbers?
Read the full article.

Explanation

Esc