DGX Spark vs EVO-X3:Quality×Cost 三阶段赛
Quality×cost tabs: Flash-Next (Spark 1694s vs EVO 3374s), Qwen3.8-27B (800s vs 1370s), DeepSeek-V4-Flash Spark-only (1844s). EVO DeepSeek GGUF is incoherent.
Not a one-shot tok/s number. Both boxes generate HTML until Playwright render_ok. Per stage we record the first passing round (N) and when the laggard also passes (equalize). Final score is wall_sum across attempts.
Flash-Next and Qwen3.8-27B are head-to-head. DeepSeek-V4-Flash is Spark-only: EVO’s Q3 ROCmFP4 GGUF currently emits garbage on llama.cpp Vulkan, so we do not publish an EVO wall_sum for that model.
Flash-Next
Spark NVFP4 / SGLang · EVO ROCmFP4 / llama.cpp Vulkan. Snake retuned to 16k tokens after 8k truncations.
Totals
| Spark | EVO | |
|---|---|---|
| arch3d → first pass | 676s (r4) | 688s (r3) |
| angry → first pass | 920s (r3) | 2520s (r6) |
| snake → first pass | 98s (r1) | 167s (r1) |
| wall_sum | 1694s (~28 min) | 3374s (~56 min) |
Same gate: Spark finishes in about half the wall time. The gap is mostly angry (M=3 on EVO).
Stage 1 · arch3d
at-N: N=3, leader=EVO. EVO already has usable HTML; Spark is faster per round but fails the gate.
| pass | round wall | tok/s | mean | wall 1..N | |
|---|---|---|---|---|---|
| EVO | yes | 278s | 27.5 | 56.8 | 688s |
| Spark | no | 180s | 39.1 | 30.5 | 514s |
Equalize: Spark r4 (M=1), 676s to first pass vs EVO 688s.
Stage 2 · angry
at-N: N=3, leader=Spark.
| pass | round wall | tok/s | wall to N | |
|---|---|---|---|---|
| Spark | yes | 273s | 38.3 | 920s |
| EVO | no at r3 | 441s (r3 fail) | 27.3 | ~1246s (r1–3 fail) |
Equalize: EVO r6 (M=3), 2520s vs Spark 920s.
Stage 3 · snake (16k)
N=1 · both pass r1 · M=0 · Spark 98s (39.5 tok/s) · EVO 167s (27.7 tok/s)
Qwen3.8-27B
Spark NVFP4 + DFlash2 / SGLang :8001 · EVO ROCmFP4 FAST + DFlash / llama.cpp Vulkan :8080. Makespan 1406s.
Totals
| Spark | EVO | |
|---|---|---|
| arch3d → first pass | 473s (r3) | 1001s (r4) |
| angry → first pass | 294s (r1) | 327s (r1) |
| snake → first pass | 33s (r1) | 42s (r1) |
| wall_sum | 800s (~13 min) | 1370s (~23 min) |
Head-to-head holds. Spark ~1.7× on wall_sum. arch3d is the gap (Spark N=3, EVO M=1).
Stage 1 · arch3d
at-N: N=3, leader=Spark. EVO r3 is still open HTML (gate fail).
| pass | round wall | tok/s | wall to first pass | |
|---|---|---|---|---|
| Spark | r3 | 127s | 46.2 | 473s |
| EVO | r4 (M=1) | 242s at pass | 30.9 | 1001s |
Stage 2 · angry
N=1 · both r1 · M=0
| wall | tok/s | |
|---|---|---|
| Spark | 294s | 41.3 |
| EVO | 327s | 32.2 |
Stage 3 · snake
N=1 · both r1 · M=0 · Spark 33s (55.1 tok/s) · EVO 42s (37.4 tok/s)
DeepSeek-V4-Flash — Spark only
SparkInfer / vLLM · deepseek-v4-flash-0731 · :8888. EVO llama.cpp Vulkan0 + Q3 ROCmFP4 GGUF is not scored: output is garbled from token 1 (e.g. 996 then CJK loops). Same-range Spark vs EVO compare is not possible on this quant/runtime.
Spark totals
| stage | result | pass round | that round | wall to pass / spent | decode tok/s |
|---|---|---|---|---|---|
| arch3d | skip (12/12 fail) | — | — | 1395s spent | ~41–45 |
| angry | N=2 | r2 | 73s | 119s | 48.7 |
| snake | N=4 | r4 | 76s | 330s | 43.3 |
| wall_sum | Spark done | 1844s (~31 min) |
arch3d never closed the Playwright gate in 12 rounds, so N is unset and the stage is skipped. angry and snake both produce valid HTML. Decode on passing rounds is ~43–49 tok/s — in the same band as Flash-Next / Qwen27 on this box, but retries make wall_sum larger than Qwen27.
Stage 2 · angry (pass)
r1 fail (46.7s, incomplete interaction hooks) · r2 pass.
Stage 3 · snake (pass)
r1–r3 fail · r4 pass · 76s · 43.3 tok/s · 330s through N.
Why EVO is blank
- Weights load (4-shard Q3 ROCmFP4, ~101G via GTT) after a partial-tensor loader workaround.
- Fused DeepSeek V4 HC ops are not supported on Vulkan0 and are disabled.
- Smoke prompts are already garbage — this is not a harness/prompt issue.
- Retries will not produce a fair wall_sum. We stop the EVO cell here.
How to read this
- at-N: who already has usable HTML at the first pass.
- equalize: cost for both boxes to clear the same gate.
- wall_sum: all attempt time, including fails and skips.
- Single-prompt Flash tok/s post: Flash-Next same-prompt bench