| """Build the canonical distributions file and a 4-job pre-campaign validation wave. |
| |
| Two questions, one 20-minute wave on 4 GPUs, before 5 hours are committed: |
| |
| 1. Is lr 7e-4 actually the peak? The sweep bracketed it at 3e-4 / 7e-4 / 1.5e-3 |
| (0.1665 / 0.1826 / 0.1527), so 5e-4 and 1e-3 refine the interior. |
| 2. Does that lr survive a concentrated mixture? It was tuned on natural, but the |
| 64 arms span 4.39-7.47x repetition and 284k-808k distinct clips. If the |
| extremes collapse at 7e-4, a slice of the campaign is noise and the ranking is |
| contaminated in a way no amount of analysis recovers. d7 has the fewest live |
| clusters (6 of 20) and d185 the fewest distinct clips (293,514) -- the two |
| corners of the design. |
| |
| The distributions file uses the record form ({dist_id, weights}) because |
| data.build_mixture_plan matches dist_id on the field rather than list position, |
| and these 64 ids are a sparse subset of 0..255. |
| """ |
| import json |
| from pathlib import Path |
|
|
| CFG = "/workspace/code/eat-map-regmix/configs" |
| MAE = "/workspace/configs/mae.yaml" |
| HORIZON = 1912024 |
| CLUSTER_INDEX = "/workspace/data/asmel_flat/train.cluster_index.npy" |
| DIST = "/workspace/artifacts/canonical64_distributions.json" |
| BEST_LR = 7e-4 |
|
|
| spec = json.loads(Path("/workspace/analysis/canonical64.json").read_text()) |
|
|
| |
| records = [{"dist_id": v["dist_id"], "weights": v["weights"], "batch": v["batch"]} |
| for v in sorted(spec.values(), key=lambda r: r["dist_id"])] |
| Path(DIST).write_text(json.dumps({ |
| "source": "regmix32-base-1ep + regmix32b-base-1ep realized weights", |
| "note": "the 64-mixture canonical pool; cap disabled so the realized vector " |
| "is identical at every budget and objective", |
| "distributions": records, |
| }, indent=1)) |
| print(f"wrote {DIST}: {len(records)} records, " |
| f"dist_id range {records[0]['dist_id']}-{records[-1]['dist_id']}") |
|
|
| COMMON = [ |
| f"loop.budget_clips={HORIZON}", |
| "loop.compile=false", |
| "tracking.wandb_mode=disabled", |
| "tracking.hub_upload=false", |
| "tracking.campaign_id=mae-validate", |
| ] |
| MIX = [ |
| f"mixture.cluster_index={CLUSTER_INDEX}", |
| f"mixture.distributions={DIST}", |
| |
| |
| |
| "mixture.repetition_cap=1000.0", |
| ] |
|
|
| jobs = [] |
| for lr in (5e-4, 1e-3): |
| jobs.append({ |
| "name": f"mae-validate/natural-lr{lr:g}", |
| "configs": [f"{CFG}/base.yaml", f"{CFG}/scale_15m.yaml", f"{CFG}/budget_proxy.yaml", MAE], |
| "sets": COMMON + [f"optim.lr={lr}", f"tracking.trial_id=natural-lr{lr:g}"], |
| }) |
| for did in (7, 185): |
| jobs.append({ |
| "name": f"mae-validate/d{did}-lr{BEST_LR:g}", |
| "configs": [f"{CFG}/base.yaml", f"{CFG}/scale_15m.yaml", f"{CFG}/budget_proxy.yaml", MAE], |
| "sets": COMMON + MIX + [f"optim.lr={BEST_LR}", f"mixture.dist_id={did}", |
| f"tracking.trial_id=d{did}-lr{BEST_LR:g}"], |
| }) |
|
|
| out = Path("/workspace/scripts/jobs_validate.json") |
| out.write_text(json.dumps(jobs, indent=1)) |
| print(f"wrote {out}: {len(jobs)} jobs") |
| for j in jobs: |
| print(f" {j['name']}") |
|
|