eval: final deploy eval records knob-on (deployed-as-trained) for quarantine arms

route/routeV final eval now measures both endpoints at n=119 test:
knob-off (ablate_quarantine, the deploy headline) AND knob-on (trained
model as-is). Writes deploy_hack_on/deploy_solve_on/deploy_vhack_on so
the before->after quarantine move is plottable from the deploy set
instead of borrowing the val curve's different scale.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
This commit is contained in:
wassname
2026-06-09 13:09:50 +00:00
co-authored by Claudypoo
parent 5b0a6ddd91
commit d68c17e7c5
12 changed files with 325 additions and 122 deletions
+2 -1
View File
@@ -74,6 +74,7 @@ class Config:
seed: int = 41
preserve_magnitude: bool = True
v_hack_path: Path = OUT_DIR / "vhack" / "v_hack_full.safetensors"
pairs_path: Path = OUT_DIR / "pairsets" / "prog_wide.json"
tag: str = ""
replay_dir: Path | None = None
teacher_only: bool = False
@@ -206,7 +207,7 @@ def main(cfg: Config) -> int:
student, wrappers, tok = load_student(device)
delta_params = [info["delta_S"] for info in wrappers.values()]
logger.info(f"student delta_S params: {sum(p.numel() for p in delta_params):,}")
v_hack_cpu = load_v_hack(cfg.v_hack_path, STUDENT_MODEL, wrappers)
v_hack_cpu = load_v_hack(cfg.v_hack_path, STUDENT_MODEL, wrappers, cfg.pairs_path)
v_hack = {n: v.to(device) for n, v in v_hack_cpu.items()}
opt = torch.optim.AdamW(delta_params, lr=cfg.lr)