Skip to results
JSPARK3

JSPARK3 v2

Tempo

DeepSeek-V4.1 Flash
on three DGX Sparks.

Our current daily driver, using EXL3 experts and vLLM with changes to prompt reuse, prefill scheduling, and Engram reads.

Three Sparks. One model.Three champagne-colored DGX Sparks with porous metallic fronts, connected by a three-way RoCE fabric. Token pulses illustrate shared fabric activity, not live telemetry or sequential model execution. Rank zero exposes the API; all three machines participate in tensor-parallel execution.NVIDIA00 / API HEADNVIDIA01 / WORKERNVIDIA02 / WORKERONE ENDPOINTTHREE-WAY EXECUTION / RoCE FABRIC
Three DGX Sparks · one endpointRank 0 serves the API; all three run inference.
Release
v2.0.1 · Experimental
Hardware
3 × NVIDIA DGX Spark (GB10, 128 GB each)
Serving
EXL3 experts · vLLM · TP3

Measured on our three Sparks.

Tempo measurements, September 2026. Earlier test records call this build L5-P. Different workloads answer different questions.

Short speed screen

Code, prose, and parallel streams.

Aggregate end-to-end output.
Measured on our three DGX Sparks.

Workload

Code · C1 · 1 offered stream

TempoOur measurement64.0 tok/s
MiaOur measurement59.2 tok/s

1.08× Mia’s measured code throughput in this cell.

How throughput scales tok/s · higher is better
TempoMia

Y-axis: 50160 tok/s · does not start at zero

Offered streams C = concurrent requests submitted together

Same short screen, different recipes. Completion tokens across all streams ÷ shared HTTP wall time, including initial wait. One wave per category and concurrency, 150–256-token caps. These fixtures measure speed, not answer quality.

Comparisons stop at 4 offered streams, within Mia’s active-request cap. Tempo allows 8 active requests. These are recipe-level comparisons, not an isolated kernel or quantization test.

Tony’s published aggregate reference is available in “8-category mean”. It is separate from the code and prose measurements shown here.

Mia’s recipe ↗Tony’s recipe ↗Measurement notes ↗

C1–C4 values and sources
Aggregate end-to-end tok/s. Tempo and Mia measured locally; Tony author-published, eight-category mean only.
StreamsTempo codeMia codeTempo proseMia proseTempo meanMia meanTony mean*
C164.0559.2536.2527.1649.0542.5446.00
C297.6288.7048.3944.6373.5566.4873.37
C3136.55130.2964.5054.0697.2190.17100.14
C4158.70155.8878.2767.41114.16106.69118.41

*Author-published reference. Chart data and source hashes ↗ · Full methods and historical results ↗

Longer agent work

Three agents, three recipes.

Three-minute tasks, measured on our fleet at C3.

Round

C3 · Repeat round · aggregate tok/s

TempoOur measurement82.0 tok/s
TonyLocally adapted recipe73.0 tok/s
MiaCounted local rerun71.8 tok/s

Accepted backend tokens ÷ 180 seconds, including unfinished output, health probes, and small launch/drain overhead. Same initial tasks; later tool histories diverge. Repeat uses fresh Pi sessions with caches intact.

One cohort, no output-quality score or productivity claim. Three agents stay within every recipe’s active-request cap. Tony’s local run includes fabric, storage, loader, and allocator adaptations; it is separate from his published short-screen figures.

All Work rounds and methods ↗

Tempo on its own

Code
67.31–75.64 tok/s
Prose
33.21–34.28 tok/s

Single stream, after first output. Ranges across 3 prose and 4 code tasks; one answer per task. (Completion tokens − 1) ÷ (HTTP duration − TTFT), including transport, finalization, and speculative chunks. Not GPU-only decode.

146.12 tok/s in the separate six-stream short-answer test. Eight categories, 150–256-token caps, one wave per category; transport fixtures, not answer-quality grades. Mean of eight category wave rates, including initial wait.

Three-minute agent tasks

The repeated Work round.

Concurrent agents

81.98 tok/s

Aggregate output over the full task window

One three-minute task round; later tool trajectories diverge; no output-quality score.

Same initial payload repeated in fresh Pi sessions, with caches intact. Server-wide accepted tokens ÷ 180 seconds, including unfinished output, health probes, and small launch/drain overhead. Active cap: 8.

110.49 tok/s

Aggregate output over the full task window

One three-minute task round; later tool trajectories diverge; no output-quality score.

Same initial payload repeated in fresh Pi sessions, with caches intact. Server-wide accepted tokens ÷ 180 seconds, including unfinished output, health probes, and small launch/drain overhead. Active cap: 8.

Time to first token

An uncached prompt and its exact repeat.

Prompt length
Uncached prompt42.623 s
Exact repeat0.708 s

Three-trial medians, one request at a time. Client request start to first nonempty streamed output.

Exact repeat reuses the same prefix with server caches intact. Uncached means a new prompt, with kernels already warm.

Uncached prompt49.659 s
Exact repeat0.471 s

Three-trial medians, one request at a time. Client request start to first nonempty streamed output.

Exact repeat reuses the same prefix with server caches intact. Uncached means a new prompt, with kernels already warm.

Built on shared work.

Tempo builds on Tony and Kai’s DeepSeek Spark serving recipe ↗ and bot-lab-21’s model files, made smaller with WestWaters’ Pollard method (EXL3). Mia’s three-Spark recipe ↗ provides a comparison. Its ideas for combining model calculations and sharing memory helped inform Tempo; Tempo does not reuse its code.

Mia’s DeepSeek recipe downloads the official DeepSeek model files. Tempo downloads bot-lab-21’s version, prepared to use less memory. These are different model downloads.

These comparisons use September 2026 versions. They do not rank the latest releases. Test sources, exact software versions, and comparison limits ↗

What changed

Prompt reuse
Retain reusable prefixes at valid state boundaries, including changed suffixes and tool continuations.
Prefill scheduling
Keep large chunks for a request running alone; share a smaller budget when another stream is generating.
Engram reads
Read packed weights and scales together. The preparation preserves the values and quantization.

Run Tempo

You need three DGX Sparks, fast direct network connections between them (RoCE), and enough disk space. The install guide first checks that your machines have what they need.

Tempo downloads all its model files from bot-lab-21’s DeepSeek release, including a smaller helper model that helps generate answers faster. The official DeepSeek release named in our docs tells you where the model comes from; it is not another download. JSPARK3 Tempo on Hugging Face hosts the recipe, not model files.

Known limitations
  • Experimental serving recipe; historical measurements come from one three-Spark fleet.
  • A short request arriving two seconds into a 64K prefill waited 40.458 seconds.
  • 300,000 tokens is configured context, not certified usable context or C8 capacity.
  • Uncached prompt measurements use warmed kernels; they are not cold machine starts.
  • Work counts unfinished output and does not score quality. Mia active cap 4 differs from Tempo cap 8.
  • Native vision and optional Pi desktop use are separate from the throughput cohort.
Release, evidence, and credits

v2.0.1 · experimental. JSPARK3 names our current three-Spark daily driver, chosen through internal benchmarks and use. It does not claim to win every benchmark.

DeepSeek created the model. Tony and Kai’s serving work, bot-lab-21’s EXL3 experts, and vLLM underpin this recipe. Code, weights, and drafts retain their upstream terms. This is serving engineering, with no new fine-tune or model merge.

Versioned release · GitHub source · Hugging Face recipe · Release evidence

Generated release summary · Previous driver: GLM-5.3 Flash / Cadence