Lucebox (AMD Radeon AI PRO R9700 + Strix Halo) Beats NVIDIA DGX Spark by 3.63x on DeepSeek V4 Flash Decode Speed

· lucebox ·

10 min read Original article ↗

51.1 tok/s (Lucebox) vs 14.09 tok/s (single DGX Spark)

An AMD-Powered Lucebox under a starry sky, with the Lucebox and AMD marks above it

DeepSeek V4 Flash decode comparison

Measured decode throughput for one request at a time on the full 284B model
SystemTested configurationDecode throughput
LuceboxROCmFPX compressed model, DSpark draft model, four experts per token51.1 tok/s median
1× NVIDIA DGX SparkQ2 compressed model, average of tests at four context lengths14.09 tok/s
Measured ratio51.1 ÷ 14.093.63×

Using the unrounded DGX Spark mean of 14.0875 tok/s gives the 3.63× headline ratio. Each platform runs a configuration tuned for its own hardware, so this is a whole-system comparison rather than a GPU-only A/B test. Decode throughput is the rate at which each system generates new tokens.

DeepSeek V4 Flash has 284 billion parameters. The 102.3 GB ROCmFPX build is too large for the R9700’s 32 GB of memory, so Lucebox gives the two AMD GPUs different jobs. The R9700 handles the dense path and frequently selected experts; Strix Halo holds the remaining experts in its 128 GB memory and runs them in parallel.

The headline Lucebox result is the median of three measured requests after two warmups, using an approximately 2k-token prompt and 128 generated tokens. An 11.3 GB DSpark draft model proposes several tokens at once; the full DeepSeek V4 Flash model verifies them before they are accepted. We also ran a separate 53-token prompt to measure the upper end of the implementation.

For the single-device baseline and the ROCmFPX compression details, see our companion report on DeepSeek V4 Flash on AMD Ryzen AI MAX+ 395.

Complete system price

AMD-Powered Lucebox is priced at $6,499 as a complete local inference system, including the custom chassis, 2 TB of storage, power delivery, hardware integration, validation, and warranty. NVIDIA lists one DGX Spark at $4,699, or $9,398 for two.

Complete systemCurrent U.S. priceWhat is included
1× DGX Spark$4,699Complete system with 4 TB storage
AMD-Powered Lucebox$6,499Custom chassis, 2 TB storage, power delivery, integration, validation, and warranty
2× DGX Spark$9,398Two complete systems

At those list prices, Lucebox costs 38% more than one DGX Spark and delivers about 2.6× the decode throughput per dollar in the headline configurations. It costs 31% less than two DGX Sparks.

Prices are the U.S. list prices available at publication, before tax and shipping. Sources: Lucebox system configuration and NVIDIA Marketplace. Configurations and prices can change.

One DGX Spark, measured directly

We ran a Q2 compressed version of the full DeepSeek V4 Flash model on one DGX Spark. We then measured Lucebox at the same 2k, 4k, 8k, and 16k context lengths.

Matched single-request decode throughput on the full 284B model
ContextLucebox1× DGX SparkSpeedup
2k51.0 tok/s14.18 tok/s3.60×
4k49.6 tok/s14.24 tok/s3.48×
8k47.5 tok/s14.04 tok/s3.38×
16k42.9 tok/s13.89 tok/s3.09×
Mean47.75 tok/s14.09 tok/s3.39×

The DGX Spark mean is 14.0875 tok/s, which we report as 14.09 tok/s. Lucebox averages 47.75 tok/s across the same four context lengths, a 3.39× speedup. The 3.63× headline uses the separate 51.1 tok/s Lucebox serving result shown above.

DGX Spark ran the Q2 model; Lucebox ran the ROCmFPX model with four experts per token and DSpark speculative decoding. Each system uses the configuration designed for its hardware.

For wider context, LocalMaxxing includes two-DGX-Spark results both with the standard target and with a DSpark-specific package. We show both below rather than selecting the more favorable reference.

DeepSeek V4 Flash decode, one request at a time · tok/s

1× DGX Spark
average of four tests

14.09

2× DGX Spark
without a helper model

45.70

AMD-Powered Lucebox
serving median

51.10

AMD-Powered Lucebox
short prompt, fastest run

55.00

2× DGX Spark
with DSpark

65.09

The Lucebox values are a three-request serving median and the fastest of three separate runs with a 53-token prompt. The single DGX Spark figure is our mean across 2k, 4k, 8k, and 16k context tests. Public sources: two DGX Sparks without a draft model and two DGX Sparks with DSpark. Prompts, context lengths, software, compression, and routing settings differ, so the public runs provide context rather than a controlled A/B comparison.

The public two-Spark results bracket Lucebox: the standard target is effectively tied with our longer decode run, while the DSpark-specific configuration is faster. They are useful reference points, but not substitutes for a matched benchmark.

How the work is split

Tensor parallelism usually divides the same calculation evenly between matching GPUs. That does not work well here because the R9700 and Strix Halo have different speeds and memory. An even split makes the R9700 wait. Splitting the model into whole layers is also slow because every token must pass through one device and then the other.

DeepSeek V4 Flash is a mixture of experts model. Each layer contains 256 expert blocks, but only a small number are selected for each token. These tests use four. Lucebox stores each expert on one GPU. At every layer, both GPUs run the selected experts they hold, then the R9700 combines their results.

One machine · two jobs

Faster GPU

Radeon AI PRO R9700

32 GB local GDDR6

  • Core layers used for every token
  • Most frequently selected experts
  • DSpark helper model
  • Working cache and final token selection

Larger memory

