Vol. I · No. 1Edition: MorningEst. 2026AboutSearchRSS

The Sand Paper

Finding grains of sand with grains of sand.
A Journal of Intelligence Transfer
Feature · Local AI

Sparks Update: Eight-Node Clusters, MiniMax-M3.1-Flash on Day One and a 64 GB Spark

NVIDIA made eight-Spark clusters official, four Sparks ran MiniMax’s new 428B model within hours, and two-Spark builds wait on their first numbers.

Yesterday's State of the Sparks covered two and three DGX Sparks. Overnight the ceiling moved. NVIDIA now supports eight-node clusters, MiniMax published a 428B model that four Sparks ran on day one, and a cheaper 64 GB Spark goes on sale today. Here is what changed, with every number tied to its build.

At a glance

  • Eight Sparks are official. NVIDIA supports eight-node clusters with 1 TB of pooled memory. It measured the full GLM-5.3 at 31 tok/s for one user on eight boxes.
  • MiniMax-M3.1-Flash runs on four Sparks. A day-one recipe on MiniMax's own weights measures 46.5 tok/s on prose at one stream, and 73 of 75 on a quality check.
  • Two Sparks: files exist, results do not. A 3.06 bpw EXL3 pack and a 203.5 GB GGUF fit two Sparks by size. Neither has a published speed or quality number on Sparks yet.
  • DeepSeek-1017 gets an experimental quant. Mia's EAQ v1.1 keeps the sparse-attention indexer at source precision. She says EAQ v1 stays the one to use.
  • A 64 GB Spark at $4,999 ships from six partners today. Two of them pool 128 GB.
  • Four Sparks over llama.cpp RPC is slow. @sudoingX ran the 560B Ling 3.1 Flash at 7.5 tok/s, and it still passed its own tests after 12 hours.

NVIDIA makes eight Sparks official

NVIDIA announced official eight-node DGX Spark clusters at GTC Berlin on October 22. One Spark has 128 GB, four reach 512 GB and eight reach 1 TB. Setup is manual for now. NVIDIA Sync's Cluster Assistant gains eight-node support by the end of the year, the company says.

The headline test is the full 753B GLM-5.3, which needs more than four boxes. NVIDIA ran its own NVFP4 checkpoint, about 470 GB, with MTP3 speculative decoding:

Users at oncePrefill, total tok/sDecode, total tok/sDecode per user, tok/s
11,6003131
41,6005121
81,6006718
Swipe the table sideways to see every column.

NVIDIA also ran GLM-5.3-Flash across eight nodes at roughly 80 tok/s in generation. It did not publish the quant or prompt for that figure.

To isolate the network, NVIDIA timed a dense Qwen3.8-27B in NVFP4 with no speculative decoding, at 8,192 tokens in and 256 out. Decode climbs from 11.86 tok/s on one Spark to 52.58 on eight.

How decode scales from one to eight SparksNVIDIA’s published decode rates. Qwen3.8-27B in NVFP4, one user, 8K in and 256 out: 11.86 tok/s on one Spark, 21.71 on two, 32.82 on four in a ring, 36.34 on four with a switch and RoCEnante, 40.11 on eight in a ring, 52.58 on eight with a switch and RoCEnante. Full GLM-5.3 in NVFP4, about 470 GB, on eight Sparks: 31 tok/s for one user and 18 per user at eight users.ScalingOne Spark to eight, tok/sRing or directSwitch + RoCEnanteQWEN3.8-27B NVFP4 · DECODE, ONE USER1 Spark11.862 Sparks, direct cable21.714 Sparks, ring32.824 Sparks, switch + RoCEnante36.348 Sparks, ring40.118 Sparks, switch + RoCEnante52.58FULL GLM-5.3 NVFP4 · 8 SPARKS1 user (MTP3)31Per user at 8 users18Dense model, no speculative decoding. A big MoEwith a draft head runs faster; see the MiniMax rows.Source: NVIDIA Technical Blog, Oct 22, 2026.

Two wiring choices matter. A four-box ring with no switch is the cheapest four-node setup, and NVIDIA calls its throughput impressive for this workload. Eight boxes, split clusters and its new RoCEnante collective need a switch. RoCEnante is a one-shot all-reduce merged into FlashInfer. It falls back to NCCL if its startup test fails, and NCCL stays the default as clusters and concurrency grow.

The 64 GB Spark

