bihmoe-poc / scripts /run_sweep.py
Throstur
tools: add seed sweep runner
f88b60e
Raw
History Blame Contribute Delete
1.41 kB
from __future__ import annotations
import argparse, subprocess, copy, yaml, time, os, sys
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--config", required=True)
ap.add_argument("--seeds", nargs="+", type=int, required=True)
ap.add_argument("--steps", type=int, default=None)
ap.add_argument("--eval_every", type=int, default=None)
ap.add_argument("--tag_suffix", type=str, default="")
args = ap.parse_args()
base = yaml.safe_load(open(args.config, "r", encoding="utf-8"))
for seed in args.seeds:
cfg = copy.deepcopy(base)
cfg["run"]["seed"] = int(seed)
if args.tag_suffix:
cfg["run"]["tag"] = f"{cfg['run']['tag']}_{args.tag_suffix}"
if args.steps is not None:
cfg["train"]["steps"] = int(args.steps)
if args.eval_every is not None:
cfg["train"]["eval_every"] = int(args.eval_every)
tmp = f"/tmp/bihmoe_sweep_{int(time.time())}_seed{seed}.yaml"
with open(tmp, "w", encoding="utf-8") as f:
yaml.safe_dump(cfg, f, sort_keys=False)
print(f"\n=== RUN seed={seed} cfg={tmp} ===")
rc = subprocess.call(["uv", "run", "python", "scripts/train_poc_side_by_side.py", "--config", tmp])
if rc != 0:
print(f"ERROR: run failed with code {rc} for seed {seed}")
sys.exit(rc)
if __name__ == "__main__":
main()