Repository navigation
Releases: FujitsuPolycom/sparkring
Release list
SparkRing 2026.10.5
SparkRing 2026.10.5
SparkRing's profiles run three models created by Local Inference Lab, Inc. and
licensed under the Local Inference Lab License, Version 1.0:
GLM-5.3-Flash-NVFP4-MXFP8-CSF-QAD
(glm53-flash-tp2, glm53-flash-tp4, glm53-flash-nvfp4-spark-tp2-dcp2,
glm53-flash-nvfp4-sparkcache-crc32-tp2, glm53-flash-nvfp4-sparkcache-crc32-tp4),
GLM-5.3-NVFP4-CSF
(glm53-nvfp4-csf-tp6) and
Qwen3.8-Flash-Next-NVFP4-MXFP8-CSF-QAD
(qwen38-flash-next-tp2, qwen38-flash-next-csf-sparkcache-tp2).
Packages built from tag 2026.10.5 install this release's image by default.
The
release record
has the evidence and what remains open.
What's in it
Installer image dev-20261016-sparkcache-4a17f1f5198e-status038
(ghcr.io/fujitsupolycom/sparkring@sha256:ac313f040fe3e04238ad8ff152cf7fb427a050f40e0848c2e326c5b6b8717dfd):
2026.10.4's image plus SparkCache, a persistent KV cache on each Spark's
disk, for three models. A conversation whose prefix was served before is
restored from the cache instead of recomputed.
deepseek-v41-flash-sparkcache-tp4(research-only): DeepSeek-V4.1-Flash on
four Sparks with SparkCache.qwen38-flash-next-step5500-sparkcache-tp4and
qwen38-flash-next-csf-sparkcache-tp2(research-only): Qwen3.8-Flash-Next on
four and two Sparks with SparkCache.glm53-flash-nvfp4-sparkcache-crc32-tp2and
glm53-flash-nvfp4-sparkcache-crc32-tp4(research-only): GLM-5.3-Flash CSF
on two and four Sparks with SparkCache.- Options for them:
--sparkcache-size(per Spark, default 32G),
--sparkcache-integrity fast|sha256|noneand--sparkcache-debug, kept
through restart and recovery. The cache survives a corrupted rank: damaged
entries are dropped and saved again.
Every 2026.10.4 profile is admitted on this image with its 2026.10.4 settings.
deepseek-v41-flash-tp4 offers DeepSeek's 2026-10-17 weights as
--checkpoint 1017 (deepseek-ai/DeepSeek-V4.1-Flash-1017, served as
DeepSeek-V4.1-Flash-1017-TP4); without the option it installs the original
checkpoint as before. Contributed by Sabatino Masala with a hardware record
on a four-Spark ring.
Installer and dashboard, in the package:
sparkring setupwithout--namekeeps the cluster's name.- Installations on disjoint Sparks run at the same time.
sparkring statusnames the serving profiles and their Sparks.- The dashboard shows the output rate per running request, has a light and
dark theme switch, and each model's Logs panel shows a follow command. - A deployment starts again after
sparkring setuprewrote the fabric
document: each Spark accepts a copy that records the cabling the
deployment was made on. - The dashboard keeps its page when a stopped record names a checkpoint the
installed package does not list. - The Install Builder offers the five SparkCache profiles as install-command
cards with the cache size and payload-check fields.
Tested
On a ring of eight DGX Sparks, with sparkring install:
deepseek-v41-flash-sparkcache-tp4on four Sparks and
qwen38-flash-next-step5500-sparkcache-tp4on the other four: installed at
the same time and served; a saved conversation was restored from the cache
after a restart.- On the same composition's recheck build: three installations on disjoint
Sparks at once, and cache recovery after one Spark's cache files were
corrupted, for DeepSeek (fast integrity) and Qwen (sha256). - Each of the five SparkCache profiles with the default payload check:
installed, a session saved and restored after a restart, and recovered
after one Spark's cache files were corrupted;deepseek-v41-flash-tp4also
installed and answered. - The restart-after-setup fix and the dashboard fix, on a deployment that
served DeepSeek-V4.1-Flash-1017 with the SparkCache TP4 profile.
The other profiles passed the installer's image checks but were not started
on this image. No speed was measured on it.
Try it
On Node A:
curl -fsSL https://raw.githubusercontent.com/FujitsuPolycom/sparkring/2026.10.5/install.sh | bash -s -- --ref 2026.10.5 --package-only
sudo sparkring install --profile PROFILE --plan
sudo sparkring install --profile PROFILE
sudo sparkring check --report ~/sparkring-reportA Spark that holds the 2026.10.4 image downloads only the layer this image
adds, 692 KiB.
Go back to 2026.10.4
sudo sparkring install --profile PROFILE --image 2026.10.4That is the parent image on the same transports
(another image).
SparkRing 2026.10.4
SparkRing 2026.10.4
SparkRing's profiles run three models created by Local Inference Lab, Inc. and
licensed under the Local Inference Lab License, Version 1.0:
GLM-5.3-Flash-NVFP4-MXFP8-CSF-QAD
(glm53-flash-tp2, glm53-flash-tp4, glm53-flash-nvfp4-spark-tp2-dcp2),
GLM-5.3-NVFP4-CSF
(glm53-nvfp4-csf-tp6) and
Qwen3.8-Flash-Next-NVFP4-MXFP8-CSF-QAD
(qwen38-flash-next-tp2).
Packages built from tag 2026.10.4 install this release's image by default.
The
release record
has the evidence and the open gates.
What's in it
Installer image dev-20261013-dcp2prefill-status038-sircl-tp6
(ghcr.io/fujitsupolycom/sparkring@sha256:e21ba936d4fd6bfeb6e7a651e54a03ac461bf4e1e6f5721c1a34845c80acd76f):
2026.10.2's image plus:
glm53-flash-nvfp4-spark-tp2-dcp2(research-only): GLM-5.3-Flash CSF on
two Sparks with decode-context parallelism 2. The pair splits the KV cache,
so it holds about twice the context and serves 16 requests at once.glm53-nvfp4-csf-tp6(research-only): GLM-5.3-NVFP4-CSF on six Sparks. It
has not run on hardware yet.- Dashboard 0.3.8: vLLM's serving statistics on the status page.
Every 2026.10.2 profile is admitted on this image with its 2026.10.2 settings.
Tested
On a ring of eight DGX Sparks, with sparkring install:
deepseek-v41-flash-tp4on four Sparks: installed and served.glm53-flash-tp2with the CSF checkpoint: installed and served.glm53-flash-nvfp4-spark-tp2-dcp2: installed and served.
The other profiles passed the installer's image checks but were not started
on this image. No speed was measured on it.
Try it
On Node A:
curl -fsSL https://raw.githubusercontent.com/FujitsuPolycom/sparkring/2026.10.4/install.sh | bash -s -- --ref 2026.10.4 --package-only
sudo sparkring install --profile PROFILE --plan
sudo sparkring install --profile PROFILE
sudo sparkring check --report ~/sparkring-reportA Spark that holds the 2026.10.2 image downloads only the 6 layers this
image adds, 2.6 MiB.
Go back to 2026.10.2
sudo sparkring install --profile PROFILE --image 2026.10.2That is the parent image on the same transports
(another image).
SparkRing 2026.10.3
SparkRing 2026.10.3
SparkRing's profiles run three models created by Local Inference Lab, Inc. and
licensed under the Local Inference Lab License, Version 1.0:
GLM-5.3-Flash-NVFP4-MXFP8-CSF-QAD
(glm53-flash-tp2, glm53-flash-tp4),
GLM-5.3-NVFP4-CSF
(glm53-nvfp4-csf-tp8) and
Qwen3.8-Flash-Next-NVFP4-MXFP8-CSF-QAD
(qwen38-flash-next-tp2).
The latest SparkRing release: main, install.sh from main and the
Install Builder install it. It uses
2026.10.2's image unchanged
(ghcr.io/fujitsupolycom/sparkring@sha256:4fffc4dc3074d5539f4e9d3a013ff9ef4e0be570a95b74d4646ee341da1f6911),
so a Spark that holds that image downloads nothing. The
release record
has the evidence and the open gates.
What's in it
- Faster serving defaults, measured research-only on a ring of eight
(serving defaults):- Qwen keeps its MTP draft's KV cache in BF16 beside the FP8 target cache
and quantizes its LM head to MXFP8. On two Sparks with the CSF checkpoint
it decoded 71.4 tok/s at 32K and one stream, temperature 1. - GLM-5.3-Flash with the CSF checkpoint runs its prefill with 4-bit
activations: 11 % faster 32K prefill on four Sparks. The setting,
B12X_W4A16_A4_PREFILL_MIN_TOKENS=1536, is an on/off switch in this
image, not a 1,536-token cutoff: short prompts also prefill with 4-bit
activations, and their output quality is not separately qualified.
Decode stays W4A16. - DeepSeek-V4.1-Flash on four Sparks shards its Engram projections: 5.5 %
more decode steps per second at one stream and 12 % at eight. The owner
approved it on two starts and correct outputs for eight prompts; no
log-probability comparison has run. - Every profile states
--async-scheduling. vLLM already turns it on for
these models, so it changes nothing.
- Qwen keeps its MTP draft's KV cache in BF16 beside the FP8 target cache
sparkring dashboard: a read-only status page on Node A, port 8090, and
sparkring dashboard tuifor a terminal. The install's Model ready card
ends with the dashboard's address while its service is enabled.- Plans, status, checks and the dashboard name the transport that runs:
SIRCL, NCCL or RoCEnante (b12x), which--transport preparedselects. --onplaces the serving image only on the Sparks it names. Models serving
on the other Sparks get no image write.- Automatic recovery restarts a four-Spark model on part of a ring of eight.
- The installer refuses to start a model whose GPU memory share plus
SparkCache's pinned host memory leaves a Spark less than 6 GiB for the
system, and says by how much. qwen38-flash-next-tp2installs Local Inference Lab's Qwen3.8-Flash-Next
CSF checkpoint on this release's image (research-only);
--checkpoint qad-step5500-ple1000installs step 5500.- The enhancement catalog lists Local Inference Lab's launch settings, the
Qwen CSF checkpoint, the SparkCache layer image and libsircl's copy-relay
broadcast. - Research-only profiles:
glm53-nvfp4-csf-tp8, GLM-5.3-NVFP4-CSF on eight
Sparks, which installs only with--image-lock FILEand is parked, and
SparkCache variants of the GLM-5.3-Flash profiles, which need an image this
release does not publish.
Before you upgrade
qwen38-flash-next-tp2without--checkpointinstalls the 95.2 GiB CSF
checkpoint, downloading it when the Sparks lack it, and serves it as
Qwen3.8-Flash-Next-NVFP4-MXFP8-CSF-QAD-TP2.
Clients that requestQwen3.8-Flash-Next-NVFP4-QAD-TP2must change the name,
or install with--checkpoint qad-step5500-ple1000to keep step 5500.- Installing any profile with this package creates a separate deployment and
restarts the model.
Profiles
--profile values: qwen38-flash-next-tp2, qwen38-flash-next-tp4,
glm53-flash-tp2, glm53-flash-tp4, glm53-nvfp4-tp8,
mimo-v26-flash-mopd-tp2, mimo-v26-flash-mopd-tp4, deepseek-v41-flash-tp4,
swift15-qwen38-flash-next-tp2 and swift15-qwen38-flash-next-tp4.
qwen38-flash-next-tp4 is the short name of qwen38-flash-next-qad-tp4, and
glm53-flash-tp2 and glm53-flash-tp4 of glm53-flash-nvfp4-spark-tp2 and
glm53-flash-nvfp4-spark-tp4.
Tested
- On the ring of eight with this image, one start each:
qwen38-flash-next-tp2 --checkpoint csfloaded, served and answered
correctly;glm53-nvfp4-csf-tp8started and served; the SparkCache variant
on four Sparks passed every step it ran of its test plan's first stage (one
step and the two-start comparison did not run). The
dashboard's page, terminal view, loopback address and reload worked. - The serving defaults: one start per setting on the ring of eight with GPU
clocks locked, two for DeepSeek's Engram sharding.deepseek-v41-flash-tp4
(four Sparks of the ring),glm53-flash-tp2andqwen38-flash-next-tp2
(--checkpoint csf, two Sparks each) installed from a package of this
release with no research options; their run receipts show the measured
settings, and each served one measurement at temperature 1. DeepSeek on
eight Sparks started and served once; Engram sharding showed no consistent
gain there, so that profile keeps it off. The same three also installed on
two new rings of four, set up as a new four-Spark user would: DeepSeek on
one ring measured the same as on the ring of eight.qwen38-flash-next-tp4
installed with both Qwen settings on both rings of four and on half of the
ring of eight, besideglm53-flash-tp4, and each served one measurement at
temperature 1. No start with these settings has run for Qwen on eight
Sparks, Swift-1.5 or MiMo. - On the ring of eight: an
--oninstall on two Sparks left the deployments
beside it serving, and automatic recovery restarted DeepSeek's four-Spark
group 6 min 47 s after one of its Sparks stopped. - CPU checks pass, apart from tests that also fail before these changes.
Known issues
- 2026.10.2's: installed libsircl deployments report
ok: falsein
sparkring check, and libsircl's broadcast is slow. - The SparkCache variant on two Sparks made both Sparks unreachable in its
first start, with larger capture slots than this release gives it. With
this release's smaller slots, a private record reports one start that
passed every step it ran of its test plan, including recovery after a
restart and after SIGKILL; no public record holds it, one step and the
two-start comparison did not run, and the variant stays research-only.
Try it
On Node A:
curl -fsSL https://raw.githubusercontent.com/FujitsuPolycom/sparkring/2026.10.3/install.sh | bash -s -- --ref 2026.10.3 --package-only
sudo sparkring install --profile PROFILE --plan
sudo sparkring install --profile PROFILE
sudo sparkring check --report ~/sparkring-reportGo back
To 2026.10.2, a pre-release on the same image:
curl -fsSL https://raw.githubusercontent.com/FujitsuPolycom/sparkring/2026.10.2/install.sh | bash -s -- --ref 2026.10.2 --package-onlyTo 2026.10.1, the latest release before this one, which installs image
dev-20261004-kraken-cuda1342-nccl2323-status034:
curl -fsSL https://raw.githubusercontent.com/FujitsuPolycom/sparkring/2026.10.1/install.sh | bash -s -- --ref 2026.10.1 --package-onlySparkRing 2026.10.2 (pre-release)
SparkRing 2026.10.2
SparkRing's glm53-flash-tp2 and glm53-flash-tp4 profiles run
GLM-5.3-Flash-NVFP4-MXFP8-CSF-QAD, created by Local Inference Lab, Inc., a
non-profit organization, available at
https://huggingface.co/local-inference-lab/GLM-5.3-Flash-NVFP4-MXFP8-CSF-QAD.
GLM-5.3-Flash-NVFP4-MXFP8-CSF-QAD is licensed under the Local Inference Lab
License, Version 1.0.
Pre-release for testing. Packages built from tag 2026.10.2 install this
release's image by default. main, install.sh from main and the
Install Builder stay on
2026.10.1 until this release merges. The
release record
has the full evidence and gates.
What SIRCL is
SIRCL is SparkRing's own collective-communication layer for DGX Sparks
cabled directly to each other over ConnectX-7, with no switch. It replaces
NCCL for vLLM's tensor-parallel and decode-context-parallel collectives.
- Each Spark talks RDMA straight to its cabled neighbours. Sparks that aren't
cabled to each other are reached through the ConnectX-7's hardware relay on
the Sparks in between, so a ring of four or eight behaves like one fabric. - It picks a schedule by message size: one-shot for small messages, two-shot
for medium, a ring for large. For GLM-5.3 it can also fuse the all-reduce
with the following RMSNorm. - Its settings come from a tuning table measured on real rings. You can
measure your own withsudo sparkring fabric tune. - On eight Sparks, measured through libsircl, a 4 KiB all-reduce takes about
18 µs, and a 256 MiB all-reduce runs at 24.3 GB/s bus bandwidth, faster
than NCCL 2.32.3 on the same cables
(record).
libsircl puts the same protocol behind NCCL's C API (it loads as
libnccl.so.2), so unmodified programs such as nccl-tests and PyTorch can use
it. It's SparkRing's own implementation under Apache-2.0, not NVIDIA NCCL.
What's in it
Installer image dev-20261010-kraken-csf-sircl032-libsircl060cd-plugins-status036
(ghcr.io/fujitsupolycom/sparkring@sha256:4fffc4dc3074d5539f4e9d3a013ff9ef4e0be570a95b74d4646ee341da1f6911): 2026.10.1's image plus SIRCL 0.3.2, libsircl 0.6.0 and the GLM-5.3 plugins.
- Collectives run on SIRCL with NCCL off on any fabric that
sparkring setup
recorded. - Setup handles pairs, lines and rings of up to eight Sparks. It can adopt an
existing ring (--adopt) or set up a recabled one (--re-form). - GLM-5.3 runs on eight Sparks (
glm53-nvfp4-tp8), and GLM-5.3-Flash installs
the CSF checkpoint on this image (--checkpoint nvfp4-sparkinstalls
NVFP4-Spark). - Running vLLM on libsircl (
--transport libsircl) is research-only. sparkring checkalso checks GPU clocks, and--reportwrites a test
report to attach to an issue.
Speed
Decode at 32K context, output tok/s:
| Model | Checkpoint | Sparks | --profile |
1 / 4 / 8 streams | Prefill, 32K prompt (tok/s) |
|---|---|---|---|---|---|
| GLM-5.3 | NVFP4 | 8 | glm53-nvfp4-tp8 |
47.9 / 99.8 / 143.7 | 1,343 |
| GLM-5.3-Flash | CSF | 4 | glm53-flash-tp4 |
64.2 / 126.6 / 218.7 | 3,127 |
| GLM-5.3-Flash | CSF | 2 | glm53-flash-tp2 |
39.5 / 87.1 / 123.2 | 2,138 |
| Qwen3.8-Flash-Next | QAD step 5500 | 4 | qwen38-flash-next-qad-tp4 |
62.1 / 149.4 / 234.0 | 4,666 |
| Qwen3.8-Flash-Next | QAD step 5500 | 2 | qwen38-flash-next-tp2 |
42.9 / 109.9 / 162.9 | 3,649 |
| DeepSeek-V4.1-Flash | FP8/MXFP4 | 4 | deepseek-v41-flash-tp4 |
63.8 / 127.5 / 182.8 | 4,328 |
On four Sparks, --checkpoint qad-step5500-mxfp8-attention decodes 6–8 % faster than the default checkpoint in the median of two starts on the same ring; it was not compared on two Sparks.
glm53-flash-tp2 and glm53-flash-tp4 are short names of the profile IDs glm53-flash-nvfp4-spark-tp2 and glm53-flash-nvfp4-spark-tp4; both names install the CSF checkpoint on this image.
Each row's record is under performance/records/.
Tested
On eight DGX Sparks, cabled as one ring of eight and then as two rings of
four: every profile above installed with sparkring install and passed
sparkring check and its known-answer requests. So did a model switch and
two pairs on one ring. libsircl passed its collective tests on both layouts.
CPU checks and the release-safety scan pass.
Known issues
- Installed libsircl deployments report
ok: falseinsparkring check,
because the installer doesn't judge libsircl receipts yet. - libsircl's broadcast is slow.
Try it
On Node A:
curl -fsSL https://raw.githubusercontent.com/FujitsuPolycom/sparkring/2026.10.2/install.sh | bash -s -- --ref 2026.10.2 --package-only
sudo sparkring setup --plan # only if `sudo sparkring fabric show` finds no fabric; then sudo sparkring setup
sudo sparkring install --profile PROFILE --image 2026.10.2 --plan
sudo sparkring install --profile PROFILE --image 2026.10.2
sudo sparkring check --report ~/sparkring-reportA Spark that holds the 2026.10.1 image downloads only the 6 layers this image adds, 8.3 MiB.
To tune SIRCL to your cables, run sudo sparkring fabric tune --execute
while no model serves, then install again. It takes up to half an hour per
group shape.
Post the report on the 2026.10.2 pull request or in an issue titled
[test] 2026.10.2 PROFILE.
Go back to 2026.10.1
- Keep this package and run a profile on 2026.10.1's image and transport:
sudo sparkring install --profile PROFILE --image 2026.10.1
(another image). - Keep this image without SIRCL: add
--transport prepared. - Reinstall
main's package, whose default image is 2026.10.1's:
curl -fsSL https://raw.githubusercontent.com/FujitsuPolycom/sparkring/main/install.sh | bash -s -- --package-only.
This hasn't been tested on a cluster that this package's setup re-formed.
SparkRing 2026.10.1
Every installer profile runs installer image dev-20261004-kraken-cuda1342-nccl2323-status034: SparkRing's vLLM and B12X merged with Local Inference Lab's integration/karmic-kraken-beta of 2026-10-04, on the same base, toolchain and transports as 2026.10.0.
| Component | Pin |
|---|---|
| Image | ghcr.io/fujitsupolycom/sparkring@sha256:71d410571407fef3ce2959c6d392f5a2c3f44b757b856e853a71f6e3295620ad |
| vLLM | d51b4181 (merges LIL ad3743e3) |
| B12X | a850d8eb (merges LIL dfe61efc) |
| Base | eugr/spark-vllm-b12x nightly-20261001, CUDA 13.4.2, NCCL 2.32.3 |
| Profile | Sparks | Decode 1 / 4 / 8 / 16 users at 16K (tok/s) | Prefill 64K |
|---|---|---|---|
qwen38-flash-next-tp2 |
2 | 46.5 / 119 / 165 / 230 | 3,590 |
qwen38-flash-next-qad-tp4 |
4 | 64.0 / 173 / 239 / 328 | 4,424 |
glm53-flash-nvfp4-spark-tp2 |
2 | 36.0 / 73 / 100 / 67 | 2,460 |
glm53-flash-nvfp4-spark-tp4 |
4 | 62.1 / 133 / 200 / 231 | 3,500 |
mimo-v26-flash-mopd-tp2 |
2 | 30.2 / 76 / 120 / 182 | 2,806 |
mimo-v26-flash-mopd-tp4 |
4 | 62.8 / 124 / 181 / 317 | 4,094 |
deepseek-v41-flash-tp4 |
4 | 57.0 / 135 / 201 / 275 | 4,396 |
swift15-qwen38-flash-next-tp2 |
2 | 43.5 / 110 / 157 / 204 | 3,567 |
swift15-qwen38-flash-next-tp4 |
4 | 64.7 / 161 / 232 / 340 | 4,404 |
Upgrade: rerun your install command; a Spark that holds the 2026.10.0 image downloads about 3.8 GiB. Roll back with --image 2026.10.0.
Generated with AI assistance
SparkRing 2026.10.0
One command sets up two or four directly cabled DGX Sparks and starts a model.
curl -fsSL https://raw.githubusercontent.com/FujitsuPolycom/sparkring/main/install.sh | bash -s -- --profile PROFILEPick a --profile from the table. The command asks before it installs the SparkRing package and before it changes any Spark (--yes answers both; --plan changes nothing). Rerunning it upgrades to the newest release on main.
Image
dev-20261001-kraken-cuda1342-nccl2323-status034:
ghcr.io/fujitsupolycom/sparkring@sha256:b01442df4e1496bea2f1339feb629eb61dc8175700c82b0e26abbcebd5b49567
(14.2 GiB download, 29.7 GiB unpacked). All nine installer profiles run it.
vLLM and B12X are Local Inference Lab's Karmic Kraken beta branches with SparkRing's changes, on eugr's spark-vllm-b12x nightly-20261001 (Torch 2.13, FlashInfer 0.7.1, built for GB10), with CUDA 13.4.2 and the patched NCCL 2.32.3.
Profiles
Decode is the aggregate output rate from llm-inference-bench 0.6.2 at temperature 1.0 with no added context; prefill is one cold 64K-token prompt divided by its time to first token. Single runs on one pair or one four-Spark ring.
| Model | Sparks | --profile |
Decode 1 / 8 / 16 users (tok/s) | Prefill 64K (tok/s) |
|---|---|---|---|---|
| Qwen3.8-Flash-Next NVFP4 QAD | 2 | qwen38-flash-next-tp2 |
53.6 / 201 / 296 | 3,660 |
| Qwen3.8-Flash-Next NVFP4 QAD | 4 | qwen38-flash-next-qad-tp4 |
80.9 / 281 / 417 | 4,564 |
| GLM-5.3-Flash NVFP4 Spark | 2 | glm53-flash-nvfp4-spark-tp2 |
37.7 / 107 / 97* | 2,497 |
| GLM-5.3-Flash NVFP4 Spark | 4 | glm53-flash-nvfp4-spark-tp4 |
65.7 / 211 / 290 | 3,666 |
| MiMo-V2.6-Flash-MOPD | 2 | mimo-v26-flash-mopd-tp2 |
39.8 / 130 / 195 | 2,604 |
| MiMo-V2.6-Flash-MOPD | 4 | mimo-v26-flash-mopd-tp4 |
54.5 / 204 / 332 | 4,084 |
| DeepSeek-V4.1-Flash | 4 | deepseek-v41-flash-tp4 |
68.8 / 201 / 277 | 4,406 |
| Swift-1.5-Qwen3.8-Flash-Next | 2 or 4 | swift15-qwen38-flash-next-tp2, -tp4 |
not measured on this image | — |
* The two-Spark GLM profile serves 8 requests at a time, so 16 users queue.
Every measured profile passed the functional checks (counting, arithmetic, code, automatic and forced tool calls, image input, thinking) and a 256-request correctness screen with no degenerate response.
Changes
- Karmic Kraken beta. vLLM and B12X follow Local Inference Lab's
integration/karmic-kraken-beta(2026-10-01) instead ofdev/karmic-kraken, with SparkRing's changes merged on top (vLLM, B12X). This brings B12X 1.5 and Local Inference Lab's MiMo-V2.6, GLM-5.3 KV-memory, image-request checkpoint and checkpoint-restore work. - Rebuildable from the repository.
runtime/images/external_context.pyprepares the image's software layer; the composition record pins every input. - First start compiles again. Kernel caches are kept per image, so each model's first start on this image compiles and tunes its kernels (about 10 minutes on a pair or ring).
- Open: MiMo's two-Spark 64K prefill measured 2,604 tok/s, below the 2,754–2,806 tok/s of earlier images.
- Timings are single runs; profiles are implemented, not serving-qualified.
The images of earlier releases stay published, and shared-2026.09.3 remains available for the manual setups in the profile catalog.
SparkRing 2026.09.5
One command sets up two or four directly cabled DGX Sparks and starts a model.
curl -fsSL https://raw.githubusercontent.com/FujitsuPolycom/sparkring/main/install.sh | bash -s -- --profile qwen38-flash-next-tp2Pick a --profile from the table. The command asks before it installs the SparkRing package and before it changes any Spark (--yes answers both; --plan changes nothing). Rerunning it upgrades to the newest release on main.
Image
dev-20260927-mimovision-cuda1342-nccl2323-status032:
ghcr.io/fujitsupolycom/sparkring@sha256:2c45153abf19af4f2b4bf10445cfc96c711c375a6fc5c04d3a2b55496f3acfe3
(15.2 GB download, 29.5 GiB unpacked). All nine installer profiles run it.
Profiles
Decode is the aggregate output rate from llm-inference-bench 0.6.2 at temperature 1.0 with no added context; prefill is one cold 64K-token prompt divided by its time to first token. Single runs on one pair or one four-Spark ring.
| Model | Sparks | --profile |
Decode 1 / 8 / 16 users (tok/s) | Prefill 64K (tok/s) |
|---|---|---|---|---|
| Qwen3.8-Flash-Next NVFP4 QAD | 2 | qwen38-flash-next-tp2 |
54.6 / 202 / 296 | 3,663 |
| Qwen3.8-Flash-Next NVFP4 QAD | 4 | qwen38-flash-next-qad-tp4 |
78.4 / 261 / 410 | 4,534 |
| Swift-1.5-Qwen3.8-Flash-Next | 2 | swift15-qwen38-flash-next-tp2 |
48.5 / 191 / 262 | 3,597 |
| Swift-1.5-Qwen3.8-Flash-Next | 4 | swift15-qwen38-flash-next-tp4 |
research-only | — |
| GLM-5.3-Flash NVFP4 Spark | 2 | glm53-flash-nvfp4-spark-tp2 |
35.7 / 100 / — | 2,347 |
| GLM-5.3-Flash NVFP4 Spark | 4 | glm53-flash-nvfp4-spark-tp4 |
68.0 / 202 / 291 | 3,647 |
| MiMo-V2.6-Flash-RL | 2 | mimo-v26-flash-rl-tp2 |
36.1 / 138 / 212 | 2,509 |
| MiMo-V2.6-Flash-RL | 4 | mimo-v26-flash-rl-tp4 |
52.9 / 188 / 342 | 4,076 |
| DeepSeek-V4.1-Flash | 4 | deepseek-v41-flash-tp4 |
63.8 / 196 / 280 | 4,284 |
Every implemented profile passed the functional checks (counting, arithmetic, code, automatic and forced tool calls, image input, thinking) and a 256-request correctness screen with no degenerate response.
Changes
- Repeated-token collapse fixed. With MTP and async scheduling, Qwen could switch mid-answer to one token (
Register) repeated to the end (#294). The image stages every host-to-device copy through fresh pinned memory; the targeted upstream change is local-inference-lab/vllm#923. - Faster restarts. B12X reuses the kernel tuning the ranks have already agreed on: a DeepSeek four-Spark restart is ready in about 200-300 s instead of 650-740 s.
- MiMo image input works. The vision encoder applies its attention sinks as the model was trained; before, MiMo misread image colors.
- DeepSeek-V4.1-Flash on four Sparks. DSpark speculative decoding with probabilistic drafting, block rejection and adaptive verification.
- Swift 1.5 profiles for two Sparks (implemented) and four Sparks (research-only).
- MiMo on four Sparks uses all four ring NIC functions: prefill 11-17% faster.
- Installer. Approval before the package install and before changing any Spark;
--jsonprints one result document;--package-only;--planshows an upgrade's plan without installing anything; host memory is cleared before each model starts. sparkring storagereports disk use on every Spark and releases caches and workspaces no deployment uses.- Runtime-status dashboard 0.3.2 shows the served model name.
Known limits
- Every SparkRing update restarts the running model, even when its settings are unchanged.
- The first start on this image compiles kernels: about 200-400 s to ready when a checkpoint is already on the Sparks.
- Timings are single runs; profiles are implemented, not serving-qualified.
The native image shared-2026.09.3 remains available for the manual setups in the profile catalog.