Window: ~01:45–08:00 local. Operator approval: "Начинаем через 1.5 часа. Остановишь прод и вперед." (00:20 local, 2026-09-10).
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).local-inference-lab/rtx6kpro source locks
(models/glm-5.3-flash/validation/*):
55769270 (integration/jovian-warmup-buffer-reuse-20260909)3edbcbce (frozen since 09-08) + LMCache f868580a.localinferencelab/vllm:jovian-judgement-community-20260909-r31.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).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).--recurrent-checkpoint-policy defaults to auto in r31 (no
flag needed).| # | 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) | — | — |
recipes/glm53-flash-r31-4x-dcp4/reports/2026-09-10_063616_r31-4x.*recipes/glm53-flash-r31-2x/reports/2026-09-10_070856_r31-2x.*glm53-flash-r28-spark) unless the 2x recipe is
re-tuned (drop the r31 delta flags and re-bench).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.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.4774a7c5, guarded
2 GiB memory floor) carry over to the next window.