ESM2-GraphResidual-v2 / scripts /run_sanity.py
Marcochris's picture
Upload 6 files
dc62233 verified
Raw History Blame Contribute Delete
1.2 kB
import argparse,json,sys
from pathlib import Path
P=Path(__file__).resolve().parents[1];sys.path.insert(0,str(P))
from src.training.training import train_job
def main():
ap=argparse.ArgumentParser();ap.add_argument("--project_dir",type=Path,required=True);ap.add_argument("--out_dir",type=Path,required=True);a=ap.parse_args();r=a.project_dir.resolve();o=(a.out_dir if a.out_dir.is_absolute() else r/a.out_dir);o.mkdir(parents=True,exist_ok=True);rows=[]
for pw in [.05,.1,.2]:
for rw in [.001,.01]:
name=f"preserve_{pw}_residual_{rw}";last=train_job(r,o/name,epochs=4,batch_size=512,steps_per_epoch=24,sanity=True,preserve_weight=pw,residual_weight=rw);rows.append({"name":name,"preserve_weight":pw,"residual_weight":rw,**last})
safe=[x for x in rows if x["cosine_fused_esm"]>.7 and x["residual_to_esm_norm_ratio"]<.5 and x["relation_coverage"]==1.0 and abs(x["beta"])>1e-8];best=min(safe,key=lambda x:x["relation_loss"]+.1*x["preserve_loss"]+.01*x["residual_loss"]);(o/"sanity_selection.json").write_text(json.dumps({"status":"PASS","selected":best,"all":rows},indent=2)+"\n");print("SANITY_PASS",best["preserve_weight"],best["residual_weight"],best["beta"])
if __name__=="__main__":main()