Ver código fonte

history: r28 full-stack eval, build_profile feature + TOML trap, memory-gate flake, bench 155

Alexander Korolev 1 mês atrás
pai
commit
3bb263d1af

+ 51 - 0
history/night-shifts/2026-09-08.md

@@ -65,6 +65,57 @@ into `recipes/<lane>/reports/`, prints the final score + perf rows.
 (`--served-model-name` in args / `port`). The same commit moves the `stop`
 handler from `main.rs` to `docker/stop.rs` (line-budget).
 
+## r28 full-stack evaluation + version profiles (evening shift)
+
+Operator request: a `build_profile` entity — a named pin set referenced from
+recipes instead of copy-pasting the whole `[build.versions]` table. The
+half-cut r28 recipe (vLLM advanced, b12x/LMCache left at r27) was exactly the
+failure mode this kills.
+
+- Feature (15e9b62): `build_profile = "<name>"` → `docker-images/<dir>/
+  profiles/<name>.env` (same KEY=VAL format); merge base < profile < recipe
+  `[build.versions]`; merged file written to the node before `build.sh` and
+  folded into the `sm121.checksum` label. `profiles/glm53-r28.env` carries
+  the full r28 lock (vLLM 62f6385c / b12x 7216f6b9 / LMCache 934c287a —
+  all three forks cut simultaneously 09-06, strictly ahead of r27 pins).
+- **TOML context trap (b5f0662)**: the first `build_profile` edit landed
+  after the `[[extra_mounts]]` block → the bare key parsed into the LAST
+  mount table and serde silently ignored it; the build ran with base pins
+  while the recipe "had" the override. Bare keys must stay top-level
+  (tables like `[build.versions]` reset the context and are safe anywhere).
+  Verified end-to-end with a live `load_recipe` + `build_checksum` probe
+  before re-running the build; pitfall documented in both skills.
+- Build: ~6 min (buildx cache), label 14271940…; image verified in-container
+  (vllm r28, lmcache 934c287a, b12x 1.3.0 — the r28 b12x moved to static
+  versioning, so the scm pretend no longer applies; pin still enforced by the
+  HEAD+tree gates).
+- **Memory gate flake**: first serve died at worker init —
+  `Free memory 107.86 < 0.9×121.63 = 109.46 GiB` (the `gpu_memory_utilization`
+  admission gate, vLLM #48140): docker load of the 16 GB image + ~12 GiB of
+  starting vLLM processes pushed the check under the line. The launcher's
+  existing `drop_caches` (post-sync, pre-container, default on) ran but the
+  margin is still razor-thin; a retry with settled cache booted fine.
+  Follow-up considered: GMU 0.88 in the 4x recipes (gate → 107.0 GiB; KV is
+  explicitly pinned to 16 GiB so capacity is unchanged).
+- **Bench (full r28, seed 42, hardmode, c1,2): 155/176 (88/100)** vs r27
+  RoCE 160/176 and mixed-stack r28 159/176; median turn 3.3 s (r27 3.9 s —
+  the r28 scheduler win holds). 8 hard scenarios lost points vs r27 (TC-21/
+  49/51/61/67/80/82/88); TC-80+TC-88 failed only on full r28. But: r27 itself
+  spread 155–162 across its A/B runs, and the r28 b12x M8/M1 changes are
+  layout-only ("no model math, scale precision, or output reduction is
+  changed"), so 155 is inside the observed run-to-run band. Re-run queued to
+  pin the variance before judging the stack.
+
+Pending: (1) b12x O_DIRECT loader test (`--load-format b12x`, recipe
+`glm53-flash-r28-4x-dcp4-b12xload` ready) — the r28 b12x added
+`B12xModelLoader` (O_DIRECT reads into CUDA managed memory; weight loads stop
+polluting the page cache — relevant to the memory gate above); (2) Discord
+env vars `VLLM_GLM53_SPLIT_TARGET_BLOCK_SIZE=2048` /
+`VLLM_GLM53_SPLIT_MAMBA_BLOCK_SIZE=256` — split GLM-5.3 KV into independent
+target-MLA (2048) + recurrent-Mamba (256) page pools, requires
+`mamba_cache_mode='align'`, fine-grained prefix reuse; research done in the
+fork source (`vllm/platforms/interface.py:811`), test pending.
+
 ## Ops notes / lessons
 
 - Node clocks on the Sparks run +2 h ahead of UTC; the launcher's own INFO

+ 8 - 0
recipes/glm53-flash-r28-4x-dcp4/reports/2026-09-08_211618_r28-4x-dcp4-full-rerun.log

@@ -0,0 +1,8 @@
+{"event": "backend_detected", "backend": "vllm"}
+
+╭──────────────────── ⚡ llama-benchy Throughput Benchmark ────────────────────╮
+│ glm53                                                                        │
+│ pp=[2048]  tg=[128]  depth=[0, 4096, 8192]  concurrency=[1, 2]  runs=3       │
+│ latency=generation                                                           │
+╰──────────────────────────────────────────────────────────────────────────────╯
+