Strix Halo Radeon 8060S

128 GB shared LPDDR5X

  • Remaining expert blocks
  • Runs only experts selected for the current token
  • Runs at the same time as the R9700
  • No duplicate copy of the working cache

At each layer: find the selected experts → run them on the GPU that stores them → combine the results on the R9700.

The 32 GB and 128 GB memories are separate, not one shared 160 GB pool. Lucebox decides where every part of the model and its working state is stored.

Expert ownership follows the hardware: frequently selected experts stay beside the dense path on the R9700, while the long tail lives in Strix Halo’s larger memory. One process submits both branches, copies the Strix Halo result directly to the R9700, and combines the outputs there. The R9700 remains the sole owner of the target cache and sampler.

How the short test reached 55 tok/s

The largest gain came from verifying four DSpark positions in one GPU operation. A generic safety rule had split some verification steps into groups of three and one, even though the DeepSeek V4 Flash path could handle all four together. Removing that split kept the verifier in one graph; transfer batching and expert grouping supplied the remaining gains.

Effect of each change in the short test · tok/s

Full model only

30.1 to 30.4

DSpark
check 3, then 1

37.50

DSpark
check all 4 together

50.80

Combine
GPU transfers

52.60

Group Strix work
by expert

54.90

The 37.50 and 50.80 tok/s tests accepted the same draft tokens. Checking all four positions together removed an unnecessary split. Combining GPU transfers reduced waiting between the GPUs. Grouping Strix Halo’s work by expert meant reading the same weights fewer times. All draft tokens were accepted in the final short run.

The fused four-position verifier made the decisive jump. Batching the peer transfers reduced synchronization, and grouping Strix Halo routes by expert avoided rereading the same compressed weights. The final path also joins results and selects the next token on the GPU while reusing state already computed by DSpark.

Test Setup: DeepSeek V4 Flash 284B, Asymmetric Expert Parallelism

Asymmetric expert parallelism means the two GPUs are assigned different work rather than equal slices of every operation.

Hardware

R9700 + Strix Halo
one machine

Software

ROCm 7.2.4
one process, two GPUs

DSpark setting

check 4 positions at once
4 experts per token

Request mode

one request at a time
temperature 0 for repeatability

Serving test

~2k prompt tokens
128 output tokens

Serving median

51.1 tok/s generation
415.52 tok/s prompt processing

Matched context sweep

2k · 4k · 8k · 16k
128 output tokens

Sweep protocol

2 warmups + 3 measured
prompt caches disabled

Short prompt test

54.7 · 54.9 · 55.0 tok/s

Time per DSpark step

helper: 6.0 to 6.1 ms
full model: 64.8 to 65.1 ms

Longer decode test

~2k prompt tokens
510 output tokens

Longer test median

45.5 tok/s median
41.8 to 45.7 range

The server reported exactly 2k, 4k, 8k, and 16k prompt tokens for the matched sweep. All measured requests generated the same 128-token response byte for byte, and the draft acceptance rate was 0.97. The 16k point was measured in a fresh process with the same binary and settings.

The short-prompt result is a ceiling test: 53 prompt tokens, 128 generated tokens, and every DSpark proposal accepted. For a less favorable shape, five measured requests used an approximately 2k-token prompt and generated 510 tokens; decode ranged from 41.8 to 45.7 tok/s, with a 45.5 tok/s median. All five produced the same response byte for byte.

The target was DeepSeek-V4-Flash-ROCMFP2-STRIX.gguf; the draft was DeepSeek-V4-Flash-DSpark-draft-Q4RMFP4-denseF16.gguf. The build passed all 20 automated tests, including end-to-end coverage for regular and streamed DSpark requests.

Benchmark scope. Throughput was measured with four routed experts per token. Repeated runs were deterministic; comparison with the six-expert reference configuration was outside the scope of this performance benchmark.

Prompt processing: 415.52 tok/s with DSpark loaded

Prompt processing, or prefill, is the work performed before the first generated token. With the 11.3 GB DSpark draft resident on the R9700, three measured requests after two warmups reached a 415.52 tok/s median, with a narrow 415.46–415.95 tok/s range.

The progression below separates hardware placement from implementation changes. The initial two-GPU path joined both outputs on the CPU. The faster path leaves the R9700 output in device memory, copies only the Strix Halo partial, and completes the join on the R9700.

Prompt processing for the same ~2k-token prompt · tok/s

Strix Halo only
baseline

~298

Both GPUs
initial R9700 join, DSpark loaded

368.76

Both GPUs
R9700 join, target only

377.82

Both GPUs
optimized R9700 join, DSpark loaded

415.52

Every row uses the same approximately 2k-token prompt, four experts per token, and no prompt cache. The final value is the median of three measured requests with DSpark loaded. Earlier implementation runs generated more output tokens after prefill, but the prompt-processing input was unchanged.

Moving the join off the CPU improved the target-only path by 6.8%. With DSpark loaded, the first R9700-join implementation was 23.7% faster than the Strix-only baseline; transfer and kernel work produced the final result shown above.

This faster prompt processing path is optional. It changes the order of some calculations. This test also uses four experts per token instead of the model’s default six. Prompt processing and token generation are separate measurements, so their rates are not added together.

Why heterogeneous hardware works here

The architecture is the point. Strix Halo is an active expert engine, not overflow memory, while the R9700 keeps the latency-sensitive path. Sparse routing makes the uneven split practical: each processor contributes the bandwidth, capacity, and compute it has.

Related

Use both sides of the machine

Lucebox is open source. The implementation, models, and benchmark details are public.