Skip to content

Releases: FujitsuPolycom/sparkring

SparkRing 2026.10.5

Choose a tag to compare

@FujitsuPolycom FujitsuPolycom released this 17 Oct 23:30
ad1853f

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-tp4 and
    qwen38-flash-next-csf-sparkcache-tp2 (research-only): Qwen3.8-Flash-Next on
    four and two Sparks with SparkCache.
  • glm53-flash-nvfp4-sparkcache-crc32-tp2 and
    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|none and --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 setup without --name keeps the cluster's name.
  • Installations on disjoint Sparks run at the same time.
  • sparkring status names 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 setup rewrote 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-tp4 on four Sparks and
    qwen38-flash-next-step5500-sparkcache-tp4 on 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-tp4 also
    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-report

A 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.4

That is the parent image on the same transports
(another image).

SparkRing 2026.10.4

Choose a tag to compare

@FujitsuPolycom FujitsuPolycom released this 14 Oct 10:17

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-tp4 on four Sparks: installed and served.
  • glm53-flash-tp2 with 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-report

A 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.2

That is the parent image on the same transports
(another image).

SparkRing 2026.10.3

Choose a tag to compare

@FujitsuPolycom FujitsuPolycom released this 13 Oct 01:22

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.
  • sparkring dashboard: a read-only status page on Node A, port 8090, and
    sparkring dashboard tui for 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 prepared selects.
  • --on places 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-tp2 installs Local Inference Lab's Qwen3.8-Flash-Next
    CSF checkpoint on this release's image (research-only);
    --checkpoint qad-step5500-ple1000 installs 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 FILE and 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-tp2 without --checkpoint installs 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 request Qwen3.8-Flash-Next-NVFP4-QAD-TP2 must change the name,
    or install with --checkpoint qad-step5500-ple1000 to 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 csf loaded, served and answered
    correctly; glm53-nvfp4-csf-tp8 started 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-tp2 and qwen38-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, beside glm53-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 --on install 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: false in
    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-report

Go 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-only

To 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-only

SparkRing 2026.10.2 (pre-release)

Pre-release

Choose a tag to compare

@FujitsuPolycom FujitsuPolycom released this 10 Oct 17:04

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 with sudo 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-spark installs
    NVFP4-Spark).
  • Running vLLM on libsircl (--transport libsircl) is research-only.
  • sparkring check also checks GPU clocks, and --report writes 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: false in sparkring 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-report

A 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

Choose a tag to compare

@FujitsuPolycom FujitsuPolycom released this 05 Oct 03:48
6d27dd1

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

Choose a tag to compare

@FujitsuPolycom FujitsuPolycom released this 01 Oct 23:26
e42504d

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 PROFILE

Pick 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 of dev/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.py prepares 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

Choose a tag to compare

@FujitsuPolycom FujitsuPolycom released this 28 Sep 04:08

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-tp2

Pick 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; --json prints one result document; --package-only; --plan shows an upgrade's plan without installing anything; host memory is cleared before each model starts.
  • sparkring storage reports 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.

SparkRing 2026.09.4-rc.4 — ARM64 Qwen TP2/TP4

Choose a tag to compare

SparkRing RC4 composes the September 23 eugr ARM64 foundation with audited LIL vLLM/B12X changes, SparkRing's transport/prefill integrations, and persistent-cache support.

docker pull ghcr.io/fujitsupolycom/sparkring:shared-2026.09.4-rc.4

Immutable image: ghcr.io/fujitsupolycom/sparkring@sha256:3d3411b66dd2a4f78ea062ec0a923308f302df14f0e0f9a6ae8961946ae603c8.

  • Qwen TP2 and TP4 passed bounded text, all-rank status and physical cache restoration after restart. TP4 retains HC token-row ownership and the tested collective routing.
  • Final TP4 cold C1 prefill medians: 4,515 tok/s at 8K; 4,653 at 32K, three runs each with zero cached prompt tokens. This does not establish decode or concurrent-load throughput.
  • New GET /v1/sparkring/status reports configured/effective settings and passive worker metadata through the inference API.
  • Source archives, reconstructable patches, the 409-entry PR disposition inventory, runtime-status wheel/source, build context and validation records are attached. The image's 5,792 owned runtime files verified after an anonymous Docker pull.

