upstream-watch-2026-10-17.md 9.3 KB

Upstream watch — 2026-10-17 (night-shift research pass)

Pass across vLLM releases, the NVIDIA forums, and HF model cards, feeding the night-shift agenda (history/night-shifts/2026-10-17-night-plan.md).

vLLM release status — base stays v0.31.0

  • Latest release is still v0.31.0 (2026-10-05). v0.32.0 is only at rc2 (rc0/rc1/rc2 tags, no stable). No re-pin of the kindling base yet.
  • Keep watching for v0.32.0 stable (would trigger the base re-pin + overlay rebase + flashinfer bump, bench-gated vs the 95/100 kindling 2x anchor).

New NVIDIA-official FP4 checkpoints (all need the b12x container)

NVIDIA shipped a family of "…-FP4-Local" QAD checkpoints quantized with nvidia-modelopt v0.47.0 via quantization-aware distillation (QAD). Their NVFP4 scale factors use a new lossless-compression format that upstream vLLM does NOT yet support — you MUST run the eugr/spark-vllm-b12x container (b12x backend + --load-format b12x), not stock vLLM. Digest-pinned eugr/spark-vllm-b12x@sha256:03a95654…bb3595 (arm64, built 2026-10-15).

  • nvidia/GLM-5.3-Flash-FP4-Local — official NVFP4 GLM-5.3-Flash. 2x DGX Spark, 500K ctx, MTP n=5 (moe_backend:humming, attention_backend:B12X), FP8 KV (~2M tokens), --attention-backend B12X --block-size 256 --moe/--linear/--load-format b12x, --reasoning-parser glm45 --tool-call-parser glm47, GMU 0.87. Card quality 91.3% / 92.4%. This is the official NVFP4 counterpart to our kindling 2x lane (our own r35 build) — a direct A/B vs the 95/100 anchor. Recipe: glm53-flash-fp4-local-2x (recipes d5276db). NOTE: 2x → needs 2 free Sparks; 2nodes-dac is busy with the live kindling serve.
  • nvidia/Qwen3.8-Flash-Next-FP4-Local — 1x Spark, b12x, MTP n=4, FP8 KV, 262K, GMU 0.8, VLLM_ENGINE_READY_TIMEOUT_S=3600 (b12x autotune > 600 s). Forum hardmode 89/100, ~49 t/s decode. Recipe qwen38-flash-next-fp4-local.
  • nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-NVFP4 (75 GB, 1x Spark, VL, 1M ctx, LiLiCorr dflash-7 drafter, mamba flags, qwen3_coder/nemotron_v3) and Nemotron-3.5-Bolt-74B-A9B-24GB (24 GB, QAD 2-bit experts, 1x Spark, ultra_v3 parser plugin). Recipes nemotron-35-super-vl-120b-nvfp4, nemotron-35-bolt-74b-24gb. Forum: Super-VL 90/100, Bolt 88/100.

GB10 hardware gotchas (both directly bit us this session)

  • Stuck GPU clock (forum 386060, confirms 376039/376239/366944/…): GB10 SM clock can stick at ~660 MHz (max 3003, app clock 2418) at ~16 W with throttle reasons 0x0; nvidia-smi -lgc is accepted but ignored and a reboot does not clear it. Symptom = anomalously low throughput that looks like "hot state" but is a hard clock cap. Remedy (community, not NVIDIA- documented): power off, unplug AC + USB, hold the power button ~10 s, wait a few minutes, reconnect (one report cleared to 2080 MHz / 77 TFLOPS). → When a lane underperforms, check SM clock under load (expect ~2000–2400, not ~660) before blaming the recipe; a smart-plug cycle may not be enough (needs the hold-power-button drain).
  • GPU/unified memory is NOT cgroup-contained on GB10 (forum 386057): with the 580 driver nvidia-smi reports Memory-Usage: Not Supported on the iGPU, and docker --memory / MemoryMax= do not cap cudaMalloc/unified memory. When the unified pool is exhausted the whole host stalls (not just the container). This is exactly why the Ling fp4 converter OOM-killed on dgx1 while the GLM-5.3 kindling 2x serve held ~119/121 GB. → Never run a heavy host job (conversion, big load) on a node that has a live serve. Use a clean node (we moved to dgx5, 117 GB free). The reporter backported 615's memacct to 580 for per-cgroup GPU-memory accounting (not adopted; noted).

