Benchmarks for Qwen3.6 FP8 vs PrismQuant

Analysis by Claude

Key Finding: The models converge by c=4 and are statistically identical from c=8 onward

1. The cold-start artifact in run 1

Every single concurrency level below c=8 shows run 1 dramatically slower than runs 2–3:

FP8 run 1 FP8 runs 2–3 PQ run 1 PQ runs 2–3
c=1 44.1 80.4 / 80.5 46.5 88.0 / 87.6
c=2 104.4 110.9 / 131.8 128.0 175.6 / 176.4
c=4 261.8 283.4 / 288.5 247.6 297.3 / 297.9

This is CUDA kernel cache warmup — the first request on a fresh vllm-server triggers JIT compilation paths. By run 2 the kernels are resident and throughput is stable. The 3-run averages in the table are therefore pessimistic for low concurrency. Steady-state numbers (runs 2–3 avg) are the correct baseline:

FP8 steady (tok/s) PQ steady (tok/s) PQ advantage
c=1 80.5 87.8 +9%
c=2 121.4 176.0 +45%
c=4 286.0 297.6 +4%
c=8+ ≈ tie ≈ tie <2%

2. PrismaQuant’s real advantage is at low concurrency

The 45% gap at steady-state c=2 is real and explained by physics: at low concurrency, decode is purely memory-bandwidth-bound — the GPU must stream every model weight through the memory bus once per token. PrismaQuant’s 22 GB vs 35 GB weight footprint means 37% less data to move per token, which directly translates to faster decode. Theoretical maximum speedup = 35/22 = 1.59×. The observed 1.45× at c=2 is close to that ceiling.

At c=1, MTP-3 speculative decoding partially masks the bandwidth difference (speculation adds compute, reducing the weight-bandwidth fraction of time), which is why the gap is only 9% instead of the expected ~45%.

3. Convergence at high concurrency — the GB10 ceiling

From c=8 onward the models are statistically indistinguishable:

c FP8 PrismaQuant Δ Δ within σ?
c=8 479.5 ±3.4 487.3 ±13.8 +7.8 Yes (0.5 σ)
c=16 756.1 ±71.3 742.1 ±47.4 −14 Yes (0.2 σ)
c=32 1133.5 ±1.0 1122.1 ±4.0 −11 Yes (2.5 σ FP8 noise)

At c=32, both models hit the same ceiling: ~1125–1135 tok/s. The bottleneck has shifted from weight memory bandwidth to KV cache attention compute — at 32 simultaneous requests each building a KV sequence, attention FLOPS and KV cache read bandwidth dominate. Both models have identical attention dimensions, so they perform identically here.

4. Variance pattern at c=16

FP8 c=16 has σ=71 (run 1: 673, runs 2-3: ~797) — same cold-start effect scaled up. PrismaQuant c=16 is the opposite: run 3 drops to 690 despite runs 1-2 being ~768. This reverse-order variance suggests KV cache pressure accumulating over sequential high-concurrency runs on PrismaQuant: with a larger KV footprint per token at full 256K ctx (57 GiB vs 44 GiB), the third run may be encountering more memory pressure. This is minor but worth watching at production context lengths.

5. The practical verdict

Scenario Better choice Reason
Single-user / chatbot (c=1) PrismaQuant +9% steady-state, −13 GB weights
Low traffic (c=2) PrismaQuant +45% steady-state — clear win
Moderate load (c=4–8) Tie Within noise (<4%)
High concurrency (c≥16) Tie Both hit the same GB10 ceiling
Long-context sessions PrismaQuant +27% KV cache capacity (1.35M vs 1.06M tokens)
Tool-call quality FP8 91/100 vs 88/100 (+3 pts)
Cold restart time PrismaQuant 41s vs 57s (−15s)

PrismaQuant is the better default for this system. It’s faster at the concurrencies most likely to occur in production (c=1–2 for a single-GPU personal deployment), uses 13 GB less RAM, loads faster, gives 27% more KV cache for long context, and ties FP8 everywhere else. The 3-point tool-eval gap favors FP8 but is unlikely to be perceptible in real workloads.

80 tok/sec on FP8 is impressive. Are you running DFlash? MTP? I’m assuming a Single Spark, right?

MTP = 3
Yes, I was hitting 30+ initially due to the USB-C power bug. I took the test script from one of the forum post and put it into my Dashboard.

Nice dashboard. Interesting, I don’t seem to be affected by the power bug , monitoring continuously with with Sparkview. I’m doing ~60-70 max with FP8 on MTP 2 or 4. I will investigate further to see if I can squeeze a few more tok/s without compromising quality

@JW2026

Is this Qwen3.6-27B? Could you provide the vllm command with config? I am trying to achieve decent performance on DGX Spark but maximum I could achieve is around 20 tok/s

Hi, how you get this dashboard ?

@zezo_khaled I think this is the dashboard GitHub - thx0701/dgx-spark-status: DGX Spark real-time system monitoring dashboard (SvelteKit + SSE) · GitHub