Use the deployment guide, TP2 profile, or TP4 profile.

This is an opt-in research prerelease. Stable defaults remain unchanged. Profiles retain MTP3/16 sequences/capture ceiling 64; MTP5, MXFP8 LM-head activation and w13 scaling remain separate experiments. Full-context pressure, sustained load, arbitrary media and full MiMo serving are not qualified. See the qualification record for exact scope and source identities.

SparkRing 2026.09.4-rc.3

Pre-release

Choose a tag to compare

SparkRing 2026.09.4-rc.3

Status: research-only prerelease. This opt-in ARM64/GB10 image is pullable by
Docker and has bounded Qwen3.8-Flash-Next NVFP4 QAD serving evidence. Stable
profile defaults remain unchanged.

docker pull ghcr.io/fujitsupolycom/sparkring:shared-2026.09.4-rc.3
docker pull ghcr.io/fujitsupolycom/sparkring@sha256:9450b6964aa87cdb44e3b190df9b6db12289a8850ee3513e5278241e70245a64

The image has two root filesystem layers. An anonymous pull into an empty Docker
27 daemon completed, and the pulled image verified all 235,690 files in its
installed-runtime receipt. The earlier shared-2026.09.4-rc.1 and temporary
shared-2026.09.4-rc.2 registry images exceed Docker's layer-depth limit and
must not be used.

Included changes

  • LIL vLLM af9e4dca109e0348323c0182e98a3aaf7282bfc3 and B12X
    0f3a8cbfd1c11d27f04e3ab37a802d522f4f1c68, with SparkRing integrations retained.
  • Separate scratch storage for concurrent GLM projection branches.
  • MTP output-buffer sizing for each captured batch size.
  • Shorter lifetimes for temporary startup and kernel-tuning allocations.
  • Agreement between ranks before distributed tuning-cache reuse.
  • Native NVFP4/BF16 kernels, route-packing updates and speculative-verification
    tuning inputs.
  • CUDA Python 13.3 packages matched to the CUDA 13.3 foundation.
  • QSA raw-ring bounds checks and prepared shared-pool validation programs.
  • SparkCache request-scope isolation; unverified or incompatible entries remain
    cache misses.
  • A prepared RoCEnante manifest bound to the installed Kraken B12X source tree.
  • A flattened runtime filesystem that avoids Docker's registry-import depth limit.

Profile evidence

Profile Evidence on this image filesystem
Qwen Flash-Next QAD TP2 + SparkCache Bounded qualified: startup, READY generation, 33K-token chunked prefill, solid-color image/video check, RoCEnante and healthy SparkCache on two ranks
Qwen Flash-Next QAD TP4 + SparkCache Bounded qualified: startup, READY generation, 33K-token chunked prefill, solid-color image/video check, HC prefill/decode, RoCEnante and healthy SparkCache on four ranks
Qwen Flash-Next QAD TP2 without SparkCache Expected compatible; not checked on this prerelease
Qwen Flash-Next QAD TP4 without SparkCache Expected compatible; not checked on this prerelease
GLM Flash SparkCache TP2 Pending; Spark and QAD checkpoints require separate checks
GLM Flash SparkCache TP4 Pending; Spark and QAD checkpoints require separate checks
DeepSeek SGLang Isolated composition verifier passed 4,829 files and the server CLI imported; GPU startup and authenticated generation pending