Other forum items (noted, not lanes)

  • Muse Spark Open 816B on 2 Sparks (386058): llama.cpp RPC over 200 GbE (RoCEv2), UD-IQ1_M 194.6 GiB / 6 shards, 32K ctx, q8_0 K/V, 6.8–7.0 tok/s single request. Two nodes is the floor (one can't hold weights; a third buys only context). Batch-only, llama.cpp stack — not a vLLM lane.
  • DGPP thread 383406 at 108 posts (1 new since the 10-16 pass; no material change). Our pin 3ad63d6b…, HEAD observed d9311e72… — bump pending a supervised re-bench.

Muse Spark Open 816B (meta-models/Muse-Spark-Open-816B-A42B-NVFP4 + DFlash2)

Downloaded to NAS (that download is what saturated nas.lan cold-read to ~1.3 MB/s for an hour on 10-16 — NOT our cluster). Both repos present: models--meta-models--Muse-Spark-Open-816B-A42B-NVFP4 (497 GB, 127 shards, snapshot 4239e4db…) + models--nvidia--Muse-Spark-Open-816B-A42B-DFlash2 (8.2 GB draft). Also incidental models--meta-models--Muse-Glimmer-30B.

Facts (config + card): 816B total / 42B active, natively multimodal omni (text+image+video+audio → text; MuseSparkForConditionalGeneration, model_type: muse_spark, auto_map: None). text_config: 62 layers, hidden 8192, 8 experts/token, moe_intermediate 4096, ctx 1,048,576 (1M), vocab 202048. NVFP4 group_size 16, exclude layers.0., layers.61., self_attn, lm_head. Card: NVFP4 needs ≥700 GB VRAM (BF16 2 TB); frameworks SGLang/vLLM/TRT-LLM/ Unsloth/llama.cpp; reasoning_effort low/med/high/xhigh (default xhigh); Temp 1.0 / top_p 1.0 / top_k off. DFlash2 draft = DFlash2DraftModel, qwen3-based, 5 layers.

Feasibility on GB10 — BLOCKED (same class as Step-5):

  • MuseSparkForConditionalGeneration is NOT in vLLM v0.31.0 nor main — the registry only has MuseGlimmer* (the 30B model); only muse_glimmer.py exists.
  • The single MuseSpark PR (#62064, open) targets Ampere (sm80) + AutoRound/ GPTQ INT4 experts — a different quant (not our NVFP4) and arch (not SM121). Even merged it would not run this NVFP4 checkpoint on GB10.
  • 497 GB weights is tight even on 8 Sparks (8×119 = 952 GB; 497 weights + KV + multimodal encoders + activations); vision/audio towers + any sparse-attention kernels have no SM121 build (Step-5 DSA precedent).
  • Multimodal omni → our tool-eval-bench is text-only; quality gate partial. → Watch item, not a night-shift lane. Re-check when a vLLM PR lands MuseSpark with NVFP4 + SM121 (and a DFlash2-for-MuseSpark target). Track #62064.

Runnable Muse-family alternative NOW: meta-models/Muse-Glimmer-30B IS supported in vLLM v0.31.0 (MuseGlimmerForCausalLM / MuseGlimmerForConditionalGeneration

  • DFlashMuseGlimmerAssistantModel speculator via qwen3_dflash) and is already on NAS. If we want a Muse lane this shift, Glimmer-30B (single Spark) is the one that actually loads — not the 816B.

SGLang is NOT a workaround today (but is the promising track)

We are not vLLM-locked — sm121 has engine = "sglang" first-class. Checked SGLang (latest release v0.5.21, 2026-10-02):

  • MuseSpark: not in a release, not in main (models/muse_spark.py = 404; only muse_glimmer.py). BUT the monolithic PR #44530 is being landed as a 5-layer series: #44664 (Docker) merged, #44665 (kernels) merged (456231e2), #44666 (srt model layer, base of 4/5), #44667 (ROCm, 4/5) open,
    • a 5/5 CUDA/deploy layer. So the model layer is in-flight, not merged. A SGLang cookbook for Muse Spark Open is already merged (#44654). → SGLang will likely run Muse-816B before vLLM does (vLLM's only MuseSpark PR is sm80+INT4). Watch the #44530 series; retry SGLang once muse_spark.py lands in a release.
  • Step-5: also not in SGLang — SGLang has step3_vl, step3p5, step3p7 (Step3 family) but no Step5 arch. Same blocker as vLLM.
  • SGLang DOES have bailing_moe_v3.py (Ling/BailingMoeV3) — a real alternative engine to A/B our Ling fp8/fp4 serve against vLLM (not a blocker, an option).

eugr/spark-vllm-b12x nightly checked — still no MuseSpark / Step5

Pulled the digest-pinned b12x image (sha256:03a95654…) and dumped its registry: it is a nightly vLLM 0.1.dev21830+g8244d1c44 built 2026-10-15 (ahead of v0.31.0), 391 archs. Yet:

  • MUSE: only MuseGlimmer* — no MuseSparkForConditionalGeneration.
  • STEP: Step1, Step3Text, Step3p5, StepVL, Step3VL, Step3p7, Step3p5MTP — no Step5ForConditionalGeneration. So Muse-816B and Step-5 are unsupported across vLLM stable, vLLM main, the b12x nightly, AND SGLang — the b12x build is not ahead on these archs. Confirms the SGLang #44530 series is the earliest path for Muse-816B.
  • Useful find in the b12x nightly: DSpark speculators Glm53DSparkForCausalLM, Qwen3DSparkModel, Qwen3OmniDSparkModel, K3DSparkModel, Gemma4DSparkModel, DSparkV41DraftModel — a DSpark spec-decode path for GLM-5.3 (and others) available in the b12x image; candidate for our kindling/GLM lanes.

Ling-3.1-flash fp8→fp4 (our own converter — in progress)

No official 3.1-flash fp4 exists (inclusionAI has fp4 only for 3.0). We wrote a converter (fp8-block routed experts → MXFP4, "even" scale mode, byte-exact vs vLLM reference_mxfp4.py dq). Prototype validated (my dq == reference dq, relerr 0.0000; ~10.8% mxfp4 loss vs bf16; experts ~53% of fp8 bytes). Full 54-shard conversion running on dgx5 → NAS models--inclusionAI--Ling-3.1-flash-fp4. Target ~110 GB → one Spark (vs 534 GB fp8 → 8). Serve + bench next. Format + math spec: specs/tech-architecture/upstream-watch-2026-10-16.md ("making 3.1-flash smaller").