Agentic AI inference. Optimized for every Blackwell GPU.
+86% faster than llama.cpp with Blackwell-native Custom CUDA kernels (Qwen3.6-35B-A3B SOTA, RTX 5090, v0.4.3). SparkInfer is the runtime layer for Private AI agents — optimized MoE/LLM decoding from desk-side RTX to workstation PRO 6000. Continuously optimized by competition at SN74 on Gittensor and Kernel Design Agents.
Why fastest? Faster inference means more intelligence, more responsive agents, and more efficient compute.
Fewer models. Deeper optimization. Faster evolution.
SparkInfer focuses on the models driving the future of AI — not thousands of legacy architectures.
| Model | Role |
|---|---|
| Qwen3.6-35B-A3B | Primary SOTA — hybrid Gated-DeltaNet + full-attention MoE |
| Qwen3.8-27B | Dense hybrid Gated-DeltaNet · current eval scope — native NVFP4 from our RTX 5090 build or unsloth, both supported |
| SparkDistill | Fable 5 / OpenAI 5.6-level CoT (coming soon) |
| MiniMax M3 | Open MoE frontier (next) |
Consumer → Workstation → Datacenter — built for NVIDIA Blackwell from the beginning (sm_120 + sm_121, not datacenter sm_100).
| GPU | Arch | Target |
|---|---|---|
| RTX Spark GB10 | sm_121 |
Personal AI PC · desk-side agents |
| DGX Spark | sm_121 |
AI workstation |
| RTX 5090 | sm_120 |
Consumer Blackwell · current dev platform |
| RTX PRO 6000 | sm_120 |
96 GB workstation · 32k/4k API profile |
RTX 5090 · same UD-Q4_K_M GGUF · greedy bs=1 · warm interleaved · v0.4.4 frontier (same-box main guards).
| context | SparkInfer | llama.cpp | Δ |
|---|---|---|---|
| 128 | 512 tok/s | 276 tok/s | +86% |
| 512 | 506 tok/s | 276 tok/s | +83% |
| 4k | 486 tok/s | 276 tok/s | +76% |
| 16k | 467 tok/s | 281 tok/s | +66% |
| 32k | 437 tok/s | 280 tok/s | +56% |
| context | SparkInfer | llama.cpp | Δ |
|---|---|---|---|
| 4k | 13,800 tok/s | 8,726 tok/s | +58% |
| 16k | 17,700 tok/s | 8,390 tok/s | +111% |
| 32k | 18,150 tok/s | 7,984 tok/s | +127% |
Quality parity vs llama.cpp: top-1 0.953 · KL 0.031 · IFEval 83% · BFCL 75%.
Full competitor matrix (vLLM, SGLang, TensorRT-LLM) and quality tables:
bench/competitors/latest-results.md ·
bench/quality/README.md.
RTX 5090 · same Q4_K_M GGUF (unsloth/Qwen3.8-27B-GGUF) · greedy bs=1 · 5 reps ·
sparkinfer d8e1c74 vs llama.cpp d8df12e (-ngl 99; -fa 1 was measured too and came out
marginally slower on this model, so llama.cpp's better configuration is the one reported).
| context | SparkInfer | llama.cpp | Δ |
|---|---|---|---|
| 128 | 86.9 tok/s | 80.2 tok/s | +8.4% |
| 4k | 85.2 tok/s | 77.0 tok/s | +10.6% |
| 16k | 82.3 tok/s | 73.9 tok/s | +11.5% |
| context | SparkInfer | llama.cpp | Δ |
|---|---|---|---|
| 128 | 2,033 tok/s | 2,782 tok/s | −26.9% |
| 512 | 3,790 tok/s | 3,680 tok/s | +3.0% |
| 4k | 7,548 tok/s | 3,670 tok/s | +105.7% |
| 16k | 7,596 tok/s | 3,496 tok/s | +117.2% |
Prefill crosses over at ~512 tokens: below it llama.cpp leads, above it sparkinfer pulls away to roughly 2× while llama.cpp stays flat near 3,700 pp. The short-prompt loss is published rather than omitted, and it has a cause — reading a Q4_K_M GGUF means dequantizing Q4_K into the GEMM operand on every pass, a fixed cost that 128 tokens cannot amortize but 4k easily does (2,033 → 3,114 → 3,790 → 6,325 → 7,349 → 7,515 pp across 128 → 4k). It is a live optimisation target, tracked by the same automated eval that gates every PR.
Note this is the GGUF path, kept identical to llama.cpp's input on purpose. sparkinfer's own NVFP4 checkpoints do not pay that dequant and reach 5,031–6,546 pp at the same ctx=128 — see the two tables below, which is where a ~5,000 pp figure for this model comes from.
The GGUF numbers above exist to make the engine comparison fair. They are not how sparkinfer runs this model: it reads Qwen3.8-27B's NVFP4 weights directly, from either of two supported checkpoints.
gittensor-model-hub/Qwen3.8-27B-NVFP4-RTX5090
— ours: uniform NVFP4 on every Linear, quantized in house with NVIDIA ModelOpt for the RTX 5090's
FP4 tensor cores, and the checkpoint the automated eval scores every PR against:
| context | decode | prefill |
|---|---|---|
| 128 | 95.7 tok/s | 6,942 tok/s |
| 4k | 93.6 tok/s | 14,364 tok/s |
| 16k | 90.2 tok/s | 13,794 tok/s |
Auto-refreshed by the ModelOpt eval bot at 44e1c4505 — these are the numbers that PR measured on the pinned RTX 5090, which after squash-merge are main's. Regenerated on every auto-merge, so the table cannot drift behind the code.
Same weights the model was released with, re-quantized for the hardware it runs on. Measured at
d8e1c74 that was +9–10% decode and +28–222% prefill over the same engine reading a Q4_K_M
GGUF, and +19–22% decode / +135–179% prefill over llama.cpp on its GGUF — including the one
dimension llama.cpp wins above, 6,546 pp at ctx=128 against 2,782. Those comparisons are a
snapshot: only the table above self-updates, because a round measures this checkpoint and nothing
else.
unsloth/Qwen3.8-27B-NVFP4 — upstream: NVFP4 FFN + FP8 attention/GDN projections, equally supported, and measured on the same box at the same commit:
| context | decode | prefill |
|---|---|---|
| 128 | 84.9 tok/s | 5,031 tok/s |
| 4k | 83.2 tok/s | 9,548 tok/s |
| 16k | 80.6 tok/s | 8,727 tok/s |
Measured at d8e1c74. Not auto-refreshed — a round scores the ModelOpt checkpoint and only
guards this one, so these move when someone re-measures, not on every merge.
Both load through the same load_compressed_tensors path and share the batched prefill and every
decode kernel — the mixed-precision build is simply a different quantization of the same weights,
so it lands a little slower on this hardware. The eval scores PRs on our build and runs a
separate no-regression guard on the upstream one, which is what stops an optimisation from
winning on the scored checkpoint by pessimising the other.
Read that last column for what it is. llama.cpp cannot load NVFP4 compressed-tensors at all, so
vs llama.cpp there is each engine on the format it actually runs — our NVFP4 against
llama.cpp's best GGUF result — not a same-weights benchmark. The same-weights comparison is the
one at the top of this section, GGUF on both sides, prefill@128 loss included.
Runtime footprint (excluding model weights):
| runtime | size | vs sparkinfer |
|---|---|---|
| sparkinfer native binary | 2.5 MB | 1× |
| llama.cpp CUDA | 80 MB | 33× larger |
| vLLM | 605 MB | 243× larger |
Contributors submit PRs; the bot verifies correctness and speed on real RTX 5090 hardware; SN74 rewards verified marginal speedups. 15 releases in 3 weeks — from first llama.cpp beat to +86% decode / +127% prefill @ 32k on Qwen3.6 SOTA.
- Pick a narrow bottleneck in the Blackwell decode path.
- Submit a PR with source changes and benchmark evidence.
- The bot builds
mainand the PR on the same RTX 5090. - Correctness vs llama.cpp; guards at 128 / 512 / 4k / 16k / 32k decode.
- Strongest context improvement scores; regressions get
regression-*labels. - Frontier merges; the dashboard updates.
Miner workflow: docs/miner-guide.md.
Fastest = cost-effective inference — more tokens per dollar on Blackwell edge first.
- Qwen3.6 SOTA: +86% decode / +127% prefill @ 32k vs llama.cpp on RTX 5090 (512 tok/s decode @ 128 ctx)
- RTX PRO 6000 — 32k input + 4k output, full MoE resident
- RTX Spark + DGX Spark
sm_121bring-up for desk-side agents - Fastest AI runtime at the edge · desktop app, RAG, memory
Attested builds and sealed execution on PRO 6000 server and B200.
- TDX + NVIDIA CC attestation for
sparkinfer-serverworkloads - Source-verified binaries — same eval loop, inside the enclave
- Privacy guardrails and end-to-end encryption
- Domain-specific models via SparkDistill
- Licensed on-prem runtime for regulated enterprise
On NVIDIA Blackwell (CUDA 12.8+) — scripts auto-detect GPU arch, fetch prebuilt binaries (or build from source), and download the model:
# decode throughput (fetches Qwen3-30B-A3B Q4_K_M on first run)
bench/scripts/bench.sh --download
# head-to-head vs llama.cpp on the same GGUF + GPU
bench/scripts/bench.sh --download --compare
# accuracy gate — token-match / KL vs llama.cpp
bench/scripts/accuracy.sh --downloadYour own model: bench/scripts/bench.sh /path/to/model.gguf --tokens 256. Options: bench/scripts/README.md.
| Path | What |
|---|---|
kernels/ |
CUDA kernels — flash-decode, decode GEMV, fused MoE FFN, GEMM, RMSNorm, RoPE, GGUF dequant |
runtime/ |
scheduler, paged KV cache, CUDA-graph decode, native GGUF loading, model forward |
moe/ |
sync-free MoE router + expert dispatch |
bench/ |
reproducible benchmarks + eval harness |
dashboard/ |
static frontier dashboard (GitHub Pages) |
server/ |
OpenAI-compatible HTTP API (BUILD_SERVER=ON) |
Scoring is speedup-only. SN74 pays verified marginal speedups labeled XL / L / M / S / XS. Sub-2% gains are never aggregated across contexts. See .gittensor/weights.json.
Requires CUDA Toolkit 12.8+ (sm_120 / sm_121 codegen).
cmake -B build -DCMAKE_CUDA_ARCHITECTURES=120 # or 121 for RTX Spark / Jetson Thor
cmake --build build -j
ctest --test-dir buildOpen a PR — a bot evaluates every ~30 min: source build on RTX 5090, correctness gate vs llama.cpp, no-regression guards, eval:<label> verdict. The bot never auto-merges. Details: eval/ · EVAL-TRUST.md (Polaris TDX receipts, reproducible from source today).
| label | meaning |
|---|---|
XL · L · M · S · XS |
verified speedup over frontier, by % gain |
none |
correct, no verified improvement |
REJECT |
failed correctness or regression |
BASELINE |
first verified frontier entry |
Source-required and reproducible. Before a PR: bench/scripts/bench.sh + bench/scripts/accuracy.sh. See CONTRIBUTING.md.
