diff options
| author | Yuren Hao <yurenh2@illinois.edu> | 2026-07-16 12:19:43 -0500 |
|---|---|---|
| committer | Yuren Hao <yurenh2@illinois.edu> | 2026-07-16 12:19:43 -0500 |
| commit | 3cf5827cd73d92462896d09c5e42d3f1cbf22b45 (patch) | |
| tree | 35d365eeb64029cc43bb80d3b854ff986a2a07df /ep_run | |
| parent | f3aebc912c564804f4d5d26fe6c9a3c79fa37b4d (diff) | |
--beta_ride ceiling-riding governor (two-sided bcap: climb in calm, attack near threshold); smoke: 3e-3 -> 2.4e-2 hover at ride cap, rho calm at 42M tail
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 | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/ep_run/casc_eq_train.py b/ep_run/casc_eq_train.py index 8e246d1..6d94ef5 100644 --- a/ep_run/casc_eq_train.py +++ b/ep_run/casc_eq_train.py @@ -51,6 +51,9 @@ ap.add_argument('--data', default='tinystories_bpe') # dataset dir under ep_ ap.add_argument('--sync_check', type=int, default=500) # DDP: verify bitwise param sync every N steps (0=off) ap.add_argument('--ddp_backend', default='nccl', choices=['nccl', 'gloo']) # gloo = correctness tests on shared GPUs ap.add_argument('--ddp_grad_test', action='store_true') # one-step grad equivalence test vs single-GPU big batch, then exit +ap.add_argument('--beta_ride', type=float, default=1.0) # cap ceiling: >1 lets the governor RAISE beta + # above the schedule, up to ride x schedule +ap.add_argument('--beta_ride_up', type=float, default=1.02) # per-step climb rate in the calm branch ap.add_argument('--beta_cap_rho', type=float, default=0.0) # >0: LOOP-GAIN CAP on beta — if per-sweep residual # ratio rho^ exceeds this, bscale *= 0.8 (beta backs off # under the wall-2 ceiling); recovers x1.02 when rho^ low @@ -476,7 +479,9 @@ def ep_step(x, y): if res_g > 0.02 and rho_g > args.beta_cap_rho: GOV['cap'] = max(GOV.get('cap', 1.0) * 0.85, 0.05) # attack (gentler than v1) elif res_g < 0.01 or rho_g < 0.5 * args.beta_cap_rho: - GOV['cap'] = min(GOV.get('cap', 1.0) * 1.02, 1.0) # recover + # recover; with beta_ride > 1 the governor CLIMBS past the schedule — beta finds + # its own ceiling and hovers there (ride-the-ceiling; 1.0 = legacy defensive cap) + GOV['cap'] = min(GOV.get('cap', 1.0) * args.beta_ride_up, args.beta_ride) if CF: # one-graph centered: [g(+b)+g(-b)]/2 = d[(E+ - E-)/(2b·NBT)]/dtheta; CE-head term from # the +beta half only (matches sequential centered's gsC at the +beta top states). |
