2026-09-10.md 6.5 KB

Night shift 2026-09-10 (CEST) — r31 + eugr campaign

Window: ~01:45–08:00 local. Operator approval: "Начинаем через 1.5 часа. Остановишь прод и вперед." (00:20 local, 2026-09-10).

Context

  • Production at window start: glm53-flash-r28-4x-dcp4 on 4nodes-switch (r28 stack: vLLM 62f6385c / b12x 7216f6b9 / LMCache 934c287a; 155/159 hardmode, ~46.8 tok/s decode, RoCEnante on).
  • Update scan (2026-09-09/10) found a full new release line R28.1 → R29 → R30 → R31 (qualified) in local-inference-lab/rtx6kpro source locks (models/glm-5.3-flash/validation/*):
    • R31 = vLLM 55769270 (integration/jovian-warmup-buffer-reuse-20260909)
    • b12x 3edbcbce (frozen since 09-08) + LMCache f868580a.
    • Carries the GLM Flash MTP projection loader fix (our upstream eh_proj.weight O_DIRECT issue), FlashInfer GDN prefill on SM12x, b12x TP2 graph peer-push fix, scheduler hardening (fixed prefill compute share 0.4), engine-driven async SHM LMCache + atomic recurrent checkpoints, 16-channel NCCL.
    • Published image for cross-check: localinferencelab/vllm:jovian-judgement-community-20260909-r31.
  • eugr lane (operator: "eugr — это тоже b12x вариант, тоже интересно для glm53"): eugr/spark-vllm-docker (MIT) ships a cluster_only dual-Spark GLM-5.3-Flash recipe on their experimental b12x stack (--load-format b12x loader, MTP k=5 "humming", 1M ctx, 8 GiB KV, GMU 0.87). Prebuilt image eugr/spark-vllm-b12x:nightly-20260909 (Docker Hub, ~11 GB). Their vLLM ref = local-inference-lab/vllm @ dev/jovian-judgement (mainline line, 41ea64ae — diverged from the integration release cuts: +16/-39 vs r28).

Artifacts (prepared before the window, no prod impact)

  • docker-images/glm53-jovian-r27/profiles/glm53-r31.env — named version profile (clone-at-pin: vLLM 55769270/tree 6a2da27b, b12x 3edbcbce/tree c4bfeee9, LMCache f868580a/tree 6e5f080f). Build-dep gates verified against the r31 tree: deepgemm.cmake still 8b1392b9, cuda.txt still torch 2.13.0 / flashinfer 0.6.17 — the r27 image dir's gates hold.
  • recipes/glm53-flash-r31-4x-dcp4/ — fork of the r28 4x recipe (model GLM-5.3-Flash-NVFP4, 16 GiB KV pin); delta: --prefill-compute-share 0.4 + NCCL_NCHANNELS=16.
  • recipes/glm53-flash-r31-2x/ — fork of r28-spark 2x (model GLM-5.3-Flash-NVFP4-Spark, 10 GiB KV pin); same delta.
  • recipes/glm53-flash-eugr-2x/ — verbatim mirror of eugr's recipes/glm-5.3-flash.yaml on the prebuilt nightly-20260909 image (no build: no docker_image_dir).
  • eugr image pull started on dgx1+dgx2 pre-window.
  • LMCache engine-driven SHM deliberately NOT enabled in the first A/B: the r31-vs-r28 comparison must isolate the engine line; the LMCache connector (kv_transfer lmcache offload) is a separate axis for a later window. --recurrent-checkpoint-policy defaults to auto in r31 (no flag needed).

Plan

# Step Command / note
1 Stop prod sm121 stop --recipe glm53-flash-r28-4x-dcp4 + 15 s settle + verify no containers on 4 nodes
2 Build r31 sm121 build --recipe glm53-flash-r31-4x-dcp4 --build-node dgx1.lan (~1 h, clone-at-pin; image syncs to the other nodes)
3 r31 4x A/B sm121 serve --recipe glm53-flash-r31-4x-dcp4 → API gate 88.14:30000 → sm121 bench --recipe glm53-flash-r31-4x-dcp4 --cluster 4nodes-switch --label r31-4x
4 r31 2x A/B stop → sm121 serve --recipe glm53-flash-r31-2x → bench label r31-2x on 2nodes-dac
5 eugr 2x stop → sm121 serve --recipe glm53-flash-eugr-2x → bench label eugr-2x on 2nodes-dac
6 Verdict + restore best 4x-candidate to prod (r31 vs r28); sm121 serve + API verify
7 Report this file + glm53-recipe-state.md score table + commit/push

Baselines (seed 42, hardmode, tool-eval-bench 2.6.1.dev46, 88 scenarios):

Lane Score Perf (pp/tg/TTFT, d0 c1)
r28 4x DCP4 (PROD) 155/159 (90) ~1,500-1,600 / ~46.8 / —
r28 2x DAC (spark) 158/176 (90) 1,475 / 27.2 / 1,362
eugr 2x (their yaml) — —

Results

r31 4x DCP4 (4nodes-switch, model GLM-5.3-Flash-NVFP4, 16 GiB KV)

  • Score: 159/176 (90/100), all 88 scenarios completed, 0 errors — recipes/glm53-flash-r31-4x-dcp4/reports/2026-09-10_063616_r31-4x.*
  • Perf (d0 c1): 1,484 pp / 51.6 tg / 1,785 ms TTFT — decode +10% over the r28 4x baseline (~46.8 tg), prefill at parity (1,484 vs ~1,500-1,600). d8192 c1: 50.4 tg.
  • Scenario A/B vs r28 4x (2026-09-08 full run, same seed 42):
    • fixed in r31: TC-40, TC-47, TC-49, TC-51, TC-88 (5)
    • regressed: TC-33 (safety: hallucination resistance), TC-50, TC-68, TC-80, TC-82 (5)
    • common fails: 8 (TC-43/45/46/57/61/63/67/85) — quality is a wash
  • Verdict: r31 4x ≥ r28 4x → r31 4x promoted to production (09:50 UTC, window close requested by operator). Rollback to r28 4x = one stop+serve if the operator prefers the old image.

r31 2x DAC (2nodes-dac, model GLM-5.3-Flash-NVFP4-Spark, 10 GiB KV)

  • Score: 154/176 (88/100) — recipes/glm53-flash-r31-2x/reports/2026-09-10_070856_r31-2x.*
  • Perf (d0 c1): 1,544 pp / 25.9 tg / 1,289 ms TTFT (vs r28 2x baseline 1,475 pp / 27.2 tg / 1,362 ms — decode -5%, prefill +5%, TTFT -6%).
  • 17 non-pass scenarios (incl. 4 fails: TC-43/45/51/80/81) — 4 points below the r28 2x baseline (158/176). The r31 delta (fixed prefill compute share 0.4 + 16 NCCL channels) does not help the 2x lane; the 2x lane stays on r28 (glm53-flash-r28-spark) unless the 2x recipe is re-tuned (drop the r31 delta flags and re-bench).

eugr 2x

  • Not benched — the window closed (operator: "пора останавливать, поднять прод"). The recipe (glm53-flash-eugr-2x) and the image (eugr/spark-vllm-b12x:nightly-20260909, pulled on dgx1+dgx2) are ready; next window: serve + bench label eugr-2x on 2nodes-dac.

Campaign notes

  • Build: sm121 build on dgx1 failed once on the r31 FlashKDA API gate ("FlashKDA sources lack the packed checkpoint API") — fixed by making FLASH_KDA_SRC_DIR a Dockerfile ARG (default /deps2/FlashKDA, empty in the r31 profile) so the r31 tree uses its own pinned 3b225bf2 + in-tree flashkda-packed-checkpoints.patch fallback. Rebuild: ~40 min (ccache warm), image glm53-jovian-r31:local stamped d05629731f0539ccf176b70d30bfebef59738200b0a4a9d39762adf2ca745c97.
  • The eugr lane and the sparkring new-image re-run (4774a7c5, guarded 2 GiB memory floor) carry over to the next window.