DGX Spark 64GB goes on sale Friday, October 23, starting at $4,999, from Acer, ASUS, Dell, Gigabyte, HP and MSI. It keeps the GB10 chip, ConnectX-7 networking and DGX OS. NVIDIA says one runs models up to 100 billion parameters, and two cable together for 128 GB. Tom's Hardware puts a 128 GB GB10 system at roughly $7,000 to $9,000 right now, when you can find one.

For the models in this feature, a 64 GB box changes little. Every build below needs 145 GiB or more.

MiniMax-M3.1-Flash, checked

MiniMax published the weights on Thursday evening, Pacific time. The model card lists about 428B total parameters and 23B active per token, a context of up to 1M tokens, and text, image and video inputs. Sparse attention runs in every layer. The experts and attention were trained with quantization, and the release includes a DSpark draft head for speculative decoding. The checkpoint is 252.4 GB on disk, per the four-Spark recipe below.

MiniMax's own table includes DeepSeek's newest Flash, and DeepSeek wins most coding rows:

BenchmarkMiniMax-M3.1-FlashDeepSeek-V4.1-Flash-1017
DeepSWE v1.173.777.0
Terminal Bench 4.038.142.3
NL2Repo-Bench61.268.2
Automation-Bench v1.0.662.860.5
HLE (without tools)43.442.6
BabyVision (with tools)91.092.5

These are vendor numbers for the official weights. The card says third-party quantizations may differ. The license is MiniMax's own: @superalesha reads it as free for commercial use with a "Built with MiniMax" credit, with permission needed above $20M in yearly revenue.

What fits

Where MiniMax-M3.1-Flash fitsMiniMax-M3.1-Flash builds in GiB against the usable memory of two Sparks (about 243 GiB), three (about 365) and four (about 487). Official NVFP4 and MXFP8 checkpoint, 252.4 GB on disk, about 235 GiB by our conversion. AtomicChat GGUF Q4_K_M 240.3 GiB, Q3_K_M 189.5 GiB, Q2_K 145.2 GiB of model memory. Mia’s EXL3 3.06 bpw repo about 159 GiB. Context needs extra room on top.Memory fitMiniMax-M3.1-Flash on Sparks2 SPARKS24333654487MINIMAX-M3.1-FLASH · 428BOfficial NVFP4 + MXFP8 (252.4 GB)235.1GGUF Q4_K_M, AtomicChat240.3GGUF Q3_K_M, AtomicChat189.5EXL3 3.06 bpw repo, Mia159GGUF Q2_K, AtomicChat145.2Add context on top: about 0.14 MB a token inllama.cpp, per AtomicChat (4.5 GB at 32K).Four Sparks, official weights: ~63 GB a box, 262Kcontext, per @majewskizby’s TP4 recipe.GiB. Gold: our GB-to-GiB conversion, an estimate.
BuildSizeFitsSpeed on SparksQuality check
Official NVFP4 experts + MXFP8, four Sparks, TP4252.4 GB, about 63 GB a boxFour Sparks, 262K context46.5 tok/s prose, one streamqeval 73 of 75
AtomicChat GGUF Q4_K_M258.0 GB, 240.3 GiB in memory384 GB machines and upNot publishedPending
AtomicChat GGUF Q3_K_M203.5 GB, 189.5 GiB256 GB machinesNot publishedPending
Mia EXL3 EAQ v1, 3.06 bpwAbout 171 GB repo, 167 GB text modelTwo Sparks, by sizeNot testedNot tested
AtomicChat GGUF Q2_K155.9 GB, 145.2 GiB192 GB machinesNot publishedPending
Swipe the table sideways to see every column.

AtomicChat says its release-day GGUFs are plain quants without an importance matrix. Its smaller Atomic Dynamic files and quality numbers come later. In llama.cpp the attention cache takes about 0.14 MB per token, or 4.5 GB at 32K. Sparse attention runs only with flash attention on (-fa on) and without --kv-unified; otherwise llama.cpp falls back to dense attention.

Mia's 3.06 bpw pack stores every routed expert at 3 bits. It keeps the sparse-attention indexer at FP16 and the router at FP32. Her card is plain about the gaps: no quality number, no long-context test, no speculative-decoding test, and no engine yet verified to load it.

The four-Spark build

@majewskizby published the first measured bring-up, knapcio/MiniMax-M3.1-Flash-4x-DGX-Spark-TP4, on four Sparks through a MikroTik CRS812 switch. His first post gave 39.7 tok/s prose and 62.2 structured at one stream. By Friday morning the repo's default had moved to SGLang with RadixArk's DFlash2 draft and RoCEnante collectives:

Test, default profile (SGLang)Result
speedbench, 73 prompts, one stream45.5 tok/s geometric mean (prose 38.7, long context 56.8)
sparkDash prose, one stream46.5 tok/s
sparkDash structured, one stream85.0 tok/s
sparkDash prose, 16 streams231.6 tok/s total, 15.3 per stream
Cold prefill, 4K to 128K1,421 to 1,490 tok/s
qeval, 75 tasks73 of 75
Needle retrievalPass at 116K and 218K tokens

The vLLM profile with MiniMax's bundled DSpark draft is the alternative. It prefilled a 58K-token prompt at 2,171 tok/s against 1,442 for SGLang, and boots in about 5 to 6 minutes instead of about 12. Every lever in the repo is lossless, it says: no requantization and no training.

GB10 is sm_121, so several of MiniMax's defaults do not run. The NVFP4 KV cache and MiniMax's sparse-attention kernels are SM100-only. The recipe uses FP8 KV cache, Triton sparse attention and Marlin kernels for the experts.

For scale, @Dataphil3 logged 212.6 tok/s at batch 1 on four RTX PRO 6000 Blackwell Max-Q cards with 96 GB each, on vLLM TP4, verified on LocalMaxxing.

DeepSeek-1017: a sharper indexer, and a claim

Mia published DeepSeek-V4.1-Flash-1017 EXL3 EAQ v1.1, marked experimental. It has the same 2.9 bpw body as v1. The change is the sparse-attention indexer path, which v1.1 stores in BF16 at the source values.

CheckEAQ v1EAQ v1.1
Same token picks as the original, fed the original's inputs, past 16K94.95%403,560 of 403,560
Picks in a full quantized run (recall@512)About 0.73About 0.73
Size210.58 GB of tensorsAbout 0.15 GB more

The second row is the honest part. In a full quantized run, the inputs reaching the indexer have already shifted, so a BF16 indexer alone cannot close that gap, Mia writes. Speed and generation quality are untested, and she says she has no spare compute to test it yet. The Engram tables are still separate: you need the base model's shards 47 and 48, about 95 GiB each.

Mia also says DeepSeek-1017 on TensorFold for four Sparks, on the official weights, is "in the works."

Four Sparks, one prompt, twelve hours

@sudoingX borrowed four Sparks from @niklaslenz_ai to run Ling 3.1 Flash, a 560B MoE that does not fit on his two. There was no official FP4 build for vLLM yet, so he used AtomicChat's AD-Q4_K_M GGUF over llama.cpp RPC, with Hermes Agent driving.

Ling 3.1 Flash, Q4 GGUF, four Sparks, llama.cpp RPCResult
Wall time on one prompt12 hours 26 minutes
Requests and output86 requests, 325K tokens
Decode7.5 tok/s ("painful," he writes)
Peak context143K of 262K
Tests12 of 12 pass
Code2,166 lines across 12 modules

Four of its turns took about 9 hours and 77% of all tokens while writing very little. Next he runs the same prompt against the full model on the API, to see whether those long turns come from the model or his setup.

Engines

  • TensorRT-LLM 1.4.0rc1 (October 21) adds DeepSeek-V4.1-Flash support and NVFP4 GLM-5.3-Flash checkpoints, and keeps DeepSeek-V4 tensor-parallel decode all-reduces off NCCL. Its notes name no Spark recipe for either model.
  • vLLM and SGLang shipped day-one MiniMax images. The four-Spark recipe runs the arm64 builds vllm/vllm-openai:minimax-m31-flash and lmsysorg/sglang:dev-minimax-m31-flash.
  • llama.cpp has had MiniMax-M3 support since July. AtomicChat checked its files with build f5027fb21307 on October 23.
  • TensorFold: @ashxhart posted “MiniMax M3.1 Flash with zero day support on TensorFold.” No Spark numbers yet.

The same level elsewhere

  • AMD, DeepSeek-1017. @jgattermayer runs the Maya-S GGUF on a Strix Halo box with two RX 7900 XTX cards, streaming experts from an NVMe drive over USB4. He measured 37.1 tok/s after a cold 130K prompt (42.8 warm), and 31 to 35 tok/s across a 256K context ladder.
  • Small models get faster without changing. In an open challenge on Macs and DGX Spark, Bonsai 2 9B decode went from 144.8 to 959.6 tok/s on Apple Silicon in a week. Every run had to produce exactly the reference engine's tokens, @pratikg explains. The record changed hands 158 times.
  • One Spark. @MiaAI_lab's pick for a single 128 GB Spark is still Qwen3.8-Flash-Next. "That's 90% of what most users need," she writes.

Sources

More from the Local AI deskAll features