unparallelled commited on
Commit
3cc2eda
·
verified ·
1 Parent(s): 02fca34

Upload vault/Reports/ClaudeReport_session_2026-09-19_adamw_const_ablation.md with huggingface_hub

Browse files
vault/Reports/ClaudeReport_session_2026-09-19_adamw_const_ablation.md ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 2026-09-19 - AdamW-only control arm (8e-5 constant), cut at step 400
2
+
3
+ Workspace: Context_Parallelism (1x H200)
4
+ Files: abl_phase1.sh, go_adamw.sh, cut400.sh, mk_lineage_680m.py, teardown_ship.sh
5
+
6
+ ## Purpose
7
+
8
+ The 2026-09-18 ablation changed two variables at once: optimizer (Muon vs AdamW)
9
+ and LR (8e-5 vs 1.8e-4). This run holds LR fixed at 8e-5 constant and runs AdamW
10
+ only, so the optimizer is the single free variable.
11
+
12
+ ## Build blocker resolved first
13
+
14
+ libtensor would not compile on this box. 46 instances of one error, zero .cu
15
+ files compiled:
16
+
17
+ mathcalls.h(206): error: exception specification is incompatible with that
18
+ of previous function "rsqrt" (crt/math_functions.h:629)
19
+
20
+ Cause: this box ships glibc 2.43 (kernel 7.0.0-31, gcc 15.2). glibc 2.41+ adds
21
+ C23 rsqrt/rsqrtf declared with __THROW; CUDA 13.0 (Aug 2025) declares the same
22
+ names without an exception specification. Every CUDA translation unit failed.
23
+ Earlier boxes had older glibc, so this never appeared before.
24
+
25
+ The tail of build.log was misleading: it showed a "gathered_idx < 0" line from
26
+ IndexingOps.cu, which is only warning #186-D. The "2 errors" in that file were
27
+ its own rsqrt/rsqrtf pair.
28
+
29
+ No clean off-switch exists - the feature macro is driven by __USE_GNU and is
30
+ #undef'd first, so -D on the command line is wiped. Fix applied: guarded glibc's
31
+ single declaration in /usr/include/x86_64-linux-gnu/bits/mathcalls.h:206 behind
32
+ #ifndef __CUDACC__. Verified a .cu and a .cpp including cuda_runtime.h both
33
+ compile. libtensor.a (80 MB) and bluscriptCP_exec (28.3 MB) built with 0 errors.
34
+
35
+ NOTE: this patch lives in /usr/include on an ephemeral box. It dies with the
36
+ instance and must be reapplied on any box with glibc >= 2.41.
37
+
38
+ ## Run configuration, verified not assumed
39
+
40
+ - [ZeRO-1] optimizer=adamw (not MUON+adamw-aux)
41
+ - CP_OPTIMIZER absent from the launch env (0 occurrences) - negative control
42
+ - mix b3=320011377 tokens, token-identical to p1mix
43
+ - lr 8.0000e-05 flat after 12 warmup steps (1% of 1200)
44
+ - all four arms start at loss 2.731203 from parent varybatch
45
+ - 43k tok/s, 78.5 of 143.8 GB, grad norm 0.29-0.37 throughout
46
+
47
+ Cut at step 399 (the 400th step, 0-indexed) after the step-400 checkpoint was
48
+ confirmed written safely. GPU released to 0 MiB.
49
+
50
+ ## Result: matched-step 50-step rolling mean
51
+
52
+ arm 99 199 299 399
53
+ p1final Muon 1.8e-4 2.5969 2.6673 2.6668 2.6299
54
+ const Muon 8e-5 2.5593 2.6083 2.6037 2.5670
55
+ cosine Muon 8e-5 2.5593 2.6080 2.6028 2.5655
56
+ const AdamW 8e-5 2.5825 2.6317 2.6283 2.5923
57
+
58
+ At identical LR, identical data order and identical parent, AdamW is worse than
59
+ Muon by +0.0254 nats at step 399. The gap is stable across all four sample
60
+ points (+0.023, +0.023, +0.025, +0.025), so it is not noise.
61
+
62
+ The two variables the 09-18 ablation confounded now separate cleanly:
63
+ - LR 1.8e-4 -> 8e-5 (Muon held): -0.063 nats (helps, the larger effect)
64
+ - Muon -> AdamW (LR held at 8e-5): +0.025 nats (hurts)
65
+
66
+ ## Caveat
67
+
68
+ This is training loss, not retrieval. The 09-18 result was that LR schedule
69
+ shape is a null on retrieval (+1/+1/+2pp). A 0.025 nat training-loss gap is
70
+ small and may not move retrieval at all. No eval was run on this arm - it was
71
+ cut at 400 of 1200 steps, so there is no comparable end-of-phase checkpoint.
72
+
73
+ ## Artifacts on HF (unparallelled/BluScriptCP), all size-verified
74
+
75
+ - checkpoints/adamw_const_8e5_step_400.ckpt and .zero_g1
76
+ - checkpoints/adamw_const_8e5_step_200.ckpt and .zero_g1
77
+ - logs/2026-09-19_adamw_const_{train,probe,master}.log
78
+ - logs/2026-09-19_libtensor_build_glibc243.log
79
+ - plots/2026-09-19_lineage_680m_phase1.png
80
+ - scripts/{mk_lineage_680m.py,abl_phase1.sh,go_adamw.sh,cut400.sh}