summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/campaign/CASCADE_ABLATION_PLAN.md13
-rw-r--r--ep_run/casc_gen.py5
2 files changed, 17 insertions, 1 deletions
diff --git a/docs/campaign/CASCADE_ABLATION_PLAN.md b/docs/campaign/CASCADE_ABLATION_PLAN.md
index e8b23a4..d59a47d 100644
--- a/docs/campaign/CASCADE_ABLATION_PLAN.md
+++ b/docs/campaign/CASCADE_ABLATION_PLAN.md
@@ -567,6 +567,19 @@ direction), not training-under-fault; wave-2 = co-training with faults injected
+
+### 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 |
diff --git a/ep_run/casc_gen.py b/ep_run/casc_gen.py
index e535df8..1d88f7c 100644
--- a/ep_run/casc_gen.py
+++ b/ep_run/casc_gen.py
@@ -12,7 +12,10 @@ ap.add_argument('--topk', type=int, default=40)
ap.add_argument('--prompt', default='Once upon a time')
args = ap.parse_args()
-DD = Path('/home/yurenh2/ept/ep_run/data/tinystories_bpe')
+import sys as _sys, torch as _t
+_ckpath = next((a for a in _sys.argv if a.endswith('.pt')), 'runs/stage1b_ep_muon_s55000.pt')
+_cfg = _t.load(_ckpath, map_location='cpu', weights_only=False).get('config', {})
+DD = Path('/home/yurenh2/ept/ep_run/data') / _cfg.get('data', 'tinystories_bpe')
vocab = pickle.load(open(DD / 'meta.pkl', 'rb'))['vocab_size']
from tokenizers import Tokenizer
tk = Tokenizer.from_file(str(DD / 'tokenizer.json'))