summaryrefslogtreecommitdiff
path: root/scripts/plot_jr_cmp.py
diff options
context:
space:
mode:
authorYuren Hao <yurenh2@illinois.edu>2026-07-03 05:56:50 -0500
committerYuren Hao <yurenh2@illinois.edu>2026-07-03 05:56:50 -0500
commitb83947778e2c776f757a07d4719b7ce961d7ed55 (patch)
treeb9cc01d7adda691d9156d9d04f4fb2f644674e96 /scripts/plot_jr_cmp.py
Initial commit: ept — backprop-free equilibrium transformer (EP)
Code (ep_run/), organized docs (docs/{method,campaign,hardware,outreach,paper}), analysis scripts (scripts/), ONBOARDING.md entry point. Large data/checkpoints git-ignored (share separately). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FAPDWQ49M5Ye3NpTndTpn
Diffstat (limited to 'scripts/plot_jr_cmp.py')
-rw-r--r--scripts/plot_jr_cmp.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/scripts/plot_jr_cmp.py b/scripts/plot_jr_cmp.py
new file mode 100644
index 0000000..2f8af95
--- /dev/null
+++ b/scripts/plot_jr_cmp.py
@@ -0,0 +1,20 @@
+import re, matplotlib; matplotlib.use('Agg'); import matplotlib.pyplot as plt
+def parse(p):
+ s,c,e=[],[],[]
+ for ln in open(p):
+ m=re.search(r'step\s+(\d+)/\d+ \| val CE ([\d.]+) ema=([\d.]+)', ln)
+ if m: s.append(int(m.group(1))); c.append(float(m.group(2))); e.append(float(m.group(3)))
+ return s,c,e
+fz=parse('ep_run/runs/ep_resreg_warm.log'); ad=parse('ep_run/runs/ep_rr_ajr.log')
+fig,ax=plt.subplots(figsize=(11,5.5),dpi=140)
+for (s,c,e),col,lab in [(fz,'#4363d8','frozen jr=0.1'),(ad,'#e6194B','adaptive jacreg (jr_max=16)')]:
+ ax.plot(s,c,color=col,lw=0.7,alpha=0.25)
+ ax.plot(s,e,color=col,lw=2.3,label=lab+f' (last ema {e[-1]:.4f})')
+ax.axhline(2.0,color='gray',ls='--',lw=1,alpha=0.7,label='val CE = 2.0')
+ax.set_xlabel('training step'); ax.set_ylabel('val CE'); ax.set_ylim(1.92,2.6)
+ax.set_title('Frozen jr vs adaptive jacreg — C512 EP, same s2000 warm-start (only jr differs)\nbold = ema, faint = raw per-log val CE', fontsize=10.5)
+ax.legend(fontsize=9.5, loc='upper right'); ax.grid(alpha=0.2)
+fig.tight_layout(); fig.savefig('frozen_vs_adaptive.png',dpi=140,bbox_inches='tight')
+print(f"frozen: {len(fz[0])} pts, steps {fz[0][0]}-{fz[0][-1]}, best ema {min(fz[2]):.4f}")
+print(f"adaptive: {len(ad[0])} pts, steps {ad[0][0]}-{ad[0][-1]}, best ema {min(ad[2]):.4f}")
+print("saved")