diff options
| author | Yuren Hao <yurenh2@illinois.edu> | 2026-07-10 00:42:37 -0500 |
|---|---|---|
| committer | Yuren Hao <yurenh2@illinois.edu> | 2026-07-10 00:42:37 -0500 |
| commit | 2f669f335c1cbbf0df3e2dbd7dd02b99004c6f91 (patch) | |
| tree | 00c5ed6a1473c091318ed4af52fed392b302d2b6 /ep_run | |
| parent | 6abfbfd41412a6a64ee61bff4505fecf450abda1 (diff) | |
K refuted as L12 lever (cos K-invariant K3==K8); BP 3-seed sealed 1.919; mechanism = finite-beta SNR collapse; add --beta_floor/--beta_fixed + launch floor sweep
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FAPDWQ49M5Ye3NpTndTpn
Diffstat (limited to 'ep_run')
| -rw-r--r-- | ep_run/casc_eq_train.py | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/ep_run/casc_eq_train.py b/ep_run/casc_eq_train.py index f1f26a4..67ee98f 100644 --- a/ep_run/casc_eq_train.py +++ b/ep_run/casc_eq_train.py @@ -26,6 +26,8 @@ ap.add_argument('--muon_lr', type=float, default=0.02) ap.add_argument('--tok_init', type=float, default=0.0) # >0: init tok/pos with this std (GPT-standard 0.02) ap.add_argument('--compile', action='store_true') # torch.compile each block (free speed where supported) ap.add_argument('--sig_every', type=int, default=25) # tok-sigma refresh interval (amortized) +ap.add_argument('--beta_floor', type=float, default=0.0) # >0: floor beta_t (anti finite-beta SNR collapse at depth) +ap.add_argument('--beta_fixed', action='store_true') # disable sig^2 schedule, hold beta_t = args.beta constant ap.add_argument('--dtop_every', type=int, default=1) # 1 = exact (DEFAULT, BP-parity); 2 = fast mode (~20% cheaper, ~4% CE tax at high lr) ap.add_argument('--gate_every', type=int, default=200) # in-training cos(EP,BP) telemetry; <=0 = fully BP-free (no bp_gate at all) ap.add_argument('--gate_govern', action='store_true') # let gate cos adjust K/bscale (default: observe-only => training control is BP-free) @@ -157,6 +159,8 @@ def ep_step(x, y): sig = GOV['sig'] if SIG0 is None: SIG0 = sig beta_t = args.beta * GOV['bscale'] * (SIG0 * SIG0) / max(sig * sig, 1e-9) + if args.beta_fixed: beta_t = args.beta * GOV['bscale'] + if args.beta_floor > 0.0: beta_t = max(beta_t, args.beta_floor) z0, zs, ins, outs = free_states_graphed(x) zs_free = [z.clone() for z in zs] free_ce = F.cross_entropy(readout(zs_free[-1]).reshape(-1, vocab), y.reshape(-1)).item() |
