Repository navigation
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.