The Qwen checks used 262,144-token context, 16 sequences, batch 8192, 24 GiB
FP8 KV per rank, MTP3, three-image/one-video limits and fresh SparkCache/compiler
namespaces. TP2 exposed 2,877,721 KV tokens; TP4 exposed 3,131,214. The final
published image differs from the tested runtime only in OCI labels; its root
filesystem layers and runtime configuration are otherwise identical.

The media fixture contained three 64×64 red/green/blue images and one one-second
224×224 red video. Both deployments returned the four colors in order. This is
bounded input/interpretation evidence, not arbitrary media accuracy.

The chunked-prefill fixture contained 33,042 prompt tokens and required the
model to retrieve one deterministic code. Both deployments returned the exact
code. The configured scheduling batch is 8,192 tokens; this check establishes
correct chunked execution for one bounded prompt, not throughput or full-context
stability.

Both deployments also returned SCORE_OK with finite selected-token and
top-token log probabilities. This is a bounded numerical sanity check, not a
model-quality evaluation.

Full-context pressure, retained restart/physical restore, arbitrary media,
matched performance, GLM model serving and isolated SGLang generation remain
unqualified. Experimental multi-sequence MTP compaction is excluded. Issue
#278 and separate long-duration collective failures remain unresolved.

Publication

The publication record, qualification record
and clean-pull verification bind the immutable image and
the stated evidence. Source archives and patches are byte-identical to the
attachments published with shared-2026.09.4-rc.1; their hashes are retained in
source-bundle.json.

SparkRing 2026.09.3

Choose a tag to compare

@FujitsuPolycom FujitsuPolycom released this 19 Sep 10:42
054bb6a

Shared ARM64 serving image for NVIDIA GB10 clusters. CUDA 13.3; PyTorch 2.13.0.

docker pull ghcr.io/fujitsupolycom/sparkring@sha256:2375f876bc9ea065e85ae10cebad7a8db8a2ec0e6862b4441c269c5bf56365c6

Version tag: ghcr.io/fujitsupolycom/sparkring:shared-2026.09.3.

Changes

  • Release GLM kernel-preparation inputs after preparation to recover serving memory.
  • Support verified native-image GLM launchers, B12X loading and separate Spark/QAD checkpoint choices.
  • Retain B12X #394 and the applicable prefill, communication and SparkCache integrations.

Qualified selections

Bounded text, finite-score, synthetic-media and retained-restart checks passed for:

Model / checkpoint Parallelism SparkCache Quickstart
Qwen3.8-Flash-Next QAD TP2/DCP1 Off TP2 guide
Qwen3.8-Flash-Next QAD TP2/DCP1 On TP2 + SparkCache
Qwen3.8-Flash-Next QAD TP4/DCP1 Off TP4 guide
Qwen3.8-Flash-Next QAD TP4/DCP1 On TP4 + SparkCache
GLM-5.3-Flash NVFP4 QAD TP2/DCP1 On TP2 guide — select nvfp4-qad
GLM-5.3-Flash NVFP4 QAD TP4/DCP1 On TP4 guide — select nvfp4-qad
GLM-5.3-Flash NVFP4-Spark TP2/DCP1 On TP2 guide — select nvfp4-spark
GLM-5.3-Flash NVFP4-Spark TP4/DCP1 On TP4 guide — select nvfp4-spark

NVFP4-Spark is not QAD. Qwen's shared guides document both cache modes; select
the mode listed in the table.

Cache-enabled checks restored both fixtures on every physical rank. Full-context,
C16 pressure, arbitrary media accuracy and long-duration stability are not
qualified. No performance results are published. An earlier-image GLM TP4
collective timeout did not recur; its root cause remains unresolved.

Use the profile quickstarts
and exact release record.
GLM cache-disabled/DCP4 and DeepSeek profiles retain independent image pins.

Attached source archives and manifest identify the vLLM/B12X payload. Other
component terms and inherited-source limitations are in
the component inventory.
Model weights are separate. Preserve the preceding image, settings and cache
roots for rollback.