From 0ea751c5bc4c8c566f6efcea82b2bb285090fbe1 Mon Sep 17 00:00:00 2001 From: wassname Date: Sat, 30 May 2026 16:49:03 +0000 Subject: [PATCH] =?UTF-8?q?plot:=20#148=20substrate=20emergence=20?= =?UTF-8?q?=E2=80=94=20per-mode=20hack-rate=20curves=20(4/5=20learned,=20s?= =?UTF-8?q?eed=2041)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New scripts/plot_substrate.py parses the hk_ cumulative columns from a multi-loophole substrate run (one log, K interleaved modes) and draws one learning curve per mode with first_step onset dots and direct end-labels. plot_emergence.py can't do this (it groups logs by a single --env-mode). Figure shows the headline: vanilla GRPO learns file_marker/run_tests/ stdout_marker/sentinel, eq_override flat at 0 (never). Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com> --- out/figs/substrate_emergence.png | Bin 0 -> 66351 bytes scripts/plot_substrate.py | 112 +++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 out/figs/substrate_emergence.png create mode 100644 scripts/plot_substrate.py diff --git a/out/figs/substrate_emergence.png b/out/figs/substrate_emergence.png new file mode 100644 index 0000000000000000000000000000000000000000..12a7121c9274c96b43f7648b7039e5e06ee37b49 GIT binary patch literal 66351 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 HvI_b?Hhp;X literal 0 HcmV?d00001 diff --git a/scripts/plot_substrate.py b/scripts/plot_substrate.py new file mode 100644 index 0000000..9968a7f --- /dev/null +++ b/scripts/plot_substrate.py @@ -0,0 +1,112 @@ +"""Multi-loophole substrate emergence plot (#148): how many of the K classes does a +vanilla-GRPO student learn, and in what order? + +One line per loophole mode. y = cumulative student hack rate of THAT mode +(hk_ = hacks / rollouts-of-that-mode-seen-so-far, parsed from the per-step +training table). A class "emerges" when its line lifts off 0; a flat-at-0 line +(eq_override) is a loophole the student never learned. first_step onset is dotted. + +Unlike plot_emergence.py (one --env-mode per log, Phase-1 single-mode runs), the +substrate run interleaves all K modes in ONE log via the hk_ columns, so we +parse those columns directly rather than grouping logs by env_mode. + +Usage: + uv run python scripts/plot_substrate.py logs/*_substrate3_none_s41.log + uv run python scripts/plot_substrate.py logs/.log --out out/figs/substrate_emergence.png +""" +from __future__ import annotations + +import argparse +import re +from pathlib import Path + +import matplotlib.pyplot as plt +import numpy as np +from loguru import logger + +# hk_ column header -> (display mode, colour). Order = legend/label order. +HK = { + "hk_fm": ("file_marker", "#7b3294"), + "hk_rt": ("run_tests", "#c1432b"), + "hk_so": ("stdout_marker", "#b8860b"), + "hk_se": ("sentinel", "#2f7d4f"), + "hk_eq": ("eq_override", "#33508c"), +} +_HDR_TOK = re.compile(r"[A-Za-z_]+") # "hack_s?" -> "hack_s" + + +def _rate(tok: str) -> float: + """cumulative N/M cell -> N/M (nan if denom 0).""" + a, b = tok.split("/") + return int(a) / int(b) if int(b) else np.nan + + +def parse_hk(path: Path) -> dict: + """Return {steps: int[], hk_rt: float[], ...} from a substrate run log.""" + txt = path.read_text(errors="replace") + hdr = next((l for l in txt.splitlines() if "ref_eq" in l and "hk_rt" in l), None) + if hdr is None: + raise ValueError(f"{path}: no substrate header (hk_rt) -- not a multi-loophole run?") + names = [_HDR_TOK.match(t).group(0) for t in hdr.split("| INFO |", 1)[1].split()] + idx = {n: i for i, n in enumerate(names)} + steps, cols = [], {k: [] for k in HK} + for line in txt.splitlines(): + if "| INFO |" not in line: + continue + row = line.split("| INFO |", 1)[1].split() + if not row or not row[0].isdigit() or len(row) < len(names): + continue + steps.append(int(row[idx["step"]])) + for k in HK: + cols[k].append(_rate(row[idx[k]])) + return dict(steps=np.array(steps), **{k: np.array(v) for k, v in cols.items()}) + + +def _onset(steps: np.ndarray, rate: np.ndarray) -> int | None: + """First step where the cumulative hack rate is > 0 (loophole first exploited).""" + nz = np.where(np.nan_to_num(rate) > 0)[0] + return int(steps[nz[0]]) if len(nz) else None + + +def plot(run: dict, seed: str, out: Path) -> None: + fig, ax = plt.subplots(figsize=(6.4, 3.8)) + x = run["steps"] + n_learned = 0 + for k, (mode, color) in HK.items(): + y = run[k] + ax.plot(x, y, color=color, lw=2.0, solid_capstyle="round") + on = _onset(x, y) + final = np.nan_to_num(y)[-1] + if on is not None: + n_learned += 1 + ax.plot(on, np.nan_to_num(y)[x == on][0], "o", color=color, ms=5, zorder=5) + # direct end-label (no legend): mode + final rate, or "never" for the holdout + tag = f"{mode} {final*100:.0f}%" + ("" if on is not None else " (never)") + ax.annotate(tag, (x[-1], final), color=color, fontsize=8, va="center", + xytext=(6, 0), textcoords="offset points") + ax.set_xlabel("GRPO step") + ax.set_ylabel("cumulative hack rate (per mode)") + ax.set_title(f"vanilla GRPO learns {n_learned} of {len(HK)} loopholes (seed {seed})") + ax.set_ylim(-0.02, max(0.5, np.nanmax([np.nanmax(run[k]) for k in HK]) * 1.1)) + ax.set_xlim(0, x[-1] * 1.28) # headroom for end-labels + ax.spines[["top", "right"]].set_visible(False) + ax.grid(axis="y", lw=0.4, alpha=0.4) + fig.tight_layout() + out.parent.mkdir(parents=True, exist_ok=True) + fig.savefig(out, dpi=140) + logger.info(f"wrote {out} ({n_learned}/{len(HK)} learned)") + + +def main() -> None: + ap = argparse.ArgumentParser() + ap.add_argument("logs", nargs="+", type=Path) + ap.add_argument("--out", type=Path, default=Path("out/figs/substrate_emergence.png")) + args = ap.parse_args() + # single-seed for now; first log wins (seed overlay is a later extension) + path = args.logs[0] + seed = (re.search(r"seed(\d+)", path.name) or re.search(r"s(\d+)", path.name)) + plot(parse_hk(path), seed.group(1) if seed else "?", args.out) + + +if __name__ == "__main__": + main()