| #!/usr/bin/env bash |
| |
| cd /egr/research-slim/ghoshavr/reasoning-by-superposition-main |
| python3 - <<'PY' |
| import re, sys |
| from collections import defaultdict |
|
|
| runs = [ |
| "L15_w1_prom098_bt098", |
| "L15_w1_prom099_bt099", |
| "L15_w2_prom095_bt095", |
| "L15_w5_prom095_bt095", |
| "L15_push_2L_ce95_100k_w1", |
| ] |
| for name in runs: |
| path = f"logs/{name}.log" |
| try: |
| lines = open(path, errors="ignore") |
| except FileNotFoundError: |
| print(f"=== {name}: no log yet ===\n") |
| continue |
| frontier = 6 |
| by = defaultdict(lambda: {"evals": 0, "bt": 0, "targets": defaultdict(int)}) |
| prom = 0 |
| ep = 0 |
| for line in lines: |
| m = re.search(r"train epoch (\d+)/", line) |
| if m: |
| ep = int(m.group(1)) |
| m = re.search(r"PROMOTE stage (\d+) -> (\d+)", line) |
| if m: |
| frontier = int(m.group(2)); prom += 1 |
| m = re.search(r"HOLD at stage (\d+)", line) |
| if m: |
| frontier = int(m.group(1)) |
| m = re.search(r"target_stage=(\d+|None)", line) |
| if m: |
| by[frontier]["evals"] += 1 |
| if m.group(1) == "None": |
| continue |
| by[frontier]["bt"] += 1 |
| by[frontier]["targets"][int(m.group(1))] += 1 |
| total_e = sum(d["evals"] for d in by.values()) |
| total_b = sum(d["bt"] for d in by.values()) |
| hold = "" |
| for line in open(path, errors="ignore"): |
| if "[acc-stage]" in line: |
| hold = line.strip() |
| print(f"=== {name} ep={ep} promotes={prom} BT={total_b}/{total_e} ({(total_b/total_e if total_e else 0):.0%}) ===") |
| print(f" {hold}") |
| print(f" {'front':>5} {'evals':>5} {'BT':>4} {'rate':>5} repair targets") |
| for f in sorted(by): |
| d = by[f] |
| rate = d["bt"] / d["evals"] if d["evals"] else 0 |
| tops = sorted(d["targets"].items(), key=lambda x: -x[1])[:4] |
| ts = ", ".join(f"s{t}x{c}" for t, c in tops) if tops else "-" |
| print(f" {f:>5} {d['evals']:>5} {d['bt']:>4} {rate:>4.0%} {ts}") |
| print() |
| PY |
|
|