plot_dynamics: train-vs-deploy 2x2 uses matched n=64 eval on both rows

The train row fell back to per-step hack_s (noisy n=28 train batch) for arms
without a knob-on eval, so vanilla's train/deploy rows looked like different
estimators. Fix: vanilla/erase have no quarantine -> train==deploy, so reuse
hk_dep (the n=64 knob-off eval) for the train row. route2 still uses hk_on
(knob-on eval). Now every panel is the same held-out eval, differing only in
the quarantine knob. Regen source: train_vs_deploy_60.csv (route2 nofloor_rf2
+ vanilla sweep, seed 41, 60 steps).

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
This commit is contained in:
wassname
2026-06-05 02:33:10 +00:00
parent 0645ae2dd2
commit 5257ff010e
2 changed files with 132 additions and 6 deletions
+121
View File
@@ -0,0 +1,121 @@
arm,seed,step,hack_s,gt_s,hack_train,solve_train,hk_dep,slv_dep
routing2,41,0,0.0,0.34,0.0,0.38,0.0,0.34
routing2,41,1,nan,nan,nan,nan,nan,nan
routing2,41,2,nan,nan,nan,nan,nan,nan
routing2,41,3,nan,nan,nan,nan,nan,nan
routing2,41,4,nan,nan,nan,nan,nan,nan
routing2,41,5,0.0,0.5,0.0,0.5,0.0,0.5
routing2,41,6,nan,nan,nan,nan,nan,nan
routing2,41,7,nan,nan,nan,nan,nan,nan
routing2,41,8,nan,nan,nan,nan,nan,nan
routing2,41,9,nan,nan,nan,nan,nan,nan
routing2,41,10,0.0,0.58,0.09,0.55,0.0,0.58
routing2,41,11,nan,nan,nan,nan,nan,nan
routing2,41,12,nan,nan,nan,nan,nan,nan
routing2,41,13,nan,nan,nan,nan,nan,nan
routing2,41,14,nan,nan,nan,nan,nan,nan
routing2,41,15,0.0,0.62,0.17,0.48,0.0,0.62
routing2,41,16,nan,nan,nan,nan,nan,nan
routing2,41,17,nan,nan,nan,nan,nan,nan
routing2,41,18,nan,nan,nan,nan,nan,nan
routing2,41,19,nan,nan,nan,nan,nan,nan
routing2,41,20,0.0,0.59,0.19,0.48,0.0,0.59
routing2,41,21,nan,nan,nan,nan,nan,nan
routing2,41,22,nan,nan,nan,nan,nan,nan
routing2,41,23,nan,nan,nan,nan,nan,nan
routing2,41,24,nan,nan,nan,nan,nan,nan
routing2,41,25,0.0,0.61,0.22,0.59,0.0,0.61
routing2,41,26,nan,nan,nan,nan,nan,nan
routing2,41,27,nan,nan,nan,nan,nan,nan
routing2,41,28,nan,nan,nan,nan,nan,nan
routing2,41,29,nan,nan,nan,nan,nan,nan
routing2,41,30,0.0,0.62,0.25,0.45,0.0,0.62
routing2,41,31,nan,nan,nan,nan,nan,nan
routing2,41,32,nan,nan,nan,nan,nan,nan
routing2,41,33,nan,nan,nan,nan,nan,nan
routing2,41,34,nan,nan,nan,nan,nan,nan
routing2,41,35,0.0,0.62,0.23,0.5,0.0,0.62
routing2,41,36,nan,nan,nan,nan,nan,nan
routing2,41,37,nan,nan,nan,nan,nan,nan
routing2,41,38,nan,nan,nan,nan,nan,nan
routing2,41,39,nan,nan,nan,nan,nan,nan
routing2,41,40,0.0,0.61,0.25,0.56,0.0,0.61
routing2,41,41,nan,nan,nan,nan,nan,nan
routing2,41,42,nan,nan,nan,nan,nan,nan
routing2,41,43,nan,nan,nan,nan,nan,nan
routing2,41,44,nan,nan,nan,nan,nan,nan
routing2,41,45,0.0,0.62,0.25,0.47,0.0,0.62
routing2,41,46,nan,nan,nan,nan,nan,nan
routing2,41,47,nan,nan,nan,nan,nan,nan
routing2,41,48,nan,nan,nan,nan,nan,nan
routing2,41,49,nan,nan,nan,nan,nan,nan
routing2,41,50,0.0,0.62,0.19,0.48,0.0,0.62
routing2,41,51,nan,nan,nan,nan,nan,nan
routing2,41,52,nan,nan,nan,nan,nan,nan
routing2,41,53,nan,nan,nan,nan,nan,nan
routing2,41,54,nan,nan,nan,nan,nan,nan
routing2,41,55,0.0,0.62,0.2,0.52,0.0,0.62
routing2,41,56,nan,nan,nan,nan,nan,nan
routing2,41,57,nan,nan,nan,nan,nan,nan
routing2,41,58,nan,nan,nan,nan,nan,nan
routing2,41,59,0.0,0.61,0.25,0.53,0.0,0.61
vanilla,41,0,0.0,0.36,0.0,0.36,0.0,0.36
vanilla,41,1,nan,nan,nan,nan,nan,nan
vanilla,41,2,nan,nan,nan,nan,nan,nan
vanilla,41,3,nan,nan,nan,nan,nan,nan
vanilla,41,4,nan,nan,nan,nan,nan,nan
vanilla,41,5,0.0,0.44,0.0,0.44,0.0,0.44
vanilla,41,6,nan,nan,nan,nan,nan,nan
vanilla,41,7,nan,nan,nan,nan,nan,nan
vanilla,41,8,nan,nan,nan,nan,nan,nan
vanilla,41,9,nan,nan,nan,nan,nan,nan
vanilla,41,10,0.14,0.56,0.14,0.56,0.14,0.56
vanilla,41,11,nan,nan,nan,nan,nan,nan
vanilla,41,12,nan,nan,nan,nan,nan,nan
vanilla,41,13,nan,nan,nan,nan,nan,nan
vanilla,41,14,nan,nan,nan,nan,nan,nan
vanilla,41,15,0.23,0.52,0.23,0.52,0.23,0.52
vanilla,41,16,nan,nan,nan,nan,nan,nan
vanilla,41,17,nan,nan,nan,nan,nan,nan
vanilla,41,18,nan,nan,nan,nan,nan,nan
vanilla,41,19,nan,nan,nan,nan,nan,nan
vanilla,41,20,0.28,0.48,0.28,0.48,0.28,0.48
vanilla,41,21,nan,nan,nan,nan,nan,nan
vanilla,41,22,nan,nan,nan,nan,nan,nan
vanilla,41,23,nan,nan,nan,nan,nan,nan
vanilla,41,24,nan,nan,nan,nan,nan,nan
vanilla,41,25,0.25,0.53,0.25,0.53,0.25,0.53
vanilla,41,26,nan,nan,nan,nan,nan,nan
vanilla,41,27,nan,nan,nan,nan,nan,nan
vanilla,41,28,nan,nan,nan,nan,nan,nan
vanilla,41,29,nan,nan,nan,nan,nan,nan
vanilla,41,30,0.3,0.52,0.3,0.52,0.3,0.52
vanilla,41,31,nan,nan,nan,nan,nan,nan
vanilla,41,32,nan,nan,nan,nan,nan,nan
vanilla,41,33,nan,nan,nan,nan,nan,nan
vanilla,41,34,nan,nan,nan,nan,nan,nan
vanilla,41,35,0.27,0.5,0.27,0.5,0.27,0.5
vanilla,41,36,nan,nan,nan,nan,nan,nan
vanilla,41,37,nan,nan,nan,nan,nan,nan
vanilla,41,38,nan,nan,nan,nan,nan,nan
vanilla,41,39,nan,nan,nan,nan,nan,nan
vanilla,41,40,0.38,0.45,0.38,0.45,0.38,0.45
vanilla,41,41,nan,nan,nan,nan,nan,nan
vanilla,41,42,nan,nan,nan,nan,nan,nan
vanilla,41,43,nan,nan,nan,nan,nan,nan
vanilla,41,44,nan,nan,nan,nan,nan,nan
vanilla,41,45,0.42,0.44,0.42,0.44,0.42,0.44
vanilla,41,46,nan,nan,nan,nan,nan,nan
vanilla,41,47,nan,nan,nan,nan,nan,nan
vanilla,41,48,nan,nan,nan,nan,nan,nan
vanilla,41,49,nan,nan,nan,nan,nan,nan
vanilla,41,50,0.38,0.38,0.38,0.38,0.38,0.38
vanilla,41,51,nan,nan,nan,nan,nan,nan
vanilla,41,52,nan,nan,nan,nan,nan,nan
vanilla,41,53,nan,nan,nan,nan,nan,nan
vanilla,41,54,nan,nan,nan,nan,nan,nan
vanilla,41,55,0.42,0.47,0.42,0.47,0.42,0.47
vanilla,41,56,nan,nan,nan,nan,nan,nan
vanilla,41,57,nan,nan,nan,nan,nan,nan
vanilla,41,58,nan,nan,nan,nan,nan,nan
vanilla,41,59,0.33,0.44,0.33,0.44,0.33,0.44
1 arm seed step hack_s gt_s hack_train solve_train hk_dep slv_dep
2 routing2 41 0 0.0 0.34 0.0 0.38 0.0 0.34
3 routing2 41 1 nan nan nan nan nan nan
4 routing2 41 2 nan nan nan nan nan nan
5 routing2 41 3 nan nan nan nan nan nan
6 routing2 41 4 nan nan nan nan nan nan
7 routing2 41 5 0.0 0.5 0.0 0.5 0.0 0.5
8 routing2 41 6 nan nan nan nan nan nan
9 routing2 41 7 nan nan nan nan nan nan
10 routing2 41 8 nan nan nan nan nan nan
11 routing2 41 9 nan nan nan nan nan nan
12 routing2 41 10 0.0 0.58 0.09 0.55 0.0 0.58
13 routing2 41 11 nan nan nan nan nan nan
14 routing2 41 12 nan nan nan nan nan nan
15 routing2 41 13 nan nan nan nan nan nan
16 routing2 41 14 nan nan nan nan nan nan
17 routing2 41 15 0.0 0.62 0.17 0.48 0.0 0.62
18 routing2 41 16 nan nan nan nan nan nan
19 routing2 41 17 nan nan nan nan nan nan
20 routing2 41 18 nan nan nan nan nan nan
21 routing2 41 19 nan nan nan nan nan nan
22 routing2 41 20 0.0 0.59 0.19 0.48 0.0 0.59
23 routing2 41 21 nan nan nan nan nan nan
24 routing2 41 22 nan nan nan nan nan nan
25 routing2 41 23 nan nan nan nan nan nan
26 routing2 41 24 nan nan nan nan nan nan
27 routing2 41 25 0.0 0.61 0.22 0.59 0.0 0.61
28 routing2 41 26 nan nan nan nan nan nan
29 routing2 41 27 nan nan nan nan nan nan
30 routing2 41 28 nan nan nan nan nan nan
31 routing2 41 29 nan nan nan nan nan nan
32 routing2 41 30 0.0 0.62 0.25 0.45 0.0 0.62
33 routing2 41 31 nan nan nan nan nan nan
34 routing2 41 32 nan nan nan nan nan nan
35 routing2 41 33 nan nan nan nan nan nan
36 routing2 41 34 nan nan nan nan nan nan
37 routing2 41 35 0.0 0.62 0.23 0.5 0.0 0.62
38 routing2 41 36 nan nan nan nan nan nan
39 routing2 41 37 nan nan nan nan nan nan
40 routing2 41 38 nan nan nan nan nan nan
41 routing2 41 39 nan nan nan nan nan nan
42 routing2 41 40 0.0 0.61 0.25 0.56 0.0 0.61
43 routing2 41 41 nan nan nan nan nan nan
44 routing2 41 42 nan nan nan nan nan nan
45 routing2 41 43 nan nan nan nan nan nan
46 routing2 41 44 nan nan nan nan nan nan
47 routing2 41 45 0.0 0.62 0.25 0.47 0.0 0.62
48 routing2 41 46 nan nan nan nan nan nan
49 routing2 41 47 nan nan nan nan nan nan
50 routing2 41 48 nan nan nan nan nan nan
51 routing2 41 49 nan nan nan nan nan nan
52 routing2 41 50 0.0 0.62 0.19 0.48 0.0 0.62
53 routing2 41 51 nan nan nan nan nan nan
54 routing2 41 52 nan nan nan nan nan nan
55 routing2 41 53 nan nan nan nan nan nan
56 routing2 41 54 nan nan nan nan nan nan
57 routing2 41 55 0.0 0.62 0.2 0.52 0.0 0.62
58 routing2 41 56 nan nan nan nan nan nan
59 routing2 41 57 nan nan nan nan nan nan
60 routing2 41 58 nan nan nan nan nan nan
61 routing2 41 59 0.0 0.61 0.25 0.53 0.0 0.61
62 vanilla 41 0 0.0 0.36 0.0 0.36 0.0 0.36
63 vanilla 41 1 nan nan nan nan nan nan
64 vanilla 41 2 nan nan nan nan nan nan
65 vanilla 41 3 nan nan nan nan nan nan
66 vanilla 41 4 nan nan nan nan nan nan
67 vanilla 41 5 0.0 0.44 0.0 0.44 0.0 0.44
68 vanilla 41 6 nan nan nan nan nan nan
69 vanilla 41 7 nan nan nan nan nan nan
70 vanilla 41 8 nan nan nan nan nan nan
71 vanilla 41 9 nan nan nan nan nan nan
72 vanilla 41 10 0.14 0.56 0.14 0.56 0.14 0.56
73 vanilla 41 11 nan nan nan nan nan nan
74 vanilla 41 12 nan nan nan nan nan nan
75 vanilla 41 13 nan nan nan nan nan nan
76 vanilla 41 14 nan nan nan nan nan nan
77 vanilla 41 15 0.23 0.52 0.23 0.52 0.23 0.52
78 vanilla 41 16 nan nan nan nan nan nan
79 vanilla 41 17 nan nan nan nan nan nan
80 vanilla 41 18 nan nan nan nan nan nan
81 vanilla 41 19 nan nan nan nan nan nan
82 vanilla 41 20 0.28 0.48 0.28 0.48 0.28 0.48
83 vanilla 41 21 nan nan nan nan nan nan
84 vanilla 41 22 nan nan nan nan nan nan
85 vanilla 41 23 nan nan nan nan nan nan
86 vanilla 41 24 nan nan nan nan nan nan
87 vanilla 41 25 0.25 0.53 0.25 0.53 0.25 0.53
88 vanilla 41 26 nan nan nan nan nan nan
89 vanilla 41 27 nan nan nan nan nan nan
90 vanilla 41 28 nan nan nan nan nan nan
91 vanilla 41 29 nan nan nan nan nan nan
92 vanilla 41 30 0.3 0.52 0.3 0.52 0.3 0.52
93 vanilla 41 31 nan nan nan nan nan nan
94 vanilla 41 32 nan nan nan nan nan nan
95 vanilla 41 33 nan nan nan nan nan nan
96 vanilla 41 34 nan nan nan nan nan nan
97 vanilla 41 35 0.27 0.5 0.27 0.5 0.27 0.5
98 vanilla 41 36 nan nan nan nan nan nan
99 vanilla 41 37 nan nan nan nan nan nan
100 vanilla 41 38 nan nan nan nan nan nan
101 vanilla 41 39 nan nan nan nan nan nan
102 vanilla 41 40 0.38 0.45 0.38 0.45 0.38 0.45
103 vanilla 41 41 nan nan nan nan nan nan
104 vanilla 41 42 nan nan nan nan nan nan
105 vanilla 41 43 nan nan nan nan nan nan
106 vanilla 41 44 nan nan nan nan nan nan
107 vanilla 41 45 0.42 0.44 0.42 0.44 0.42 0.44
108 vanilla 41 46 nan nan nan nan nan nan
109 vanilla 41 47 nan nan nan nan nan nan
110 vanilla 41 48 nan nan nan nan nan nan
111 vanilla 41 49 nan nan nan nan nan nan
112 vanilla 41 50 0.38 0.38 0.38 0.38 0.38 0.38
113 vanilla 41 51 nan nan nan nan nan nan
114 vanilla 41 52 nan nan nan nan nan nan
115 vanilla 41 53 nan nan nan nan nan nan
116 vanilla 41 54 nan nan nan nan nan nan
117 vanilla 41 55 0.42 0.47 0.42 0.47 0.42 0.47
118 vanilla 41 56 nan nan nan nan nan nan
119 vanilla 41 57 nan nan nan nan nan nan
120 vanilla 41 58 nan nan nan nan nan nan
121 vanilla 41 59 0.33 0.44 0.33 0.44 0.33 0.44
+11 -6
View File
@@ -132,14 +132,19 @@ def parse_log(path: Path) -> dict | None:
# presence: no-floor logs carry an all-nan hk_dep/hk_abl column otherwise.
def _has_data(key):
return key in run and np.isfinite(run[key]).any()
# TRAIN series for the train-vs-deploy 2x2. Prefer the knob-ON eval (hk_on/slv_on):
# SAME n/prompts/T as the knob-off deploy eval, so the two rows differ ONLY in the
# knob -- the per-step hack_s is a noisy n=28 train batch and looks like a different
# estimator. Fall back to per-step hack_s for logs without the knob-on eval.
if _has_data("hk_on"):
# TRAIN series for the train-vs-deploy 2x2. The two rows must share ONE estimator:
# route2 -> knob-ON held-out eval (hk_on): quarantine active, the policy as trained.
# vanilla/erase -> reuse the knob-OFF eval (hk_dep): no quarantine, so train==deploy;
# the deploy eval IS the train-time behaviour, same n=64 prompts/T.
# Both differ from the deploy row ONLY in the knob, so noise matches. Per-step hack_s
# (noisy n=28 train batch) is the last resort for old logs with no held-out eval.
if _has_data("hk_on"): # route2: knob-ON held-out eval (quarantine active)
run["hack_train"] = run["hk_on"]
run["solve_train"] = run["slv_on"]
elif "hack_s" in run:
elif _has_data("hk_dep"): # no quarantine (vanilla/erase): train==deploy, so the
run["hack_train"] = run["hk_dep"] # train row IS the knob-off eval -- reuse it so
run["solve_train"] = run["slv_dep"] # both rows share the n=64 estimator (no n=28 noise)
elif "hack_s" in run: # last resort (old logs, no held-out eval): per-step n=28
run["hack_train"] = run["hack_s"]
run["solve_train"] = run["gt_s"]
if _has_data("hk_abl"): # dense per-step proxy (rollout_ablate_frac>0), if present