1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
|
# Cascade-EP ablation program — standard multi-layer LLM, EP only in training
**Date opened:** 2026-07-09 · **Trigger:** user directive — product form = standard L-layer
transformer (plain-forward inference); the looped/weight-tied block is demoted to physics testbed.
**Bridge:** layered energy E = Σ_l ½‖z_l − f_l(z_{l−1})‖² over DISTINCT standard blocks.
Free equilibrium == the standard forward pass (E=0) ⟹ inference is a normal LLM forward.
Training = two-phase (±β·CE at the top), relax states to nudged equilibria, ∇θ = (1/2β)[∂E/∂θ|₊ − ∂E/∂θ|₋].
Lineage: predictive-coding≈BP theorem family (Whittington-Bogacz 17; Song+ 20 / Z-IL), EP two-phase readout.
**First gate (2026-07-09):** `cascade_probe.py` L3 C128 random init → cos(cascEP, BP) **0.9968**
(blocks 0.9975/0.9980/0.9992, |EP|/|BP| 0.80–0.91).
## The five claims we are buying evidence for
- **K1 exactness-on-trajectory** — the two-phase gradient matches BP not just at init but along a
real training trajectory (weights with grown Jacobians stiffen the relaxation).
- **K2 cost** — the nudged relaxation can be engineered to a small multiple of a BP step
(scheme × K frontier), and the *physical* (Jacobi/parallel) scheme is not hopeless (analog story).
- **K3 training parity** — full training closes to BP final CE at equal arch/steps (the money claim).
- **K4 depth scaling** — no depth penalty vs BP at matched params (signal attenuation under control).
- **K5 analog price** — per-block Jᵀ feedback, dynamic noise, quantization: the tolerance ledger
ports from the looped-block program; PAR wall applies per block.
Honest cost framing: on GPU cascade-EP is strictly MORE expensive per step than BP (K relax sweeps,
each ≈ one fwd+state-vjp). The value is: standard-form deployment + local rules + analog trainability.
The looped-EP precedent multiplier was ~230× BP; the K-frontier decides whether cascade beats that.
---
## STATUS 2026-07-11: K1+K2+K3 SEALED; D-tier in flight
- K1 exactness: cos 0.9998-1.0000 on-trajectory + BP-free formally audited (test_bp_free.py in repo).
- K2 cost: exact mode ~3.6x BP (v7); Sol audit says remaining eager headroom 5-10% (v8 queued).
- K3 quality: **matched-tuning PARITY n=3** (EP-exact 2.0500±0.015 vs BP 2.0530±0.004 @ C256 L6,
lr 1e-3 both). Arc: fake-win (lr artifact) -> fake-tax (v7 dedups) -> parity. Fast mode = documented
-4%CE/+20%speed dial. A0.4: TF32 free, bf16 production-only (cos 0.9427).
- D1a (L12xC512 45M): BP s1/s2 SEALED 1.9169/1.9194 (H8, lr1e-3, tok_init0.02, 4000 steps, adamw).
- E-tier: next in queue (softmax pathology / error-channel SNR / write pricing) -> Demo-0 spec sheet.
## D1a AUTOPSY + K-LADDER DIAGNOSTIC (2026-07-09 night)
**>>> CORRECTION (2026-07-10 02:xx): the "parent-death" below was a MISDIAGNOSIS. <<<**
The original D1a arms did NOT die -- they completed normally. When I checked at ~23:44 they were ALIVE
at step 3200 on GPUs 0/3 (both at 100%); my /proc scan was mangled by a zsh eval wrapper so I misread
"no casc alive", and GPU1 being free (11 MiB) fooled me (the runs were on 0/3, not 1). d1_ep_s1.log is
continuous 0->4000 at steady 0.679 it/s (3200->4000 = 19.6 min, matches its 00:06 mtime). **Original
D1a finals: d1_ep_s1 1.9745 / s2 2.0013 / s3 2.1188 (fixed K3; s2 blew at step 4000 skips=9, s3 blew
hard skips=23 governor ramped K->7); d1_ep_muon 2.7515 (Muon-on-EP, cos collapsed 0.82).** The d1b
experiments I launched (thinking the originals died) ran on the GENUINELY-FREE GPU1, so no competition
-- and they independently isolated the real mechanism + fix (below), which is the bigger prize. Net:
no harm, wrong death-story, and we now have BOTH the original un-floored 3-seed AND the beta-floor fix.
KEY read of the original 3-seed: un-floored K3 is HIGH-VARIANCE near the SNR cliff -- s1 got lucky and
stayed stable (1.9745, closest to BP), s2/s3 blew up late. Same-seed non-determinism (fb+autograd
reductions) means the un-floored estimator is not even reproducible near the cliff. That is the
strongest argument FOR the beta-floor (which pins cos=1.0000, stable, reproducible).
**What I ORIGINALLY (wrongly) concluded:** the 4 D1a arms all died at wall-clock 23:36, mid-run,
at a step boundary with NO traceback and NO DONE marker -> classic PARENT-DEATH (launched inline, not
nohup'd; the launching shell/session terminated and took them down). No OOM in journalctl/dmesg. NOT a
training failure. **Lesson (re)applied: every relaunch is nohup + </dev/null.** (The nohup lesson still
stands as good practice, but it was not the cause here -- there was no death.)
**Interim signal BEFORE they died (the science):** at L12 the EP estimator degrades with training in a
way it did NOT at L6:
- EP s1: best val 2.0444 @ step 2800, then val BOUNCED to 2.0951 @3200 (last line); cos(EP,BP)
eroded 1.0000 -> 0.9942 (@2800) -> 0.9897 (@3200) as beta_t adapted DOWN 3e-3 -> 1.9e-5.
- EP s3: cos fell to 0.9834 AND the quality gate started SKIPPING steps (skips=4).
- vs BP s1/s2 which finished clean at 1.917. So at step ~3200 EP is ~0.10-0.13 CE above BP and the
curve is stalling while cos degrades -- the DEPTH-ATTENUATION / estimator-SNR prediction (B6/K4).
**Mechanism hypothesis:** K=3 fb message-passing rounds were tuned at L6xC256; the deeper L12 nudged
equilibrium under-converges, and as beta_t shrinks (nudge -> tiny) the two-phase difference becomes a
small signal against fixed relaxation error -> cos erodes -> gradient quality drops late in training.
**Diagnostic launched (local GPU1, nohup, seed 1, full 4000 steps, H8 lr1e-3 tok_init0.02 beta3e-3):**
- `d1b_ep_K3_s1` (K=3 control, honest 4000-step reproduction)
- `d1b_ep_K8_s1` (K=8 = kmax, strongest relaxation -- does more convergence hold cos~1 and close CE?)
- `d1_bp_s3` relaunch (completes the 3-seed BP reference).
**Decision rule:** if K8 holds cos>=0.999 through step 4000 and reaches ~BP CE -> gap was
under-convergence, fix = scale K with depth, then relaunch full 3-seed at min-sufficient K for the K4
verdict. If K8 does NOT close it -> genuine estimator depth-tax; next arm = beta-floor (needs a code
flag) and/or lambda_l per-layer energy weighting (B4). Follow-on (not yet launched): Muon-on-EP arm.
### RESULT 1 (2026-07-10 00:40): K REFUTED as the lever; BP 3-seed sealed.
- BP 3-seed reference SEALED: 1.9169 / 1.9194 / 1.9214 = **1.9192 +/- 0.0019** (L12 C512 H8).
- **cos is K-INVARIANT.** K3 and K8 track to 4 decimals through step 1200 (both 1.0->0.9997->0.9991)
AND give identical val CE at every matched step (900: 2.545 vs 2.548; 1100: 2.399 vs 2.404).
More relaxation rounds do NOTHING -> the cos erosion is NOT fb under-convergence. K8 killed (redundant).
- **Real mechanism = finite-beta SNR collapse.** beta_t = beta0*bscale*(SIG0/sig)^2 collapses ~120x
(3e-3 -> 2.5e-5) as sig_tok grows 1.6->17.8. The estimator computes E/(NBT*beta_t) from residuals
(z-o) that are O(beta_t*sig) ~ 4e-4 obtained by subtracting two O(17) states -> catastrophic
cancellation as beta shrinks AND sig grows. Both worsen with depth. cos erodes 1.0 -> 0.997 (@2000)
-> 0.98 (@2800 in the dead run). This is a beta-SCHEDULE problem, not a relaxation-depth problem.
- **Fix under test:** added `--beta_floor` / `--beta_fixed` flags. Launched paired arms seed 1
(control = K3 floor=0, still running): `d1b_ep_bf1e4_s1` (floor 1e-4), `d1b_ep_bf3e4_s1` (floor 3e-4).
Decision rule: if floored cos stays high through step 2000-2800 and CE drops toward BP 1.919 ->
beta-floor is the depth fix; pick min-sufficient floor, run 3-seed K4 verdict. Watch drift guard at
the higher floor (larger nudge). If floors DON'T help -> escalate to double-sided estimator (cancels
O(beta) Taylor bias, allows large beta, 2x cost) or lambda_l energy weighting.
### RESULT 2 (2026-07-10 01:26): beta-floor CONFIRMED as the depth fix.
Paired seed-1 sweep, cos in the erosion zone (where control collapses):
| arm | cos @2000..4000 | best CE | skips |
|---|---|---|---|
| K3 control (floor 0) | 0.977 -> 0.944 -> **0.896@4000** | 2.0009 | **17** |
| bf1e4 (floor 1e-4) | 0.9996 (nearly flat) | 2.174@2000 (desc) | 0 |
| bf3e4 (floor 3e-4) | **1.0000 flat** | 2.161@2000 (desc) | 0 |
- Flooring beta_t ELIMINATES the erosion: bf3e4 holds cos=1.0000 exactly where the un-floored control
collapses to 0.896 w/ 17 skips. Higher floor monotonically better CE at matched steps (3e-4 < 1e-4 <
control). 3e-4 already achieves perfect cos + zero drift/skips -> the operating point (higher can only
add Taylor bias). The un-floored control still banked best 2.0009 (from ~step 3200 before the late
collapse), so beta-floor's CE win over 2.0009 is the depth-tax recovery.
- **K4 verdict LAUNCHED:** d1b_ep_bf3e4_s1/s2/s3 (floor 3e-4) 4000 steps vs BP 1.9169/1.9194/1.9214
(1.9192). If EP 3-seed ~ 1.919 -> **K4 depth-parity SEALED at L12xC512 (real GPT-small shape)** ->
green-light D1b long-run demo (the "neng kan" gate) + hardware outreach. Poller baqcm84j4 armed.
- FIX SHIPPED to trainer: `--beta_floor` is the depth knob. Recommend it becomes default-on (e.g. 3e-4)
for L>=12; harmless at L6 (schedule never drops that low there). NOTE for the paper: this is a clean
"EP as configuration microscope" second instance -- depth exposes a finite-beta SNR floor that BP
(exact grad, scale-robust) never sees; the floor is the physical-relaxation analog of gradient
precision. Muon-on-EP arm still pending after the verdict.
## STATUS 2026-07-09 (same day): Tier 0 CLOSED GREEN via the zil scheme; C1 running
- **Naive relaxation FAILS at depth** (the B1-lite sweep): jacobi K=40·L → cos 0.82 (L6) / 0.67 (L12)
/ 0.53 (L24), shrink dying 0.41→0.28; gsf/gsr with small-η+momentum no better; β-insensitive
(0.01/0.03/0.1 identical) ⟹ binding error = RELAXATION INCOMPLETENESS, not Taylor bias.
warp2.0 catastrophic (cos 0.11) under naive descent.
- **Two implementation traps found:** (1) NBT-normalized energy made γ=1 actually γ=1/128;
(2) plain γ=1 reverse sweep WITHOUT interleaved reads contaminates e_l with J_l·δ_{l−1}
(same β-order as the signal) — final-state readout is directionally ruined (cos 0.30@L6).
- **The fix = zil scheme (interleaved reverse sweep):** update z_l (γ=1, SUM units) then read
θ_l IMMEDIATELY (e_l = −β·δ_l exact at the feedforward point; δ-recursion has NO linearization
error). Single phase, β cancels exactly. **Results: cos = 1.0000 at L=6/12/24; io gate 0.9999;
warp2.0 → 1.0000; real-trajectory ckpts (casc_bp6 s0→s4000) → 0.9998–1.0000. A0.1/A0.2/A0.3 all
green.** Honest framing: zil is numerically BP restructured as per-layer local two-factor energy
reads (no global backward graph); the EQUILIBRIUM mode (jacobi/CG to convergence) remains the
physically-meaningful EP column — priced expensive by the sweep, CG/preconditioning is the B2 job,
and it is the analog-hardware rung (E-tier).
- **C1 (zil) ran and is RETIRED with zil itself:** casc_ep6 best 3.3236 vs BP twin 2.9746 (gap 0.35
— single-sided zil top-read carries an O(β) shift on the readout term; moot now).
**USER DIRECTIVE (2026-07-09 night): zil is NOT the route — it is BP in disguise; the project
stays on TRUE EP = equilibrium-mode two-phase relaxation.** zil survives only as (a) a diagnostic
upper bound, (b) optionally a numerical STATE-INIT trick for GPU simulation (`--init_sweep`:
readout still taken at the relaxed equilibrium = clean EP semantics; hardware needs no init trick
— physics settles). **Critical path = B2: make the equilibrium solver cheap** (Adam-on-states /
init-sweep warm start / GS-multi-sweep / λ_l preconditioning), then rerun C1 in equilibrium mode.
## Tier 0 — gate hardening (probe-scale, hours, no training) → K1
| ID | question | design | decision rule |
|---|---|---|---|
| A0.1 | does cos survive depth? | cos vs L ∈ {3,6,12,24}, C128, Jacobi K auto-scaled; ≥4 batches | cos ≥ 0.98 at L12 or B1 must fix it |
| A0.2 | does cos survive training? | BP-train C256 L6 4k steps saving every 500 (`casc_bp_train.py`); gate at every ckpt; ALSO record required-K to reach res-tol | cos ≥ 0.97 at all ckpts; K growth ≤ 3× init→4k |
| A0.3 | full-θ gate | include emb/pos/readout(tied) grads in the gate | all groups ≥ 0.97 |
| A0.4 | precision | fp32 vs TF32 vs bf16 on the two-phase difference | pick cheapest safe mode (looped-EP lesson: TF32 killed relaxation — re-test here) |
## Tier 1 — relaxation engineering (the cost frontier) → K2
| ID | axis | arms | metric |
|---|---|---|---|
| B1 | scheme × K | Jacobi (physical, parallel) vs Gauss-Seidel fwd vs GS reverse (algorithmic; Z-IL limit) × K ∈ {12,25,50,100,200,400} at L6 & L12 | K needed for cos ≥ 0.98; wall-clock multiple vs one BP step |
| B2 | state optimizer | GD vs +momentum vs Adam-on-states; η sweep | same |
| B3 | nudge β | {0.003,0.01,0.03,0.1,0.3} × one-sided vs two-sided | cos, shrinkage |EP|/|BP|, required K |
| B4 | energy weighting | raw ℓ₂ vs per-layer precision λ_l=1/RMS² vs LN-in-energy | per-block shrinkage PROFILE (fix the 0.80→0.91 depth attenuation) + relax conditioning |
| B5 | stopping | fixed-K vs relax-to-tol | natural K distribution |
| B6 | **depth attenuation / estimator SNR profile** | measure per-block error amplitude ‖e_l‖ and per-block cos vs depth, as f(L, β, K) | the estimator-precision law: how fast does the deep-layer signal die, and which knob (β, K, λ_l weighting) restores it |
B1 is the single most consequential experiment in the program: if GS-reverse needs K≈L (Z-IL limit)
we have a ~BP-cost algorithmic mode for GPU pretraining, and the Jacobi column is the honest
analog-hardware price. Report all three columns — they are different products.
**Dynamics-vs-estimator tradeoff (user insight, 2026-07-09):** the cascade is dynamically SIMPLER —
the free phase is EXACT (a plain forward; no res/T1/fixed-point error, no Hopf, no collapse), so
**C-tier default arms run with NO regularizers at all** (jr/resreg don't exist here; stability regs
return only if evidence demands). The difficulty MOVES to the estimator: the two-phase difference
must resolve per-layer error signals that ATTENUATE with depth (visible at L=3 already: shrink 0.80
bottom vs 0.91 top), finite-β Taylor bias and finite-K relaxation bias hit the deepest blocks first,
and the difference-of-O(1)-quantities structure makes precision (A0.4, fp32-vs-TF32) bind harder
than in looped-EP. B6 is the dedicated measurement; λ_l weighting (B4), β/K scheduling (B3/B1) and
per-block rebalance (C5) are the candidate antidotes.
## Tier 2 — small full-training ablations (C256 L6 T256 TinyStories, 8–16k steps) → K3
| ID | arm | vs |
|---|---|---|
| C1 | **money run**: cascade-EP (B-tier winner) ×2–3 seeds | BP twin, same arch/data/AdamW/steps — target gap ≤ 0.05 CE |
| C2 | K budget: {K*, 2K*, 4K*} | CE-vs-cost curve (training may need less relax than the gate does — looped-EP precedent: t2sel 40 trains, 80 gates) |
| C3 | one-sided β (half cost) | two-sided |
| C4 | AdamW | SGDM (shrinkage sensitivity — does 0.8–0.9 amplitude matter under Adam's rescaling?) |
| C5 | shrinkage compensation: none | per-block grad-norm rebalance to BP profile (one-time calibration) |
| C6 | B4-winner energy weighting | raw |
Placement: 1080 farm **after a Pascal canary** (cascade-EP is a new workload class; the Pascal
pathology ban was derived on looped-EP+regs — do a 800-step canary + cross-env fingerprint first).
C256 L6 fits 8 GB (~19M params, ~2-3 GB act).
## Tier 3 — depth/scale rungs (Delta A40 chains) → K4
| ID | design |
|---|---|
| D1 | **north-star demo re-target**: L12 C512 (≈45M, a real GPT-small shape) cascade-EP vs BP twin — replaces the single-block 33M rung as the flagship demo (task #15) |
| D2 | depth ladder at fixed params: L6/C724 vs L12/C512 vs L24/C362 — depth penalty vs BP? |
| D3 | T 256→512 sanity (relax cost tracks attention; expect no surprise) |
## Tier 4 — analog/hardware arms (port the tolerance machinery) → K5
| ID | design |
|---|---|
| E1 | Jacobi + per-sweep dynamic noise: does the fnoise ≥1e-3 cliff reappear in cascade relaxation? |
| E2 | Jᵀ ablation: replace J_lᵀe with fixed random Bᵀ (feedback-alignment) / PAR projection — the per-block analog-feasibility tax; FA classically works on shallow stacks, test at L6 |
| E3 | static tolerance: wq8/wq6 weights inside relax |
## Sequencing & fleet
```
now: A0.1 + A0.3 + B1-lite (shared local GPU, ~1h) + casc_bp_train ckpt producer (107 free 1080)
gate ok → B1 full / B2 / B3 / B4 (local A6000s as arms free; each = minutes-hours)
→ Pascal canary → C-tier fan-out on 1080 farm (6 arms × 1-2 days)
→ D1 chains on Delta A40 (queue behind current five lines)
E-tier: after C1 lands (tolerance scripts port directly)
```
Naming: `casc_*` runs, wandb project **ept-cascade**. Gates report mean over ≥4 batches.
In-flight single-block arms (rescv2, govfloor, fastfull/fastpair, gov_s11-14) continue untouched —
they carry the dynamics paper + the two-stage-recipe science; D1 takes over the DEMO role only.
### RESULT 3 (2026-07-10 03:03): K4 DEPTH-PARITY SEALED (EP-favorable) + full-epoch launched.
- **beta-floor 3e-4 EP 3-seed: 1.9005 / 1.9125 / 1.8591 = MEAN 1.8907** vs BP 1.9169/1.9194/1.9214
(1.9192). **EP <= BP at L12xC512 (real GPT-small shape)** -- all 3 EP seeds below the best BP seed,
cos pinned 1.0000 throughout, zero skips. The L12 depth-tax is FULLY removed by the beta-floor; K4
closes EP-favorable. (Un-floored control was 2.00 + unstable/non-reproducible -- see RESULT 2.)
- Headline now: "standard L12 transformer, no backprop, equilibrium-EP with beta-floor = BP quality
(slightly better) at matched tuning, real GPT-small shape."
- **FULL-EPOCH run LAUNCHED (user directive, auto-launched on verdict):** epoch_ep_bf3e4 -- 58,800
steps = 1 epoch over TinyStories-BPE (361M tokens), beta_floor 3e-4 + --cosine (new flag), warmup
500, save_every 5000. Running 2.376 it/s solo on GPU1 -> ~6.9 h. This is the "neng kan" generation
demo (task #15). BP twin epoch DEFERRED (no free GPU; parity already sealed so it is nice-to-have).
- Next: generation samples at checkpoints; BP-twin epoch when a GPU frees; then scale-up corpus
decision (FineWeb-Edu vs OLMo2/Dolma) for the larger model.
## ROADMAP PIVOT (2026-07-10 03:2x, user directive): QK-norm inserted; staged scale-up.
**User: cancel the full epoch (done — killed epoch_ep_bf3e4); insert a QK-norm version after the
current 3-seed; then stages TinyStories-full-epoch -> FineWeb-Edu -> OLMo2.**
**Why QK-norm:** RMS-normalize q,k per head before the scores (OLMo2/Llama-style). It BOUNDS the
attention logits, attacking the SAME root cause as the beta-floor (sig_tok growth -> logit blowup ->
finite-beta SNR collapse) but structurally. Analog-friendly (my analysis): it's divisive
normalization (mature analog/neuromorphic primitive), its Jacobian is symmetric (does NOT worsen the
PAR/non-reciprocity wall), it's feedforward (no digital root-finder / no adjoint), and it REUSES the
softmax current-normalization circuitry (reuse doctrine, no tapeout). Bonus analog wins: bounds the
input range of the analog softmax exp device; reduces sig-growth so relaxation is more robust.
Analog-preferred alternative to A/B in E-tier: tanh logit soft-cap (tanh is a native analog transfer
function -- possibly cheaper than the norm's square-sum+divide).
**Code:** nn.MultiheadAttention replaced by explicit CausalSelfAttn (SDPA-backed, fast) in BOTH
trainers; `--qk_norm` flag (RMS-norm over head_dim w/ learnable per-dim gain). Smoke: EP+qk_norm
cos=1.0000, 40.06M preserved, 2.49 it/s, SDPA works in the fb backward (fb is first-order, no
double-backward needed). Also added `--cosine` (warmup->cosine to 0.1x lr) for the long runs.
**QK-norm validation matrix (8 runs, L12 C512, 4000 steps, launched on GPU1):**
- qk_bp_s1/s2/s3 = BP + qk_norm (new reference with the new block)
- qk_ep_bf_s1/s2/s3 = EP + qk_norm + beta_floor 3e-4 (PARITY test vs qk_bp)
- qk_ep_nf_s1/s2 = EP + qk_norm, NO beta_floor (ANALOG test: does qk_norm ALONE hold cos, letting
us DROP the beta-floor? un-floored non-qk collapsed to cos 0.896 by step 4000 -- see RESULT 2).
Decision: (1) qk_ep_bf ~ qk_bp => parity preserved with qk_norm. (2) if qk_ep_nf ALSO holds cos~1 and
matches => qk_norm supersedes the beta-floor (fewer knobs, cleaner analog story). Watcher qk_watch.sh
fires at the early analog read (nf step 2500) or all-done.
**STAGED SCALE-UP (after qk_norm validates):**
Stage 1: TinyStories FULL EPOCH (58,800 steps, 361M tok) with the validated qk_norm recipe + cosine
-> the "neng kan" generation demo (task #15).
Stage 2: FineWeb-Edu (real corpus, 32-50k tokenizer, ~150-300M params) -- best small-LM quality.
Stage 3: OLMo2 / Dolma recipe -- fully-open reproducible baseline for the paper/collaborators.
EP scaling knobs carried forward: beta_floor (or qk_norm if it supersedes), possibly double-sided
nudge at larger scale (cancels O(beta) Taylor bias). $20k/run (Rain) ~ few-B tokens/run.
### RESULT 4 (2026-07-10 06:16): QK-norm validated — parity holds; beta-floor still needed; Stage 1 launched.
- **Parity with QK-norm (EP-favorable again):** BP+qknorm 1.9253/1.8753/1.9192 = 1.9066;
EP+qknorm+beta_floor 1.8588/1.9176/1.8841 = **1.8868 <= BP**. QK-norm preserves EP=BP parity at L12.
- **ANALOG ANSWER: QK-norm does NOT replace the beta-floor** (they are complementary). EP+qknorm
WITHOUT the floor still erodes cos (1.0 -> 0.946 by step 3200) and lands ~0.09 worse CE (2.02 vs
1.89). Milder than the old non-QK collapse (0.896) but not fixed. **Why: sig_tok still grows to 21.5
even with QK-norm** -- QK-norm normalizes q,k INSIDE attention (bounds the attention LOGITS) but does
NOT bound the residual/embedding scale that drives beta_t = beta0*(sig0/sig)^2. So beta_t still
collapses -> estimator SNR still needs the floor. QK-norm's payoff is (a) attention logit-bounding
(analog softmax device range), (b) scale robustness (logit growth is worse in bigger/deeper models),
(c) it is standard OLMo2/Llama -> good for the scale-up. Recipe = **qk_norm + beta_floor together**.
- **STAGE 1 LAUNCHED (user directive):** stage1_ep_qkbf -- TinyStories full epoch (58,800 steps, 361M
tok), qk_norm + beta_floor 3e-4 + cosine, warmup 500, 2.4 it/s solo -> ~6.8 h. The "neng kan"
generation demo. Watcher fires at step 10000 (first generation-worthy ckpt) / done / death.
Then Stage 2 (FineWeb-Edu) -> Stage 3 (OLMo2).
### RESULT 5 (2026-07-10 07:3x): Stage-1 epoch BLEW UP @step 12100 — root-cause diagnosis (sig story REFUTED).
The qk_norm+beta_floor+cosine epoch was healthy to ~11400 (best val 1.6669) then blew up (val 1.67->7.6,
gn pre-clip 0.5->53) and oscillated in a degraded regime. **My first guess (sig_tok growth -> SNR
collapse -> add final_ln) was WRONG, refuted by its own telemetry:**
- sig rose only +8% (29.8@10000 -> 32.2@12000) then PLATEAUED; it was already ~30 at step 10000 when
everything was healthy. An 8% change cannot cause a catastrophic transition.
- cos was FINE (0.9935) until step 11900; the cos drop is a CONSEQUENCE of the blowup, not the cause.
- grad-clip is ALREADY present (clip 1.0); gn=53 is pre-clip telemetry. Not a magnitude-spike issue.
**LEADING INDICATOR = skips (drift-guard rejections = nudged fb relaxation drift>0.5 = CONVERGENCE
FAILURE).** skips accelerate from ~step 11000 (4->13 by 11400) BEFORE gn (11700), cos (12000), val
(12100). **Diagnosis: a CONTRACTIVITY BIFURCATION in the nudged fb relaxation** -- as training sharpens
the operator (block Jacobians grow), an increasing fraction of batches have a non-contractive nudged
iteration -> skipped -> gradient bias -> a marginally-converged batch emits a bad step -> over the edge.
**This is the cascade analog of the looped-EP Hopf wall** (non-conservative attention loses
contractivity as CE drops -- documented in ep-c512-residual-defense-fix). 4000-step runs never saw it
(operator not sharp enough yet; edge ~step 11400). Right fix = CONTRACTIVITY control (resreg/jacreg or
geta<1 damping), NOT final_ln.
**CONFIRMATORY A/B/C (resume from ckpt-10000, pre-bifurcation, beta floored 3e-4 via --sig0 1.6):**
A=control (K3,lr1e-3) -> should reproduce skip-climb+blowup; B=K8 (does more fb rounds hold skips?
= marginal-contractivity test); C=lr3e-4 (slower sharpening -> delayed edge? = driver test).
Code added: --resume, --sig0, --final_ln, --qk_norm(CausalSelfAttn/SDPA). Watcher diag_watch.sh armed.
## AUDIT (2026-07-10, model switch): re-review of the day's conclusions. Corrections + added controls.
**What SURVIVES audit:** RESULT 1 (K-invariance data is solid; K plumbed, paid wall-clock, identical
cos/CE); RESULT 2 (beta-floor effect is decisive and mechanistic: floored arms pin cos, unfloored
collapses); the 4k-horizon numbers themselves; the blowup telemetry read (skips lead gn lead cos lead
val); the D1a "no-death" correction; Delta cancellation scope.
**CORRECTIONS from audit:**
1. **Muon verdict RETRACTED as confounded.** d1_ep_muon (2.7515, cos 0.82) ran in the ORIGINAL D1a
batch, i.e. WITHOUT beta_floor — its cos collapse mirrors the unfloored control (0.896). "Naive
Muon-on-EP fails" is NOT established; needs a re-run with beta_floor before any conclusion.
2. **Parity claims toned down.** n=3 with best-of-noisy-val (6-batch val, min over ~500 evals ->
selection bias ~0.02-0.03, applied to both arms) means "EP 1.8907 vs BP 1.9192" is PARITY with an
EP-leaning point estimate, not "EP beats BP". (RESULT 3's all-3-EP-below-all-3-BP is p~=0.05 rank
evidence — suggestive, not sealed.) Same for RESULT 4 (EP s2 1.9176 > BP best 1.8753).
3. **"Depth-tax FULLY removed" was premature** — true only at the 4k-step horizon; the epoch blowup at
~11.4k shows a second, longer-horizon wall. Claim scoped accordingly.
4. **"skips = relaxation non-convergence" is UNVERIFIED.** The skips counter conflates the drift-guard
and the gn-EMA-guard; drift telemetry is stale-on-reject (GOV['drift'] not updated on drift-reject)
while gn telemetry does update on gn-reject. Guard-split counters (skd/skg) now added to the log
line for all future runs. The contractivity-bifurcation story remains the leading HYPOTHESIS, not
a finding.
5. **A/B/C lacked the decisive control: a BP arm.** If BP-from-the-same-ckpt ALSO blows up, the blowup
is a CONFIG instability (tied readout + NO final LayerNorm + sig~30 logits is genuinely nonstandard
— every real GPT has final-LN; final_ln then likely IS the fix, via bounded logits/curvature, even
though the sig->beta-SNR mechanism was refuted), and EP is exonerated. If BP sails through while A
blows, the bifurcation is EP-specific -> jacreg/damped-fb. **diag_D_bp launched** (BP + --resume
added to casc_bp_train, same ckpt-10000, qk_norm, lr 1e-3).
6. **Resume confounds now on record:** optimizer state is NOT in the ckpt (fresh Adam moments — sig
jumped 29.8->35.6 within 300 steps of resume, visibly faster drift than the original run) and the
data-order RNG restarts from the step-0 stream. So arm A can only reproduce the blowup
STATISTICALLY, not at step 12100; if ALL arms blow immediately after resume, suspect the
Adam-cold-start artifact rather than the original mechanism.
7. **Arm B (K8) is weakly informative by design:** for a genuinely divergent nudged iteration, MORE
rounds = MORE drift, so both "K8 helps" and "K8 hurts" fit the story. The causal weight is on C
(lr, sharpening-rate driver) and D (BP, EP-specificity).
8. Process fixes: watcher was not harness-tracked (user caught it — now all watchers via tracked bg
tasks); zsh $VAR word-splitting cost two launch retries (all launches now via bash scripts).
### RESULT 6 (2026-07-10 09:35): WALL-2 DIAGNOSED — marginal under-convergence, EP-specific; kretry fix shipped; OLMo2 matrix launched.
A/B/C/D verdict (resume from pre-bifurcation ckpt-10000, beta floored):
| arm | skips @ window | note |
|---|---|---|
| A ctl (K3, lr1e-3) | **16, accelerating** (val wobble 2.00@12400) | leading indicator REPRODUCES |
| B K8 | **2** | rejections nearly eliminated |
| C lr3e-4 | **1**, best 1.5163 (best of all) | never touches the edge |
| D BP (same ckpt/config/lr) | clean through 12750 | **EP-specific confirmed** |
**Mechanism (two walls, two levers — revises "K refuted"):**
- Wall-1 (~2-4k): cos erosion = finite-beta SNR -> beta-floor (K genuinely irrelevant there).
- Wall-2 (~11k+): operator sharpens -> a growing fraction of batches sit at the CONTRACTIVITY EDGE of
the nudged fb relaxation and under-converge at K3 -> drift-guard rejections climb -> gradient bias +
occasional marginal escapes -> blowup. K8 CONVERGES those batches (16 -> 2 rejections) => marginal
under-convergence, NOT hard divergence. lr modulates when the edge arrives (C: skips~1 and better CE).
BP has no relaxation -> no wall-2 (D clean). Original 12100 didn't literally replay in A (fresh Adam
+ different data order — the recorded confounds) but the leading indicator did.
**FIX SHIPPED: `--kretry N`** — on drift-reject, RETRY the batch once with N fb rounds (B proved K8
converges them) instead of dropping it. Converts biased skips into converged gradients; costs extra
rounds ONLY on marginal batches (~0.1-1% of steps). Telemetry: skips=(d/g/r).
**OLMo2 4k matrix LAUNCHED** (ol_bp_s1-3 + ol_ep_s1-3, wd 0.1, EP: beta_floor 3e-4 + kretry 8; twin
step-0 losses bitwise-identical per seed). Watcher auto-computes parity and — if EP mean within 0.05
of BP — AUTO-LAUNCHES the Stage-1 OLMo2 TinyStories epoch (stage1_ol_ep, 58.8k steps, kretry armed).
OLMo2's bounded-per-branch signals may also shift wall-2 later; kretry is the belt-and-suspenders.
### RESULT 6-ADDENDUM (2026-07-10 10:5x): B(K8) ALSO BLEW at matched step — K delays, does NOT prevent.
diag_B_k8 @12600: train 3.37 / val 3.63 (best 1.6755 pre-blowup), gn 18.6, skips 2->14. So wall-2 is
NOT merely marginal under-convergence: the nudged fb iteration becomes GENUINELY DIVERGENT for a
growing batch fraction as the operator sharpens (true contractivity crossing — the cascade Hopf wall).
More rounds converge the marginal shell only; once past the edge no K helps. **kretry DEMOTED from fix
to mitigation** (still right for sporadic healthy-regime rejections). Note also: B blew with only 14
total rejections => most bad gradients passed UNDER the drift-0.5 threshold (loose guard + gn-EMA
poisoning during degradation).
Surviving facts: C (lr 3e-4) clean at 12600 (skips=1) -> sharpening RATE is the driver; D (BP) clean
-> EP-specific. **Defense ranking now: (1) OLMo2 arch (different operator: bounded branches + QK-norm;
diagnostics were all on the OLD arch) -> (2) lr channel (lower peak / faster decay through the
mid-training danger window) -> (3) true contractivity control (damped-fb gamma<1 / cascade-jacreg) if
OLMo2 still hits the wall.** Stage-1 OLMo2 epoch (parity-gated autolaunch) is the live test; watch
skips=(d/g/r) through the 10-14k window.
### RESULT 7 (2026-07-10 12:0x): OLMo2 4k PARITY — gate PASSED; arch worth ~0.07-0.10 CE to BOTH; epoch auto-launched.
- **BP+OLMo2: 1.8294/1.8333/1.8378 = 1.8335 (±0.004)** | **EP+OLMo2: 1.8294/1.8818/1.8817 = 1.8643** |
gap +0.031 -> PASS (<=0.05) -> stage1_ol_ep AUTO-LAUNCHED (58.8k steps, qk+floor+kretry+cosine+wd).
- OLMo2 improved BOTH columns vs old arch at 4k (BP 1.9066->1.8335; EP 1.8868->1.8643) — the arch
upgrade pays for itself immediately.
- HONEST READ: EP s1 == BP s1 to 4 decimals (1.8294, twin init); but EP s2/s3 trail their BP twins by
~0.045. Mean gap +0.031 is WITHIN the best-of-noisy-val metric band (~0.02-0.03, per audit), so:
parity within noise, point estimate now slightly BP-leaning (was EP-leaning on old arch). Watch, not
act: candidate causes = beta_t schedule now keyed to untied W_out sigma; norm-after changing fb
conditioning (canary cos 0.9991 vs 1.0000). If the epoch shows a real gap, revisit.
- Pascal canaries GREEN (EP cos 0.9991 flat, 0 skips, 0.64 it/s; BP 2.0 it/s) -> farm UNBANNED for
cascade: 2x BP-twin epochs (stage1_ol_bp_s1/s2, ~8h) + Muon-with-floor retest (ol_ep_muon_s1) now
running on timan107 GPUs 6/2/7. NOTE farm-vs-local init differs (torch 2.3.1 vs 2.10 CUDA RNG) —
config-matched anchors, not init-twins.
- Wall watch armed on the epoch: report at step 14000 (past the old 11.4k wall) with skips=(d/g/r).
### RESULT 8-PRELIM (2026-07-10 12:4x): Muon retraction CLOSED — with beta-floor, EP+Muon WINS big (n=1).
ol_ep_muon_s1 (OLMo2 + beta_floor + kretry + Muon, Pascal GPU7): **1.7316**, cos 0.9992, ZERO skips.
vs same-config-seed AdamW columns: BP 1.8294 / EP 1.8294 -> **-0.098 CE** (3-5x the metric noise band).
The original "naive Muon-on-EP fails (2.7515)" was ENTIRELY the missing beta-floor (audit correction
vindicated). Muon's known small/mid-scale advantage over AdamW TRANSFERS to EP gradients.
Controls launched: ol_bp_muon_s1 (the fair Muon-column comparison) + ol_ep_muon_s2 (seed robustness).
If BP+Muon lands ~1.73 too -> Muon helps both equally (parity preserved, recipe upgraded for BOTH
columns). If BP+Muon ~1.83 -> EP-specific synergy (bigger story, needs replication before claiming).
Interim: BP-twin epochs healthy at ~13.7k (best ~1.60 — already past the old-arch EP wall step);
local EP epoch at 4.8k, best 1.8148, zero skips, 1.97 it/s.
### RESULT 9 (2026-07-10 13:1x): WALL-2 ELIMINATED BY ARCHITECTURE — epoch cleared 10-14k with ZERO guard events.
stage1_ol_ep cleared the wall window (through step 14300): **skips=0 (d0/g0/r0) THE ENTIRE RUN** — not
one drift rejection, not one gn rejection, kretry never fired. (Old arch: 32 skips by 13000, blowup at
12100; K8 variant blew by 12600.) gn calm (~0.5), best val 1.6702 and descending at 1.97 it/s.
**OLMo2's bounded operator (norm-after-sublayer + QK-norm) stays contractive where the old block went
divergent — defense #1 closed the case; mitigations (kretry) unused.** The architecture change, made
for digital-standardness, is also the EP stability fix — "EP as configuration microscope" ends as
"modern standard config is EP-compatible out of the box."
WATCH ITEM: cos drifting slowly (0.9947@6k -> 0.9892@14k), beta already at floor. Watcher re-armed
with cos<0.985 trigger; if it keeps sliding by ~30k, try beta_floor 5e-4 or accept (grad quality still
fine at 0.989). Remaining epoch ETA ~6h.
### RESULT 8-FINAL (2026-07-10 13:3x): Muon attribution = GENERIC (helps both columns ~0.13 CE).
BP+Muon s1 **1.7020** vs BP+AdamW 1.8335; EP+Muon (1.7316/1.7191, n=2 mean 1.7254) vs EP+AdamW 1.8643.
Muon's advantage TRANSFERS to EP gradients at full magnitude — not an EP-specific synergy, the known
small/mid-scale Muon-beats-AdamW result, now demonstrated on backprop-free training. **Muon = default
optimizer for BOTH columns from Stage-2 (FineWeb-Edu) onward.** Muon-column EP-BP gap +0.023 ~ AdamW
column's +0.031 (consistent slight BP-lean on OLMo2, noise-band edge, on the watch list).
HW-narrative guard: Muon's Newton-Schulz is matrix-matrix (analog-dead) but the optimizer lives
DIGITAL-side per standing doctrine — GPU-pretraining Muon does NOT conflict with the factored-Adam
analog training story. Filling to 3v3 (BP+Muon s2/s3, EP+Muon s3) for the seal.
### WATCH (2026-07-10 14:0x): late-epoch cos erosion = intrinsic late-training SNR decline. Decision: let it run.
cos 0.9894@17k -> 0.9840@22k (-0.0011/1k), ZERO skips, gn calm, val still improving (1.6353). sigma
plateaued (~32) and beta at floor => ratio stable => NOT the sigma-growth wall-1. Mechanism: true
gradient magnitude shrinks as CE approaches optimum while the estimator noise floor stays constant ->
SNR falls with the signal. Extrapolates to cos~0.94 by 58.8k. DECISION: no mid-flight surgery (resume
reintroduces Adam/data confounds; cosine-LR shrinks late steps anyway). The BP epoch twins ARE the
measurement: EP final within ~0.03 of BP -> erosion harmless; 0.1 behind -> quantified problem with a
ready dial (late beta_floor schedule, e.g. 5e-4 past 20k). Pre-validation probe queued: when the farm
frees, run ckpt-25000 + floor 5e-4 x 2k steps. Watcher re-armed at cos<0.96.
### RESULT 8-SEALED + beta-floor dose-response (2026-07-10 16:1x).
**Muon 3v3 SEALED: BP+Muon 1.7020/1.7137/1.7136 = 1.7098 | EP+Muon 1.7316/1.7191/1.7435 = 1.7314.**
Muon default for both columns from Stage-2. The +0.02-0.03 BP-lean now CONSISTENT across two optimizer
columns (6v6) -> upgraded from noise to "probably real small effect"; primary suspect = late-training
SNR (see below), because it is beta-liftable:
**beta_floor dose-response @ckpt-25000 (same weights/batch): 3e-4 -> cos 0.984 | 5e-4 -> 0.9889 |
1e-3 -> 0.9940.** Raising the floor lifts cos exactly as the SNR mechanism predicts, with drift=0.000
and zero skips at 1e-3 (larger nudge does NOT destabilize the OLMo2 relaxation). 2k-step traces
harvesting (auto-kill at 27k). RECIPE UPDATE for Stage-2 (and the next epoch): late beta_floor
schedule — floor 3e-4 early, ramp to ~1e-3 in the back half (or floor ∝ 1/grad-norm). This likely
also closes the +0.02-0.03 gap.
### Dose-response SUSTAINED (25.6k-27k, 2k-step parallel traces): floor 3e-4 ~0.975 (accelerating
down, -0.0025/1k) | 5e-4 ~0.983 | 1e-3 ~0.990 flat, zero instability. Late-SNR mechanism + fix both
confirmed in-training. `--bf_late/--bf_late_at` flags shipped. NEXT-RUN RECIPE (post-epoch): OLMo2 +
Muon + beta_floor 3e-4 + bf_late 1e-3 @ ~20k + kretry 8 — expected to hold cos>=0.99 end-to-end and
likely close the +0.02-0.03 column gap.
### PLAN UPDATE (2026-07-10 17:2x): cos crossed 0.96 (0.9544@39.3k, accelerating) — flagship stays
UNTOUCHED (the control measuring erosion damage vs BP twins); PARALLEL bf1e3 continuation launched
from ckpt-40000 on the farm (floor 1e-3 for the remaining 18.8k steps). Endpoint comparison becomes a
clean quad: EP-control(3e-4) / EP-floor-lift(1e-3 from 40k) / BP-s1 / BP-s2 — quantifies BOTH the
erosion damage AND the fix's recovery in one shot.
### RESULT 10 (2026-07-10 19:0x): EPOCH ENDPOINTS + "NENG KAN" GATE PASSED + stage1b (improved recipe) launched.
**Epoch endpoints (58,800 steps / 361M tokens, OLMo2, AdamW):**
| arm | best val CE |
|---|---|
| BP s1 / s2 | **1.2750 / 1.2509** |
| EP (floor 3e-4 fixed) | **1.4802** (zero guard events end-to-end) |
| EP bf1e3-cont (floor->1e-3 @40k) | 1.4835@46k, running to 58.8k |
**EP-BP gap at epoch scale = +0.22** (was +0.03 at 4k): the late-SNR cos erosion (1.0 -> ~0.92-0.95)
is a REAL, horizon-growing CE cost with fixed floor 3e-4. Mechanism + dial both established
(dose-response); the improved recipe is designed to close this.
**GENERATION GATE ("neng kan") PASSED:** casc_gen.py (new; plain-forward standard-LLM inference) from
EP s55000: coherent multi-paragraph TinyStories — named characters, balanced-quote dialogue,
cause-effect, emotional arc (minor charm-defects vs BP's tighter coherence, consistent with +0.22).
**A 42.75M standard 12-layer transformer trained end-to-end WITHOUT backprop tells coherent stories;
inference is a plain forward pass.** Task #15 demo artifact exists.
**stage1b launched (the improved-recipe head-to-head):** stage1b_ep_muon (local GPU1: Muon + floor
3e-4 + bf_late 1e-3@15k + kretry + cosine[now also on Muon via build_hybrid total_steps]) vs
stage1b_bp_muon (farm GPU6: Muon + cosine). Expectation: EP ~1.25-1.35 (Muon -0.13 and erosion fix
~-0.1+), BP+Muon anchor moves too. ~8h both.
### QUEUE (user, 2026-07-10): double-sided nudge — implement AFTER stage1b endpoint.
The 0.22 diagnosis: EP's one extra constraint = the gradient is a DIFFERENTIAL MEASUREMENT
(SNR ∝ β|g|/(ε·σ)) vs BP's analytic adjoint. Escalation ladder: stage1b ramp (running) →
double-sided ±β (kills O(β) Taylor bias, unlocks ~10× β for SNR, 2× nudge cost; A/B at 25k-ckpt
2k-step probe when implemented) → fp64 E-accumulation / readout averaging. Analog note: this
constraint IS the hardware constraint (ε = device noise); β-scheduling learned here = chip ops
manual; hardware bonus = nudge amplitude free under multiplicative noise (r-indifference).
### RESULT 11 (2026-07-11): stage1b SEALED (gap 0.22->0.050); beta ceiling not reached; K exonerated on OLMo2; bf16 naive-cast dead.
- **stage1b endpoints: EP+Muon+floor-ramp 1.2808 | BP+Muon 1.2311 -> epoch gap 0.050** (fixed-floor was
+0.22). EP now beats the old BP-AdamW epoch (1.2509/1.2750). Intervention-timing quad complete:
fixed-floor 1.4802 / lift@40k 1.4479 / full ramp 1.2808 -- monotone earlier-is-better dose curve.
- **Gap probes @s45000 (2k-step sustained traces):** control cos 0.9947 | b2e3 0.9968 | **b3e3 0.9974
(deficit halved, zero drift/skips)** | K5 0.9951 ~= control -> **K-invariance now proven on BOTH
architectures; the residual deficit is beta-liftable, not relaxation-depth.** sigma(W_out)=80 by 45k:
without the floor beta_t would be ~1e-6 -- the floor carries the entire late phase.
CE-endpoint test launched: stage1b_f3e3cont (s45000 -> 58.8k at floor 3e-3, farm). If it closes to
<=0.03, next-flagship recipe = ramp ...->3e-3@~35k; else double-sided (queued) takes the residual.
- **bf16 gate: naive full-cast FAILS at any beta.** floor 3e-4 -> cos 0.33; 3e-3 -> 0.67; 1e-2 -> 0.65
(no longer SNR-limited: bf16 rounding distorts the nudged equilibrium itself; beta cannot compensate).
Speed was 2.1x (5.2 it/s). VERDICT: cost baseline stays TF32 (validated); the x0.5 lever requires
proper mixed precision (bf16 weights/matmuls + fp32 states/accumulation, autocast-style) -- queued as
engineering upside, NOT in the Ben cost baseline. Wall-1 physics predicted all of this (SNR ∝ beta/eps;
bf16 eps ~8000x fp32): the fp32/bf16/analog-noise beta-epsilon scaling story now has a second
measured point.
## STANDING DIRECTIVE (user, 2026-07-11): LOOPED LINE ABANDONED.
The looped/weight-tied single-block line is retired as a research direction. Default everywhere:
cascade (tied, PCN-form energy over distinct standard blocks) is THE line. The looped record survives
ONLY as historical evidence inside the dynamics paper (Hopf phenomenology, dips, governor, eig
audits — valid data, past tense). Consequences: no new looped runs; looped-specific queue items
closed (adaptive-eps integrator, Pascal five-arm reg triage, S1-S3 looped ladder); report v3
sections 7.1/8 to be reframed past-tense on the Overleaf pass ("a companion system we studied", not
"our companion product"); AsymEP machinery = dynamics-paper subject matter, not the training recipe.
### RESULT 12 (2026-07-12): f3e3cont NEGATIVE — the residual 0.050 gap is NOT late-beta-SNR-limited.
stage1b_f3e3cont (floor 3e-3 from s45000): **1.2883** vs stage1b 1.2808 (floor 1e-3) — no gain (cos
0.994->0.997 bought nothing in CE). beta lever exhausted at 1e-3. Residual-gap suspects, in order:
(a) single-sided O(beta) Taylor bias sustained over 59k steps -> **next lever = RANDOM-SIGN beta**
(flip sign per batch; single-phase cost; averages away the systematic first-order bias; validated
competitive at full ImageNet by Kerjan-Hoier-Scellier) then centered (2x nudge) if needed;
(b) fb K=3 finite-relaxation bias; (c) Muon x gradient-noise interaction; (d) ~0.02-0.03 of the 0.05
is metric-noise band. Recipe note: random-sign is a one-line trainer change (sign of beta_t per step).
### RESULT 13 (2026-07-12): bsign (random-sign beta) NEUTRAL at 4k — 42M gap-chasing has hit the noise floor. THREAD CLOSED.
bsign 3-seed: 1.7031/1.7562/1.7552 (mean 1.7382) vs single-sided 1.7314 vs BP+Muon 1.7098. The bias
reduction is cancelled by injected update-direction variance at this horizon (seed spread now dominates:
s1 alone beat the BP mean). Ledger of the residual-0.05 epoch gap after three probes: NOT late-beta-SNR
(f3e3cont), NOT K (K5 probe), NOT first-order sign bias at short horizon (bsign). Remaining mass:
~0.02-0.03 metric-noise band + small unattributed accumulation. **Decision: stop polishing 42M.**
Carry `--bsign_rand` and a future centered mode as Stage-2 A/B flags; the gap question re-opens at
300M/real-corpus where it means something. Effort pivots to: (1) Stage-2 data pipeline (FineWeb-Edu +
32k tokenizer), (2) E-tier tolerance suite on the idle farm (hardware track / UIUC outreach feed).
### RESULT 14 (2026-07-12): E-TIER WAVE-1 — full analog-fault tolerance ledger at stage1b s55000.
`etier_probe.py`, farm GPUs 2/3/7 (shards A/B/C), stage1b_ep_muon_s55000.pt (clean valCE 1.2678),
B=8 eval batches; metrics = faulted valCE (Δ vs clean), cos(EP_faulted, BP_faulted) [self-consistency
of the learning signal under fault], cos(EP_faulted, BP_clean) [direction vs the ideal update].
| fault (component) | mild | medium | severe | verdict |
|---|---|---|---|---|
| wq — weight quant (crossbar #3) | 8b: +0.004 / 0.956 | 6b: +0.051 / 0.812 | 4b: +2.23 / 0.05 | **8b FREE, 6b marginal, 4b dead → ≥7b effective is the binding spec** |
| fnoise — fwd additive state noise (softmax/relax #5) | 1e-3: 0.000 / 0.975 | 3e-3: 0.000 / 0.974 | 1e-2: +0.001 / 0.970 | **FREE at 1% — looped-era 1e-3 cliff does NOT transfer to cascade** |
| divmis — divisive-norm mismatch (#4/#7) | 1%: 0.000 / 0.971 | 3%: +0.003 / 0.948 | 10%: +0.042 / 0.785 | 3% (routine matching) FREE; 10% marginal |
| rope — phase error rad (#2) | 0.01: 0.000 / 0.973 | 0.03: +0.001 / 0.967 | 0.1: +0.012 / 0.923 | 0.03 rad FREE; ~2° I/Q accuracy suffices |
| gilbert — gate gain error (#6) | 1%: 0.000 / 0.974 | 3%: 0.000 / 0.971 | 10%: +0.006 / 0.945 | **FREE at 10%** — translinear practice is comfortably inside |
| fbnoise — nudge/error-channel noise | 1e-2: 0.969 / 0.975 | **1e-1: 0.951 / 0.957** | 3e-1: 0.764 / 0.768 | **10% relative noise on the ERROR CHANNEL is FREE** (cos 0.95) — the r-indifference/large-nudge gift, now measured on cascade |
Reading: (a) the only hard constraint is crossbar weight precision (≥7b effective — inside standard
SRAM-CIM capability; 6b rescue = wave-2 quant-aware co-training); (b) everything dynamic — forward
noise 1%, error-channel noise 10%, gate/divider/phase mismatch at routine device tolerances — is
FREE at this scale. cos(EP,BP_faulted) stays ~0.97 under every non-fatal fault: the EP estimator
tracks whatever network the faults define, i.e. learning co-adapts to the fault (the analog-training
thesis in one number). CAVEAT: static probes at a trained checkpoint (eval CE + one-step gradient
direction), not training-under-fault; wave-2 = co-training with faults injected from step 0
(expectation from the literature and from (c): tolerances IMPROVE). Feeds COMPONENT_HW_MAP.md
(per-row status updated) + UIUC outreach dossier.
### RESULT 40 (2026-07-17): RIDE-V2 PROBE VERDICT — the floor-jump bug WAS the whole disease; sync-accept adopted as default insurance.
4 arms, 72M mid-stage (cent s50000 -> 60000, 10k steps): fix 3.5715 | rv2a 3.5688 (beta->1.24e-2,
0 skips) | rv2ad 3.5688 | rv2as 3.5674 (beta 1.06e-2, 0 skips).
- Bug-fixed naked ride surfs SAFELY at 72M mid (4x beta, zero guards) and edges the fixed control.
- drift-wall (d): zero interventions in a healthy climb — costless insurance.
- sync-accept (user's synchronous acceptance): best of four, more conservative beta — adopted into
the default governor stack (a + sync; d optional).
- Honest bounds: inter-ride deltas (0.001-0.004) are single-seed probe noise; the firm claims are
safety + >=control. Late-stage pair (s150000) queued to complete the picture.
ENDGAME-42 QUEUE launched on GPU0: fix_late + rv2as_late -> plain3e3 seeds 2/3 (EP-recipe
distribution, RESULT 39) -> BP lr mini-sweep 0.7e-3/1.4e-3 (fairness, RESULT 36).
### RESULT 39 (2026-07-17): SEED CAMPAIGN VERDICT — ride_s1 was a lucky draw, AND RESULT 26's "statistical zero-gap" was anchored on BP's weakest seed. CLAIM CORRECTED.
| run | s1 | s2 | s3 | mean +- sd |
|---|---|---|---|---|
| stage1b_ride (EP governor) | 1.2016 | 1.2738 | 1.2592 | 1.2449 +- 0.038 |
| stage1b_bp (twin) | 1.2311 | 1.2050 | 1.2063 | 1.2141 +- 0.015 |
(protocol note: bp_s2/s3 ran --amp like all EP arms; bp_s1 was the original fp32 run.)
1. ride's 1.2016 = the deepest dip of a HIGH-VARIANCE family (range 0.07) — the single best
number of all six runs, but by distribution BP leads (means 0.031 apart, ~2 sd).
2. ERRATUM to RESULT 26/35 zero-gap phrasing: bp_s1 (1.2311) is the WEAKEST of BP's three
seeds. Against the BP 3-seed mean (1.2141): cent-full gap +0.019, plain3e3 +0.023 —
SMALL gap, not statistical zero. The honest C512 statement until EP-recipe seeds land:
"EP within ~0.02 of the BP seed-mean; family distributions overlap at the tails."
3. NEEDED for the final number: EP-recipe seeds (cent/plain3e3 currently n=1) — queued after
the ridev2 probes on GPU0; deck S9's zero-gap line to be softened in the next revision.
4. The BP-fairness lr mini-sweep remains queued behind that (RESULT 36 protocol).
### RESULT 38 (2026-07-17): 2D UPDATE-FIELD ANALYSIS (professor's suggestion) — the finite-beta field IS non-conservative, but only where training doesn't live; EP and BP reach DIFFERENT, equally deep basins.
Method: fieldviz.py — full-model PCA plane over 27 snapshots of 5 runs (49% trajectory variance);
13x13 grid; loss contours + three update fields (BP, EP@3e-4, EP@1e-2; 2-batch averaged;
block-subspace projection); finite-difference curl; ride<->BP linear interpolation.
| field | curl RMS |
|---|---|
| BP (conservative reference / noise floor) | 4.38e-6 |
| EP @ 3e-4 (operating beta) | 4.41e-6 (= floor) |
| EP @ 1e-2 | 1.37e-5 (3.1x floor) |
Findings:
1. NON-CONSERVATIVITY IS REAL AND LOCALIZED: at beta=1e-2 a coherent positive-curl blob appears
in the steep high-loss region (large states/gradients -> large bias field c(theta)); BP and
EP@3e-4 show pure noise. NEAR THE BASINS — where training actually operates — the EP field
stays conservative-within-noise even at 10x operating beta. Same-batch BP control shows no
blob => EP-specific, not data noise.
2. Two-level echo for the dynamics paper: parameter-space curl concentrates exactly where the
loop-gain hazard lives (big sigma*||J||) — the state-space non-conservativity story reappears
one level up, scaled by beta. Training under finite-beta EP = a mildly non-gradient flow that
is gradient-like precisely in the region the governor keeps it in.
3. DIFFERENT BASINS, EQUAL DEPTH: ride(s50k) 1.4325 vs BP(s55k) 1.4156 with an 8.25 barrier
(~random-level) between them — same seed/init, methods branch at step 0 and land in linearly
disconnected but equally good minima. The EP family (plain/ride/cent) clusters in one plane
region, BP in another.
CONTROL PENDING: BP-s1 <-> BP-s2 interpolation (does BP-vs-BP also barrier? decides whether
different-basin is EP-specific or generic) — runs when the seed chain delivers bp_s2.
Cheap follow-ups queued: EP<->EP interp (expected flat); curl-vs-beta scaling curve at a
near-basin point and a steep point (the quantitative bridge figure for aep-dynamics).
Caveats: 2D slice (49% variance); curl from 2-batch-averaged fields on a 13x13 grid; barrier
statement is linear-path only (no permutation alignment attempted).
### RESULT 37 (2026-07-17): RIDE FAILS AT 72M — weight poisoning via permissive guards during beta surfing; crown-3 relaunched as PLAIN from the clean ckpt.
Timeline (fw72m_ride): healthy surf to ~48k; at 72M the governor never found the 42M-style smooth
hover — beta banged between 1.5e-4 and 1.85e-2 (rho-hat is noisy/laggy at this scale). ~54k:
first skip jolt (4->17). By 60k beta was PINNED at the cap floor (1.5e-4) yet nearly every step
drift-rejected at K=8 — relaxation diverging at 20x smaller beta than had been stable for 50k
steps => the WEIGHT STATE itself was sharpened/poisoned, not a beta-level wall. Mechanism: at
big beta, displacement (and any semi-diverged garbage) scales with beta, but the drift-accept
threshold (0.5) is beta-INDEPENDENT — near-threshold accepts during 1e-2-scale surfing carry
beta-scaled damage into the weights. 42M never showed this because its window is so wide the
excursions stayed benign. CE never recovered (val 3.77 -> 4.0-4.2, best frozen 3.5797); training
deadlocked (governor cannot cure a state disease by lowering beta).
INTERVENTION: killed at ~75k; relaunched as fw72m_plain from the last clean ckpt (s50000,
skips=3 era): plain estimator, FIXED bf_late 3e-3@0, bcap 0.9 defensive-only (ride=1.0).
Resume health: val 3.7354, zero skips, cos 0.9965. ETA ~15h.
LESSONS (ride-v2 design, to be tuned on cheap probes, NEVER on crown runs):
(a) beta-scaled accept threshold (drift_max ~ f(beta)) or update-norm clip during high-beta;
(b) climb hysteresis: after any wall contact, cooldown + re-climb at a fraction of the last
stable beta (no immediate re-surf);
(c) rho-hat smoothing (EMA) before governor decisions — the raw per-step meter is too noisy at
72M; (d) hard beta_ride headroom set from the last-known stable beta, not a fixed 30x.
Status: ride stays VALIDATED at 42M (RESULT 35); at 72M it is a failed-first-attempt with a
diagnosed mechanism — an honest boundary datum for the governor line, not a retraction of it.
ADDENDUM (same day, deeper forensics — CORRECTS the mechanism story and the intervention):
- THE FIRST WOUND WAS A CONTROLLER DESIGN BUG, not gradual poisoning: during the calm 3e-4 era
(steps 0-20k) the ride cap climbed to saturation (30x). When bf_late jumped the floor to 3e-3
at step 20000, beta = floor x cap = 0.09 ON THE FIRST HIGH-BETA STEP (log: step 20000
beta=0.0900). Everything after 20k is contaminated -> the "s50000 clean" call is RETRACTED
(it was judged by skips; damage precedes symptoms).
- The bad resume confirmed it: from s50000 with fixed 3e-3, bcap immediately crushed beta to the
cap floor (1.5e-4) and relative drift stayed 0.02-0.04 even at that tiny beta = sharpened-state
disease inherited from the lineage.
- INTERVENTION v2: fw72m_plain relaunched FROM SCRATCH (s15000-salvage saves only ~1.5h; a clean
lineage is worth more). Recipe = cent-proven schedule with plain estimator: bf_late 3e-3@20k,
bcap 0.9 defensive-only. The stale wandb run was deleted; bad-resume log kept as
fw72m_plain_badresume.log.
- ride-v2 lesson (e), the binding one: the cap multiplier composes with FLOOR JUMPS — cap must be
defined relative to effective beta (or reset/clamped at any floor change), never allowed to
pre-charge against a low floor.
### RESULT 36 (2026-07-17): PRE-REGISTRATION — ride seed campaign + fw72m_ride crown-3 + the BP-fairness note.
User call: "多跑几条 ride, 在 72M 跑 ride — 说不定真比 BP 好, 因为我们没扫 BP 的最佳 setting."
Launched:
- fw72m_ride (GPU1+3, DDP, from scratch, seed 1): PLAIN estimator + ride governor (bf_late
3e-3@20k, bcap 0.9, ride 30, up 1.01), 234k steps. Predictions: (a) governor surfs, few guard
events; (b) best <= 3.33 (plain==centered + governor edge); (c) wall-clock ~20h (plain speed
3.3 it/s vs cent 1.96). This is the 1.0x-cost crown.
- stage1b_ride_s2/_s3 + stage1b_bp_s2/_s3 (GPU0 chain): seed distributions for BOTH sides of the
comparison. Metrics: best AND tail-median AND (new) fixed large-eval on FINAL weights — both
trainers now save the final-step ckpt (protocol upgrade, this commit).
- FAIRNESS NOTE (user's point cuts both ways): the BP twin has never been tuned (mirrored EP lr/
schedule). Any EP-vs-BP ordering claim requires a BP lr/schedule mini-sweep — queued as the
next GPU0 item after the seed chain. Until then, "EP matches BP" is claimable; "EP beats BP"
is not, regardless of seed outcomes.
- FAIRNESS PROTOCOL AT SCALE (settled 2026-07-17, user Q "1B+ can't sweep — what's accepted?"):
(1) BP anchor at every scale = the PUBLISHED community recipe for the architecture (OLMo2's own
tables) + citation — stronger than any self-sweep; (2) proxy-scale sweeps (42M, 300M) for BOTH
methods validate the anchor AND produce lr-sensitivity curves that bound the "BP could be
better" risk quantitatively; (3) at 1B+ both sides run transferred settings, zero on-site
tuning — fairness = symmetric protocol, not asymmetric best-effort; (4) optional strongest
form: muP/muTransfer from the 300M rung (decide at 300M); (5) selling point: EP's extra knob
(beta) is governor-self-tuned — "one self-tuning knob at scale" vs BP's lr tables.
### RESULT 35 (2026-07-16): FULL-EPOCH TRIO SEALED — 1.0x-cost zero-gap confirmed; the ride governor wins on BOTH metrics; dip-statistics caveat formalized.
| run (C512 full epoch) | best val | tail median (last 6k) |
|---|---|---|
| BP twin | 1.2311 | 1.2823 |
| **stage1b_ride (governor)** | **1.2016** | **1.3034** |
| stage1b_cent (centered) | 1.2334 | 1.3241 |
| stage1b_plain3e3 (plain, 1.0x) | 1.2371 | 1.3259 |
| stage1b_est15 (switch rule) | 1.2374 | — |
- plain3e3 1.2371 = the zero-gap-class result at 1.0x estimator cost: RECIPE SIMPLIFICATION
CONFIRMED (plain single-sided + big-beta schedule; centered's full-epoch edge 0.0037 < band).
- ride beats every EP arm on BOTH best AND median (median edge over cent: 0.021) — the governor's
dynamic schedule (big-beta bulk, auto-taper endgame, beta down to 1.7e-4 at the end; 20 gn-guard
skips in 58.8k) genuinely improves the steady state.
- HONESTY RULE (formalized): ride's best 1.2016 < BP's 1.2311 is VARIANCE-ASSISTED (beta surfing
raises val variance -> deeper dip harvest under the best-of-noisy-val convention). By tail
median BP still leads ride by 0.021. Do NOT claim EP<BP from this. Paper-grade numbers move to
a fixed large final-eval protocol; the internal ledger keeps the best convention for
consistency with all prior entries.
### RESULT 34 (2026-07-16): BETA-BUYBACK — partial. Quantization tax shrinks with beta but does not vanish.
qb6_b1e2 (6-bit compute quant, beta 1e-2): 1.2794 vs beta-matched control 1.2571 -> tax +0.0223,
down from +0.0348 at beta 1e-3. Direction confirmed (a wall-1 epsilon component exists), magnitude
~1/3 reduction for 10x beta — a second, non-beta-scaling component remains (weight-grid roughness
is a function-space perturbation, not just read noise). Spec consequence: the 8-bit operating
point stands; do NOT plan on beta rescuing 6-bit devices; ENOB acceptance bar stays ~7.
### RESULT 33 (2026-07-16): TRIPLE VERDICT — centered CE-neutral at 72M too; CE-vs-beta monotone through 1e-2; the RIDE GOVERNOR beats every static beta.
1. 72M A/B (resume fw72m_cent s175000 -> 185000, single-GPU B24, identical schedule):
plain 3.4288 vs centered 3.4289 — IDENTICAL. The 42M decoupling replicates at crown scale:
the recipe does not need centered. plain + governor = 1.0x cost at 72M.
2. Static beta dose-response (plain, 42M tail): 2e-3 1.2611 / 3e-3 1.2590 / 5e-3 1.2578 /
1e-2 1.2571; centered@1e-2 1.2569 (neutral again). CE STILL IMPROVING at 1e-2 — no bias bite
anywhere in the explored range; the 42M window extends beyond 1e-2.
3. arm_ride30 (two-sided governor, 30x headroom): best 1.2562 — BEATS every static arm. The
governor surfed dynamically: 3e-3 -> ~6e-2 excursions mid-tail -> taper to ~7e-4 at the end,
ZERO guard events, cos 0.992 held. It discovered a dynamic beta schedule no hand-tuning found
(high-beta bulk + late taper aligned with the cosine-LR endgame).
- RECIPE CONSEQUENCE: estimator upgrades (centered/centfast/centmirror) demote to cos-telemetry
tools and insurance; the working recipe trends to PLAIN single-sided + ride governor = 1.0x
estimator cost. 8B ledger returns to the 3.2x base.
- Full-epoch validations: stage1b_est15 SEALED 1.2374 (+0.0063 vs BP — the beta-coupled switch
rule lands at the seed-band edge; consistent with the big-beta cluster 1.233-1.238);
stage1b_plain3e3 (46k+) and stage1b_ride (GPU3) in flight.
- beta-buyback arm LAUNCHED (qb6_b1e2: 6-bit compute quant at beta 1e-2; RESULT 30's mechanism
prediction — if the +0.035 tax shrinks, quantization noise is confirmed as a wall-1 epsilon
term purchasable with beta; control = bab_p1e2 1.2571).
### RESULT 32 (2026-07-16): CROWN RESEALED — fw72m_cent 3.3318 vs BP 3.2884: honest gap 0.043, 10x below the blown-schedule number.
fw72m_cent complete: 234k steps / 1.44B FineWeb tokens, from scratch, fully BP-free, DDP 2xA6000.
| | best val CE | note |
|---|---|---|
| BP twin | 3.2884 | @195.6k |
| **fw72m_cent** | **3.3318** | @203.7k — still improving in the final quarter |
| original fw72m | 3.7117 | @104.8k, then 90k-step starve + 195k blow |
- Registered predictions (RESULT 24): (a) no blow — ZERO skipped steps in 234k ✓; (b) beats 3.7117
✓ (by 0.38); (c) gap 0.25-0.35 — BEAT 8x (0.043).
- beta history: 3e-4 ramp (first 20k) -> 3e-3 for ~214k steps; the ride never ended — bcap grazed
twice (2.76e-3 / 2.65e-3 single lines) and recovered instantly. cent's trajectory NEVER met the
wall the original hit at 1e-3@195k: the ceiling is trajectory-specific, and the healthy
window-riding path kept its margin. (Honest note: this also means the 72M ceiling-descent curve
from the original run does NOT transfer across recipes.)
- Best kept improving to 203.7k (no 105k-style freeze): the SNR account balanced.
- Samples (fw72m_cent_s205000): FineWeb register, "can-read" PASS (runs/fw72m_cent_samples.txt).
- HEADLINE: largest BP-free transformer LM (72.11M x 1.44B tokens), gap to matched BP twin 0.043
(~1.3% relative), one governor knob, standard architecture, standard inference.
### RESULT 31 (2026-07-16): DECOUPLING VERDICT — the tail win is ALL beta; centered is CE-neutral at 42M tail. RESULT 22's mechanism reading corrected.
The missing arms7 control (user-demanded): plain single-sided @ beta 3e-3 flat tail.
| arm (45k->55k) | best | note |
|---|---|---|
| ctl (plain @1e-3) | 1.2678 | |
| **arm_plain_f3e3 (plain @3e-3)** | **1.2590** | = centered to the 4th decimal |
| arm_cent_f3e3 (centered @3e-3) | 1.2591 | |
| arm_centmirror (mirror @3e-3) | 1.2590 | downstream parity of the mirror trick CONFIRMED |
beta share of the tail effect: 101%. Readings:
- RESULT 22's causal story ("O(beta^2) bias lets beta ride high") is REFUTED at this scale: plain
rides 3e-3 equally well. The O(beta) secant bias at 3e-3 is measurable in cos but COSTLESS in CE
— third independent confirmation that direction-space error does not price CE; only SNR does.
- The zero-gap driver in stage1b_cent (1.2334) is therefore suspect of being pure-beta too:
**stage1b_plain3e3 full epoch queued** (post-crown, GPU1/3). If it lands ~1.233, the C512
zero-gap recipe simplifies to plain + big-beta = 1.0x cost, and centered/centfast/centmirror
demote to cos-telemetry tools pending a scale where bias binds.
- 72M check queued (post-crown A/B): resume fw72m_cent s175000, 10k steps, centered-continue vs
plain-switch at identical schedule — decides whether the crown recipe needs centered at all.
- Auto-triggered beta ablation RUNNING (share>=0.5 rule): plain @ {2e-3, 5e-3, 1e-2} + centered
@1e-2 — maps CE-vs-beta and where plain's O(beta) bias finally bites; 1e-2 arms double as
42M wall-2 probes (guard telemetry free).
### RESULT 30 (2026-07-16): QUANTIZATION Delta-vs-Delta MATRIX — equal at the operating point, EP-SPECIFIC tax below it.
BP mirror suite complete (bp_qctl baseline 1.2171 — resumed-tail+amp beats the original fp32 twin,
which is exactly why in-family baselines were required; user's methodology point vindicated).
| injection | Delta_EP (vs 1.2678) | Delta_BP (vs 1.2171) | EP/BP ratio |
|---|---|---|---|
| qup 10-bit | +0.012 | +0.003 | ~4x |
| qup 8-bit | +0.042 | +0.015 | ~3x |
| qup 6-bit | +0.092 | +0.068 | ~1.4x |
| qcomp 8-bit | **+0.002** | **+0.000** | **both ZERO** |
| qcomp 6-bit | +0.035 | +0.004 | ~8x |
| qcomp 4-bit | +0.140 | +0.061 | ~2.3x |
Readings:
1. AT THE T64 OPERATING POINT (8-bit compute + digital master): quantization is free for BOTH.
The BP QAT toolbox transfers AT this point; T64 green light unconditional on this axis.
2. BELOW it, the tax is EP-SPECIFIC (1.4-8x faster degradation): quantization roughness enters the
finite-beta measurement chain as an extra epsilon in the wall-1 SNR term (the estimator protects
an O(beta)-scale signal; BP has no such small signal). A blanket "EP inherits BP quantization
behavior" claim is REFUTED below 8 bits — publishable Stage-0 finding.
3. MECHANISM PREDICTION (designed, pending GPU): bigger beta should buy back quantization
tolerance (noise-to-displacement ratio ~ 1/beta) — one arm: qcomp6 + beta 1e-2 tail vs qcomp6@3e-3
(+0.035). If confirmed, the window story absorbs quantization as another epsilon term.
4. Procurement consequence: acceptance ENOB bar STAYS ~7 (do NOT relax to 6 on BP intuition —
EP@6-bit compute is +0.035 real).
### RESULT 29 (2026-07-16): qcomp VERDICT — 8-bit COMPUTE quantization is FREE (T64 green light); centmirror ships (1.39x).
qcomp arms (compute on DAC-grid weights, fp32 master = word-streaming / shadow accumulation),
same protocol, vs ctl 1.2678:
| bits | qcomp (T64 scenario) | qup (naked resident) |
|---|---|---|
| 8 | **1.2696 (+0.0018 = ZERO)** | 1.3096 (+0.042) |
| 6 | 1.3026 (+0.035) | 1.3598 (+0.092) |
| 4 | 1.4077 (+0.140) | — |
- 8-bit DACs + digital master = tax-free at 42M: the Y3/pc AD7528 line and the T64 word-streaming
architecture pass gate #1b. 6-bit compute has a real but moderate tax; 4-bit heavy.
- BP mirror suite RUNNING (bp_qctl 49.5k, then qup10/8/6 + qcomp8/6/4): the Delta-vs-Delta verdict
(EP-specific or generic) lands tonight; RESULT 28's naked-cell reading stays provisional till then.
- ESTIMATOR COST ENGINEERING sealed: --centmirror (the -beta pass initialized as the MIRROR of the
+beta solution at the shared free anchor + 1 polish sweep; second free pass and K-1 sweeps
deleted). Gradtest cos 1.000000000 vs sequential centered (relerr 2.2e-5). Quiet bench B12/amp:
plain 4.389 it/s | sequential centered 2.547 (1.72x) | centfast 2.684 (1.64x) | **centmirror
3.169 (1.39x)**. With est_late@80%: amortized ~1.08x — centered is now essentially free at scale
(8B ledger: 3.2x -> ~3.45x vs BP).
### RESULT 28 (2026-07-16): STAGE-0 HW GATE #1 — naked analog-resident updates need >10 bits; T64's word-streaming scenario measured next.
Protocol: arms7 (resume s45000 -> 55000, ctl 1.2678). --qup_bits = weights snapped to an ABSOLUTE
per-tensor grid after every update, stochastic rounding (= analog-resident cells, NO shadow).
| levels | best CE | tax vs ctl |
|---|---|---|
| fp32 (ctl) | 1.2678 | — |
| 10-bit | 1.2795 | +0.012 |
| 8-bit | 1.3096 | +0.042 |
| 6-bit | 1.3598 | +0.092 |
Monotone dose-response; clean (zero guards). Readings:
- NAKED resident-cell training (updates quantized at write, no digital shadow) needs >=10-12 bits
— this is the measured version of why in-memory analog UPDATE machines die on write resolution.
- T64 is NOT this scenario: word-streaming keeps the fp32 master in Zynq DDR; the 8-bit DAC is a
COMPUTE element. The correct T64 gate = --qcomp_bits (compute on grid-snapped weights,
fp32 master gets updates; mathematically identical to resident-cells + 24b shadow accumulator).
qcomp8/6/4 arms running (gate #1b).
- Procurement impact: the Y3/pc AD7528 line is unaffected either way (its role is compute);
the acceptance ENOB bar keys on the qcomp verdict.
- CAVEAT (user, 2026-07-16): the fp32-EP control conflates "quantization tax" with "EP-specific
quantization tax". BP MIRROR SUITE chained (bp_qctl + qup10/8/6 + qcomp8/6/4 on the BP twin,
same resume protocol). Decision metric = Delta_EP(bits) vs Delta_BP(bits): equal deltas =>
generic quantized-training problem => the BP QAT/shadow toolbox transfers to EP unchanged.
Reading-one above ("naked cells need >=10-12b") is PROVISIONAL until the BP control lands —
naked quantized writes likely hurt BP comparably.
### RESULT 27 (2026-07-15): K-SATURATION ACROSS TRAINING (Alexi's challenge answered with data).
Challenge (Alexi Gladstone): K=3 nudge sweeps seems very few; as training roughens the landscape,
more sweeps may be needed absent a convexity argument.
Probe: probe_blockcos.py on fw72m_cent ckpts s5000/s50000/s100000, K in {1,2,3,8}, beta 3e-3, 4 batches.
| ckpt | K=1 | K=2 | K=3 | K=8 |
|---|---|---|---|---|
| s5000 | 1.0000 | 1.0000 | 1.0000 | 1.0000 |
| s50000 | 1.0000 | 0.9998 | 0.9997 | 0.9997 |
| s100000 | 1.0000 | 0.9994 | 0.9995 | 0.9995 |
Verdicts: (a) fixed point reached by K~2-3 at EVERY stage; K3=K8 to 4 decimals — no K-starvation
trend over 100k steps. (b) What grows with training is the FIXED POINT's own O(beta) transmission
bias (1.0000 -> 0.9995) — the window story, not truncation; K cannot treat it, beta/centered can.
(c) ANCHOR stays exactly 1.0000 at all stages: RESULT 25 decomposition holds at 72M throughout.
(d) K=1 constant 1.0000 = the frozen-state BP degeneracy (digital shortcut, not physics).
(e) Cost note: K=2 is already ~at the fixed point -> potential ~25% nudged-phase saving
(validation item, recipe unchanged for now). The correct response to a roughening landscape is
governed beta (the certificate is the live rho-hat spectral meter), not more sweeps — at the
edge, extra sweeps amplify (w2_adapt).
### ERRATUM to RESULT 21 (found 2026-07-15): the original fw72m's best val 3.7117 was first hit
at step 104,800 (log line 1055), NOT at s185000 (that was the checkpoint used for sampling).
Best-val progression: 3.8769@30.9k -> 3.8328@61.3k -> 3.8004@75.3k -> 3.7789@83.3k ->
3.7117@104.8k -> flat for the remaining ~90k healthy steps until the 195k blow. The original
schedule was therefore SNR-starved from ~105k on (wall-1), before it was killed by wall-2.
Strengthens the window story; blowup figure annotation corrected. (fw72m_cent at the same
104.8k mark: best 3.4523 and still descending.)
### RESULT 26 (2026-07-15): C512 ZERO-GAP SEALED — full-epoch centered erases the 0.050 gap.
stage1b_cent (C512 42.75M, --est centered whole epoch, bf_late 3e-3@15k, amp, seed 1, GPU0)
completed all 58800 steps: best val CE 1.2334.
| run | best | gap vs BP |
|---|---|---|
| BP twin (stage1b_bp_muon) | 1.2311 | — |
| stage1b_cent (THIS) | 1.2334 | +0.0023 << seed band ±0.006 -> STATISTICAL ZERO |
| cent tail-only arm (45-55k) | 1.2591 | +0.028 |
| original EP (plain, decay floor) | 1.2808 | +0.050 |
Decision tree (RESULT 23 pre-reg): strongest branch hit — the whole 0.050 was a
recipe/noise account. ZERO-GAP now holds at C128, C192, and C512 (C256/C384 tiers pending
seeds). The ladder's "fit-depth tax" is REMOVABLE by the window recipe at this scale.
Note: in-run gate_cos still declines late (wandb strip) while CE stays matched — third
confirmation that direction-cosine is not the CE-relevant metric (C128 lesson).
Cost: centered whole-epoch 1.72x. est_late would buy most of it back; the switch-point rule
is the remaining tuning question. fw72m_cent (35%, best 3.5560, leading by 0.24) tests the
same claim at 72M/FineWeb.
### EXTERNAL NOTES (2026-07-15, user-relayed from a sibling Hopfield-EP library project):
1. Hard-sigmoid Hopfield needs state CLAMPING: units with drive>1 equilibrate exactly ON the
rho breakpoint (sliding-mode equilibrium); unclamped discrete Euler chatters around it with
O(1) amplitude forever. -> Taxonomy exhibit #3 for the dynamics paper (solver-artifact family:
Hopf / loop-gain / sliding-mode chatter). -> OPERATIONAL RULE for Stage-0 fault injection:
when injecting rail/saturation, CLAMP states — otherwise you measure integrator chatter,
not device physics.
2. Saturated units make finite-beta EP legitimately diverge from BPTT (measured 80-130 deg):
dead units are invisible to BP, the nudge can revive them. NOT a bug — a hard-rho property.
-> METHODS RULE: gradient-equivalence gates require smooth activations (our gates comply).
-> Discussion candidate: finite-beta as exploration/repair (dead-head revival probe, low prio).
-> HW note: at device rails, EP's systematic deviation points OFF the rail — likely a
robustness bonus for analog training.
3. Classic EP + momentum collapses (MNIST 85% -> 48%; plain SGD required): momentum integrates
the estimator's non-zero-mean bias. UNIFIES with RESULT 22's dose-response: bias/signal large
-> fatal (their setting); small (governed beta + centered, mom 0.95) -> harmless; pushed to
0.99+ at low-SNR tail -> harmful again (+0.019/+0.059/+0.076). Momentum tolerance is NOT an
EP property — it is purchased by bias control.
### RESULT 25 (2026-07-15): ERROR-SOURCE DECOMPOSITION — the bias lives ENTIRELY in between-block transmission; within-block reads are exactly lossless.
Probe: probe_blockcos.py (GPU0, s45000 C512 ckpt, 4 batches, fp32). Exact factorization
{anchor: free/nudged} x {cotangent: exact-c/EP-transmitted-d}; all four corners share one code
path (selfcheck (free,c) vs BP = 1.000000).
| corner | meaning | cos vs BP (beta 1e-3) |
|---|---|---|
| (nudged, d) = EP | the training estimator | 0.9987 |
| (free, d) = TRANS-only | transmission error alone | 0.9987 (== EP, per-block profile identical) |
| (nudged, c) = ANCHOR-only | local-read displacement alone | 1.0000 (1.000 x12 blocks) |
Depth profile (0=bottom..11=top): 1.000 at top -> 0.997 at bottom, ~3e-4 loss per hop,
monotone compounding — the between-block fingerprint (also explains why L3->L12 gates barely
differ: 12 hops x 3e-4).
K-sweep twist: K=1 -> EVERYTHING 1.0000 (d derived at free states = exact vjp chain = BP
reproduced through block-local ops). K=3 = K=8 = 0.9987/0.9988 -> the error is the O(beta)
DISPLACEMENT OF THE SELF-CONSISTENT nudged solution (saturates immediately; NOT settling
truncation — K8 doesn't help; NOT local curvature — ANCHOR=1). beta 1e-3 vs 3e-3: 0.9987 vs
0.9989 (insensitive — this bias term is far below the noise term's beta-sensitivity).
Readings:
- ANSWER to "block内EP过程 vs block间PC连接": the bias is 100% transmission (PC-connection side);
the within-block theta-read at displaced anchors is exactly free. (Digital-twin statement; on
analog hardware within-block reads acquire device noise instead.)
- WHY CENTERED WINS, mechanistically: +/-beta averaging symmetrizes the self-consistent
displacement — kills the odd O(beta) term of exactly the one error source that exists.
- The K=1 degeneracy is a digital-only shortcut (free-state vjp chain = BP-with-local-ops; a
referee would rightly kill the BP-free claim for K=1). K>=2 = the physically-faithful
self-consistent settle; its bias price is 0.9987 = not the binding constraint (noise is).
- C128's gate cos 0.805 (ladder) is the NOISE term at small gn, not this 0.999-level bias;
RESULT 23: that noise only costs CE at deep fit.
### RESULT 24 (2026-07-14): fw72m_cent LAUNCH — window-aware centered crown rerun (pre-registered).
User call: "72m从头跑centered试试看". From-scratch 234k-step FineWeb rerun applying RESULT 22:
original fw72m flags EXCEPT --est centered, --bf_late 3e-3 --bf_late_at 20000 (ride the arms-winner
beta instead of 1e-3@60k), --beta_cap_rho 0.9 (v3 threshold: attack only near true divergence;
v2's 0.7 conflated slow contraction and starved beta to 2e-5 in the c2 segment). Early phase keeps
the stock ramp + 3e-4 floor (the early beta dip is a sigma-transient stabilizer, not a bias fix).
Correctness gate BEFORE launch: ddp_gradtest with centered+amp — cos(DDP 2-rank, single-GPU
big-batch) = 0.999987714, relerr 5.0e-3 (bf16 band; fp32 harness was 0.999999999). Chained behind
the gap-scaling ladder on GPU1+3 (launcher polls GS markers). Cost: centered ~1.8x step time.
Predictions: (a) no 195k-style blow — beta_t = min(3e-3, ceiling(t)) tracked by bcap instead of a
fixed floor crossing the falling ceiling; (b) best val beats 3.7117 (bias down one order at matched
loop gain + tail SNR up); (c) honest gap vs BP twin 3.2884 lands ~0.25-0.35 (registered guess).
Failure mode to watch: bcap-0.9 rides too close to the edge -> guard storms (kretry/drift) without
progress; lever = drop threshold toward 0.8, resume from last 5k ckpt.
### RESULT 23 (2026-07-14): GAP-SCALING SUITE — PRE-REGISTRATION (launched, results pending).
Question: how does the EP-BP epoch gap scale with model width under the FROZEN stage1b recipe?
Design: C ∈ {128, 192, 256, 384} x L12 H8 T256 B24, tinystories_bpe, full data-matched epoch
(58800 steps — identical token stream for every size), EP = frozen stage1b recipe + --amp
(lr 1e-3, beta 3e-3, K3, floor 3e-4, bf_late 1e-3@15k, kretry 8, olmo2, wd 0.1, muon, cosine,
warmup 500, seed 1); BP twin = casc_bp_train.py mirrored flags + --amp. Anchor points already
measured: C512 = 1.2808 vs 1.2311 (gap 0.050); fw72m (different data) 3.71 vs 3.29.
Runs: gs_ep_c{128,192,256,384} + gs_bp_c{...}, wandb project ept-tinystories-gapscaling.
PRE-REGISTERED PREDICTIONS (before any result):
- H-A (user hypothesis): bigger = more robust to update noise -> gap DECREASES with C.
- H-B (loop-gain): wall-2 gain grows with sigma*||J|| chains -> gap INCREASES with C at frozen beta;
expected WEAK below 42M (window still wide — zero skips at C512).
- H-C (detune): recipe tuned at C512 -> smallest C off-tuned -> gap inflated at C128 for
uninteresting reasons.
- Registered call: mild H-A trend, gap(C128) ~= 0.06-0.10 falling to 0.050 at C512, possible C128
outlier from H-C. Falsifier that matters: monotone INCREASING gap -> H-B active even sub-42M ->
per-size beta recalibration becomes mandatory before any scaling claim.
- Noise floor: seed band ~±0.006 (amp 3-seed); single seed per size -> differences <0.01 are NOT
interpretable; if the trend lands inside the band, extremes get 3 seeds before any conclusion.
RESULTS (2026-07-15, all 8 runs sealed, wandb ept-tinystories-gapscaling 8/8 live-streamed):
| C | params | EP best | BP best | gap | final gate cos | skips |
|---|---|---|---|---|---|---|
| 128 | ~3.4M | 1.5562 | 1.5519 | 0.0043 (=0 in noise) | 0.805 | 25 (all gn) |
| 192 | ~6.9M | 1.4257 | 1.4222 | 0.0035 (=0 in noise) | 0.996 | 0 |
| 256 | ~11.4M | 1.3502 | 1.3353 | 0.0149 | 0.998 | 0 |
| 384 | ~24.4M | 1.2898 | 1.2766 | 0.0132 | 0.996 | 0 |
| 512 | 42.75M | 1.2808 | 1.2311 | 0.0497 | ~0.994 | ~0 |
(128-384 pairs amp-consistent; C512 anchor pair fp32-consistent; amp lossless ±0.006 -> tiers comparable.)
VERDICT — my registered call was WRONG, and so is every simple hypothesis on the list:
- H-A (bigger = more noise-robust -> gap shrinks): FALSIFIED. Gap RISES in tiers toward C512.
- My registered call (mild H-A, 0.06-0.10 at C128): FALSIFIED. C128 gap is ZERO.
- H-C (recipe detuned at small C -> C128 inflated): FALSIFIED. Smallest sizes are the cleanest.
- H-B as loop-gain/wall-2: NOT the mechanism here — zero skips at 192-384, no guard activity,
cos flat ~0.996 across 192-384. Nothing wall-2-shaped below 42M.
- The pattern that survives: the EP tax tracks FIT DEPTH, not width per se. Capacity-bound runs
(C128/192, high floor) pay ~nothing; as runs become optimization-bound the tail-SNR tax appears
(0.013-0.015 at 256/384) and compounds at C512 (0.050) where gn falls lowest. The C128 anomaly
nails the point from the other side: gate cos 0.805 + 25 gn-guards, yet ZERO gap — direction
noise alone does not cost validation CE when the loss floor is capacity-set. Consistent with
RESULT 22: the binding constraint is late-phase SNR at low |g|, and centered@big-beta (which won
exactly there) is the validated counter. fw72m_cent (RESULT 24, running) tests it at 72M.
- Caveats before this becomes a paper figure: single seed per size (256/384 gaps ~2x band — likely
real, certify with 3 seeds at C256 and C512); gap measured at matched STEPS on the same token
stream (matched-data, not matched-compute); C512 anchor recipe is the tuning point.
### RESULT 22 (2026-07-14): TAIL-SNR SEVEN ARMS — centered estimator at BIG beta WINS; momentum-on-ghat REFUTED.
Setup: resume stage1b_ep_muon_s45000.pt, run 45k->55k (10k tail steps, the low-|g| regime where
wall-1 bites), all --amp, common recipe; one knob per arm. Reference: original run at s55000 = 1.2808
(fp32; data order differs after resume, so judge arms vs arm_ctl, not vs 1.2808).
| arm | tail beta | knob | best val CE | last gate cos | verdict |
|---|---|---|---|---|---|
| arm_ctl | 1e-3 flat | none (muon .95) | 1.2678 | 0.994 | baseline |
| arm_cent_f3e3 | 3e-3 flat | --est centered | **1.2591** | **0.997** | **WINNER (-0.009)** |
| arm_adamw_f1e3 | 1e-3 flat | --opt adamw | 1.2664 | 0.994 | tie (-0.001) |
| arm_rich_f1e3 | 1e-3 flat | --est richardson | 1.2830 | 0.986 | LOSES (+0.015) |
| arm_mom99_f1e3 | 1e-3 flat | muon_mom 0.99 | 1.2867 | 0.994 | LOSES (+0.019) |
| arm_mom99_f3e4 | 3e-4 flat | mom 0.99, beta/3 | 1.3266 | 0.993 | LOSES (+0.059) |
| arm_mom995_f1e4 | 1e-4 flat | mom 0.995, beta/10 | 1.3440 | 0.973 | LOSES (+0.076) |
Readings:
- CENTERED at 3x beta wins BOTH CE and cos: O(beta^2) bias lets beta ride high -> readout noise
/3 -> SNR up. Cost: 2 nudged phases, measured ~1.8x step time (15.1 -> 8.2 it/s). THE key that
opens the wall-1 tail lock.
- MOMENTUM-on-ghat REFUTED in all three doses: at matched beta it loses 0.019; using momentum to
BUY lower beta (the sqrt-N averaging idea) loses monotonically more (0.059, 0.076). The noise
is not zero-mean-averageable at the update level the way the hypothesis needed (Muon
orthogonalization + staleness at decaying LR).
- Richardson loses at matched beta: the 2g(b)-g(2b) combination amplifies variance ~sqrt(5)x —
strictly dominated by centered-at-big-beta.
- AdamW == Muon at the tail (1.2664 vs 1.2678): the NS-orthogonalization noise-amplification
suspicion is NOT confirmed; no reason to switch (Muon carried the 0.050 epoch gap).
- ctl at FLAT 1e-3 (1.2678) beats the original decaying schedule at s55000 (1.2808): more evidence
the tail wants BIGGER beta, not smaller — consistent with the rising SNR floor picture.
- CROWN-RERUN NOTE (72M and up): wall-2 caps beta from ABOVE there, so "centered + big beta" must
become "centered + beta pinned at the bcap ceiling" — bias falls to O(beta^2) at unchanged loop
gain. Momentum is off the table; bcap-v3 (attack threshold ~0.92) remains the other half.
### RESULT 21 (2026-07-14): CROWN SEALED — 72.11M x 1.44B tokens, fully BP-free, largest to date.
fw72m_c2 reached 234,000 steps = the full Chinchilla budget (segments: 0-195k original schedule +
195-215k blow-recipe + 215-234k bcap-v2; final segment skips=1, drift 0.016 — the wall managed).
**Best model: val CE 3.7117 (s185000, ~1.13B tokens) vs BP twin 3.2884 -> headline gap ~0.43**
(disclosed as un-recalibrated transfer; mechanism = beta window, RESULT 19/20). "NENG-KAN" GATE
PASSED on FineWeb register: fluent, on-topic, syntactic English (factual coherence not expected at
72M on open web; BP twin equally confused). CLAIM NOW LIVE: **the largest neural network fully
trained without backpropagation to date (72.11M > KHS 62.7M), and the first transformer LM at that
scale** — crown + first stack together. Samples: runs/fw72m_samples.txt; gen tool now data-aware.
wandb: team eqprop-llm-training, split projects (ept-tinystories-42m / ept-fineweb-72m) + reports;
workspace default-visibility gotcha (newest-10) fixed by replaying headline runs last.
### RESULT 20 (2026-07-14): WALL-ZONE PROBE VERDICTS — damping REFUTED (2 doses + adapt), beta-down SAILS; crown completion launched.
Six arms, s195000 -> 201000 (the full crossing zone), identical data/recipe otherwise:
| arm | val@201k (best) | skips | drift@end | verdict |
| ctl floor-1e-3 | 4.55 (3.87) | 611 | 0.460 | crossing REPLICATED (probe validity) |
| geta07 damp-0.7 | 4.57 (3.90) | 2373 | 0.481 | WORSE than ctl — damping refuted, dose 1 |
| **blow floor-3e-4** | **3.94 (3.82)** | **6** | **0.015** | **sails the wall; best quality of all arms** |
| geta05_k5 | 4.25 (3.89) | 3 | 0.451 | still at ceiling — damping refuted, dose 2 |
| adapt (relax_tol, kmax 12) | 5.79 diverging (killed) | — | 0.494 | iterate-longer AMPLIFIES a divergent map (12 sweeps of gain>1 vs 3) — third monotone-spectrum witness |
| bcap v1 (rho-cap) | 4.12 (3.91) | 0 | 0.013 | SURVIVES but starves: cap slammed beta to 2e-5 (meter reads noise/noise~1 at tiny residuals -> never recovers). v2 needs an absolute-scale gate on rho + slower attack |
CONCLUSIONS: (1) spectrum is MONOTONE-POSITIVE (damping mathematically can't fix; 3 independent
witnesses); (2) beta-reduction is THE working lever (loop gain ~ beta, linear); (3) the wall-1 fix
(raising the floor to 1e-3) directly CAUSED the wall-2 crossing — the two walls are one beta-window
story; (4) beta 3e-4 is NOT SNR-starved at this scale (blow's best 3.82 beats ctl's pre-wall
plateau) — the "floor must be 1e-3" calibration was another absolute-constant transplant error.
LAUNCHED: fw72m_c = crown completion from s195000 with the blow recipe (late floor 3e-4), 2xDDP,
ETA ~3.3h; arms7 (tail-SNR momentum/centered/richardson/adamw suite) sequential on GPU1 overnight.
### RESULT 19 (2026-07-14): WALL-2 THEORY SESSION — loop-gain decomposition, the beta WINDOW, and three new controllers.
**Mechanism formalized.** The nudged solve is a fixed-point iteration whose per-sweep error gain
factorizes as **rho ~ beta x ||output curvature|| x ||down J^T chain|| x ||up J chain||** (follow the
error once around the clamp-closed loop: top-force Hessian ~ sigma(W_out)^2, force chain down,
rebuild chain up). Feedforwardness does NOT protect the iteration — the beta-clamp + force chain
CLOSE a loop through the stack. The continuous flow stays unconditionally stable (solver wall, not
physics wall; analog has no ceiling). Confirmations: f3e3 (3x beta -> earlier crossing), w2_blow
(beta down -> drift 0.062->0.027), sig telemetry (sigma 430 vs stage1b ~90 => curvature factor ~20x).
**The beta operating WINDOW**: beta_min (wall-1 SNR floor, rises as true grad shrinks) < beta <
beta_max (wall-2 loop-gain ceiling ~ margin/(sigma^2 ||J||^2), falls as training sharpens). fw72m
died because the fixed floor 1e-3 ended up ABOVE the falling ceiling. Window at 195k was still OPEN
below 1e-3 (blow healthy AND beating ctl on val) — the crash was constant-transplanting, not a
closed window.
**Probe mid-flight verdicts (s195000 -> 201k):** ctl replicating the crossing trajectory; blow
(3e-4) healthiest (drift 0.027, val 3.909 < ctl 4.073); geta07 FAILING (drift pinned 0.498, val
4.236) => monotone/positive-spectrum divergence suspected — damping structurally ineffective there;
geta05_k5 = second damping dose (clean refutation if it also fails); w2_bcap + w2_adapt chained.
**New machinery (committed):** (1) adaptive relax (--relax_tol: sweep-to-tolerance + rho-triggered
geta backtrack + FINAL FULL-STEP graphed round — the E-read identity (z-o)=d REQUIRES undamped
last substitution; mixing there leaks iteration residual into E (gn 1e5 bug, caught by smoke));
(2) rho^ meter (per-sweep residual ratio = free live loop-gain gauge, GOV['rho']); (3)
**beta-cap-by-loop-gain (--beta_cap_rho): rho^>thresh -> cap *= 0.8, cap OVERRIDES the floor**
(the ceiling can sit below the floor near the wall; survival first). Paired smokes at the wall
ckpt: adaptive 0.771 vs legacy 0.754 cos (no regression).
**Control-map placement (aep-dynamics toolbox, second in-vivo transfer):** old drift>0.5 guard =
lagging column (silent through all precursors); rho^ servo = leading/online column; candidate
construction-column addition = **sigma-cap on W_out** (one clamp hits BOTH walls' drivers: the
wall-2 curvature factor AND the wall-1 governor collapse). K exonerated again at 72M (K3 vs K8
cos 0.910 vs 0.899, probe at s140000).
### RESULT 18 (2026-07-14): WALL-2 RETURNS AT SCALE — fw72m diverged at ~195k steps; f3e3 confirms beta-stress.
Timeline (fw72m, 72M/FineWeb/32k): healthy to 168k (drift 0.013-0.017, skips 0, best val 3.7117
@~184k ~= 1.13B tokens); precursor drift SPIKE 0.044 @172k (transient); boundary contact 192-196k
(drift 0.055-0.069, first skips); MASS CROSSING @200k (drift pinned 0.46-0.475 vs guard 0.5,
skips +1000/4k = 25% reject rate, val 3.98 -> 5.5 divergence on the biased surviving subset).
**f3e3 branch (floor 3e-3 from 140k) crossed the SAME wall EARLIER and harder (drift rejects 14.7k,
train 27) — nudged displacement ~ beta => beta is the relaxation stress amplifier. The user's
"beta 大了不收敛" is this, live.** Both runs killed (ckpts intact to s215000; best-val assets
preserved). LESSONS: (1) the 42M/TinyStories architecture cure (norm placement) DELAYED the
crossing past 58.8k there but did NOT eliminate the mechanism — theta drift crossed at 195k in the
bigger/harder regime; "wall-2 ELIMINATED" is rescoped to "wall-2 delayed beyond horizon at 42M/TS".
(2) drift-creep + spike is the leading indicator (the aep-dynamics control-map discipline is now
LOAD-BEARING for the LLM line — first in-vivo transfer of the paper's machinery at scale).
(3) My blowup watchers were blind (awk field bug, $6='val' string) — fixed pattern: grep -oE.
FIX PROBES (running, from healthy s195000 through the full wall zone to 201k): w2_ctl (replicate),
w2_geta07 (damped mixing 0.7 = the principled contraction restorer), w2_geta05_k5, w2_blow
(floor back to 3e-4 = beta-stress direct test). Crown status: best ckpt 3.7117@1.13B tokens is a
trained artifact but the clean crown re-run waits for the fix verdict.
### RESULT 17 (2026-07-13): fw72m LAUNCHED (the 62.7M-crown run) + size ladder complete + resume upgraded.
- **fw72m**: 72.11M (L12 C512 @32k vocab) x 1.44B FineWeb-Edu tokens (Chinchilla), --amp, first NCCL
2-GPU DDP production run (GPU0+3, B12/rank = global B24 preserving recipe semantics). Startup:
world=2, cos 0.9999, zero skips, **2.92 it/s -> ETA ~22h**. Crown context: KHS VGG10 = 62.7M
(verified from their Table 6: convs 9.2M + dense 25088->2048 = 51.4M + head 2.05M = 62.65M).
BP twin queued for GPU1 (waiting on user's phasescan). Corpus: 9.99B tokens, doc-level shuffled
(9.67M docs, seed 1234, val re-drawn 20M disjoint) per user directive.
- **nsize ladder DONE** (TinyStories 4k-vocab, 3k steps, fp32, seed 1): c256 1.9265 / c512 1.7920 /
c768 1.7913 / c1024 1.7876 — at FIXED 3k steps quality saturates with width (data/steps-bound,
expected); purpose = noise-robustness probe ckpts (runs/nsize_*_s3000.pt x4). Probe script queued.
- **Resume upgraded to exact**: MultiOpt gains state_dict/load_state_dict; trainer saves 'opt' in
every ckpt and restores it on --resume (chunked HPC jobs no longer lose Adam/Muon state).
- **Delta storage recon**: /scratch 1.5T/1.5T FULL, /work/hdd/bfqt over quota -> 300M data transfer
BLOCKED until space found (own old-ept footprint = first cleanup candidate). A100x4 queue ~8.5d,
A40 same-day (48h cap -> needs exact resume, now DONE).
### RESULT 16 (2026-07-13): STAGE-2 DATA PIPELINE LIVE + FINEWEB SMOKE PASSED.
`prepare_fineweb.py`: FineWeb-Edu sample-10BT -> 32k ByteLevel BPE (<|eot|> id 0) -> uint16 bins,
tinystories_bpe format, `--data` flag added to both trainers. SMOKE_READY in 11 min (download 5min
@80MB/s, tokenizer train 39s on 1.5GB, shard0 5min = 755M tokens; val = first 20M, disjoint).
Full 14 shards -> ~10.5B tokens (running, ~50 min ETA at 754M/5.4min per shard).
**fw_smoke (L12 C512 32k-vocab = 72.11M, --amp, 400 steps, GPU1): CE 10.51 -> 5.84, cos(EP,BP)
0.9999@0 / 0.9951@100 / 0.9995@400, ZERO skips, drift 0.002.** The estimator + amp + beta-governance
(sig grew 3.9->58, beta floored by step 100 — wall-1 machinery engaged correctly on the harder
corpus) all transfer to real web text at 4x vocab unchanged. Speed 0.89 it/s at this shape (bigger
head). Stage-2 recipe question OPEN for user: T=1024 (web-native context) vs T=256 (strict
TinyStories comparability) for the 300M run. NOTE: the "BP twin 2.9746" line in DONE prints is the
stale TinyStories reference (cosmetic); no fineweb BP twin exists yet.
### RESULT 15 (2026-07-12): bf16 MIXED PRECISION (--amp) VALIDATED — lossless at 4k, 1.56x wall-clock.
The /2-class cost lever, same-day pipeline: amp_gate.py static gate -> trainer flag -> 3-seed A/B.
SEMANTICS (why this lives while naive-cast --bf16 is dead): params/states/displacements/E-accum stay
fp32; ONLY block forwards run under autocast(bf16). RESULT 11's naive-cast death = pure STATE
quantization (wall-1: beta-displacement below bf16 resolution) — exactly as diagnosed.
- Gate (stage1b s55000, fp64 cosine): amp cos(EP,BP_fp32) 0.9682 vs fp32-EP 0.9687 (zero loss);
beta=3e-3 -> 0.9878, 1e-2 -> 0.9966 (bigger beta ACTIVELY better — wall-1 SNR physics);
bf16 fwd valCE -0.0002; BP_amp baseline 0.9993. amp_last (fp32 final rebuild) buys nothing ->
amp_all everywhere; the E-subtraction term is not binding at production beta (fbnoise-tolerance
prediction from RESULT 14 held: relative noise on forces is invisible).
- 3-seed 4k A/B (bsign flagset + --amp): 1.7086/1.7569/1.7562 mean 1.7406 vs fp32 3v3 mean 1.7314
(Delta +0.009 inside the seed-noise band; amp_s1 BEAT the BP+Muon mean 1.7098). In-trainer bp_gate
cos 0.9999 at step 0. Zero guard events.
- SPEED (solo GPU3/A6000, C512): amp 2.785 it/s vs fp32 1.789 it/s = 1.56x wall-clock; grows with
width (tensor-core-bound share) -> treat 1.5x as the floor for 1-3B on H100.
- ~~CAVEAT + confirm step~~ **EPOCH CONFIRM SEALED (2026-07-12 late): stage1b_amp DONE best val
CE 1.2868 vs fp32 1.2808 (Δ+0.006, inside the 0.02-0.03 best-of-noisy-val band); zero guard
events over 58.8k; 2.80 vs ~1.79 it/s = the 1.56x held for the full epoch.** amp = Stage-2
default, full confidence. EMAIL_BEN_DRAFT2 gate #6 CLEARED (the sent "validated this week"
claim is now closed at epoch scale).
- Cost consequence: COST_MODEL.md v2.1 (sourced July-2026 prices: market H100 $1.87-2.99/GPU.h,
AWS p5e blocks $4.97/GPU.h post-hike) — with amp measured, 3B-Chinchilla ~$40k / 7Bx20B ~$30k
on AWS blocks: BOTH inside the $50k envelope individually. amp is the Stage-2 default.
|