mirror of
https://github.com/wassname/evil_MoE.git
synced 2026-09-11 00:31:03 +08:00
fig:longrun: rebuild from job84 route2 + job97 fixed vanilla (no collapse)
Old figure paired route2 (job 84) with job 85 vanilla, whose step-88 'collapse' was a hot-preset artifact. Job 97 re-ran vanilla-200 gentle and stays coherent. New pairing: route2 holds deploy hack at 0; vanilla rises to ~0.32 (onset ~step 40); route2 solve ends higher (0.61 vs 0.47). Caption now flags the remaining optimizer mismatch (route2 hot / vanilla gentle, both beta=0) and TODOs the matched beta=1e-5 regen (jobs 100/101). Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
This commit is contained in:
+27
-28
@@ -373,39 +373,38 @@ enough to route one as it forms.
|
||||
\subsection{Long-run convergence}
|
||||
|
||||
The 60-step gap persists to convergence: at 200 steps route's deploy hack stays
|
||||
at zero while vanilla acquires the hack and then collapses
|
||||
(Figure~\ref{fig:longrun}). \TODO{prose -- author. FIXME: the "collapses" framing
|
||||
is preset-induced (job 85 hot preset); job 97 shows vanilla stays coherent and
|
||||
keeps hacking under a sane preset. Rewrite to "vanilla rises, route2 stays at 0"
|
||||
once the matched beta=1e-5 figure (jobs 100/101) lands -- see figure provenance.}
|
||||
pinned at zero while vanilla acquires the hack and rises to ${\sim}0.32$
|
||||
(Figure~\ref{fig:longrun}), with route's solve rate ending higher
|
||||
(${\sim}0.61$ vs ${\sim}0.47$). \TODO{prose -- author.}
|
||||
|
||||
% --- Figure: 200-step -------------------------------------------------------
|
||||
% Provenance: route2 = pueue job 84 (out/runs/20260602T080804_..._route2_converge200_s41);
|
||||
% vanilla = job 85 (out/runs/20260602T163201_..._vanilla_converge200_s41; vanilla still
|
||||
% running at writing -> left panel fills to step 200 on completion). Data source committed
|
||||
% at out/figs/dyn_longrun_200.csv; regen: uv run python scripts/plot_dynamics.py <both logs>.
|
||||
% FIXME (2026-06-04, #184/#187): the vanilla "collapse around step 88" below is a
|
||||
% PRESET artifact, not a property of vanilla GRPO. Job 85 used the hot preset
|
||||
% (lr=3e-3, adam beta1=0.5, beta=0). Job 97 re-ran vanilla-200 at a gentle preset
|
||||
% (lr=1e-3, adam 0.9/0.99, beta=0) and it stayed coherent: lp_s in [-0.47,-0.29]
|
||||
% through step 200, deploy hack 0.375 (run_tests 0.875, file_marker 0.53), no
|
||||
% collapse. Also job 84 (route2) and job 85 (vanilla) use mismatched optimizers,
|
||||
% so this overlay is apples-to-oranges. Regenerate this figure from the matched
|
||||
% beta=1e-5 pair (jobs 100/101, _none200_kl5 / _route2200_kl5) when they land, and
|
||||
% drop the "collapses" claim -- the honest contrast is route2 holds deploy hack ~0
|
||||
% while vanilla RISES (not collapses) under a sane preset.
|
||||
% Provenance: route2 = pueue job 84 (out/runs/20260602T080804_..._route2_converge200_s41,
|
||||
% deploy hack 0.000 solve 0.609); vanilla = job 97 (out/runs/20260603T104901_..._vanilla200_gentle_s41,
|
||||
% deploy hack 0.375 solve 0.484, coherent through step 200 -- no collapse). Data source
|
||||
% committed at out/figs/dyn_longrun_200.csv; regen: uv run python scripts/plot_dynamics.py
|
||||
% logs/20260602T080804_..._route2_converge200_s41.log logs/20260603T104901_..._vanilla200_gentle_s41.log
|
||||
% --out out/figs/dyn_longrun_200.png
|
||||
% CAVEAT (2026-06-05, #184): optimizer mismatch. route2 (job 84) ran the FastConfig
|
||||
% default hot preset (lr=3e-3, adam beta1=0.5, beta2=0.9); vanilla (job 97) ran a
|
||||
% gentle preset (lr=1e-3, adam 0.9/0.99). Both beta=0 (no KL). This cuts in our
|
||||
% favour -- route2 holds hack at 0 even under the more aggressive optimizer that
|
||||
% drives vanilla up -- but it is not yet apples-to-apples. TODO: regenerate from
|
||||
% the matched beta=1e-5 pair (jobs 100/101, _none200_kl5 / _route2200_kl5) when
|
||||
% they land; expect the same qualitative result. This replaces the earlier job-85
|
||||
% hot-preset vanilla, whose step-88 "collapse" was a preset artifact (job 97 stays
|
||||
% coherent: lp_s in [-0.47,-0.29] through step 200), not a property of vanilla GRPO.
|
||||
\begin{figure}[t]
|
||||
\centering
|
||||
\includegraphics[width=0.95\linewidth]{../../out/figs/dyn_longrun_200.png}
|
||||
\caption{Deploy hack (red) and solve (green) over 200 GRPO steps for the same
|
||||
two arms, seed 41 (deploy evaluation $n{=}64$, $T{=}0.7$, EMA-5). route (right)
|
||||
holds deploy hack at $0$ for all 200 steps while solve climbs to ${\sim}0.61$
|
||||
and plateaus. vanilla (left) acquires the hack (${\sim}0.55$ by step~80), then
|
||||
collapses around step~88: student log-prob craters, reward falls to $0$, and the
|
||||
pre-clip gradient norm spikes ${\sim}75\times$ with no KL anchor, dragging hack
|
||||
and solve down together. That late descent is degeneration, not hack
|
||||
suppression, so the valid comparison window is steps 0--85; within it vanilla
|
||||
acquires the hack and route never does.}
|
||||
\caption{Deploy hack (red) and solve (green) over 200 GRPO steps, seed 41
|
||||
(deploy evaluation $n{=}64$, $T{=}0.7$, EMA-5). route (right) holds deploy hack
|
||||
at $0$ for all 200 steps while solve climbs to ${\sim}0.61$ and plateaus.
|
||||
vanilla (left) acquires the hack from onset near step~40 and rises to
|
||||
${\sim}0.32$ by step~200, with solve plateauing lower (${\sim}0.47$). Neither
|
||||
arm degenerates. Optimizer settings differ between arms (route2 ran the
|
||||
aggressive default preset, vanilla a gentler one; see source comment), so this
|
||||
is a directional rather than matched comparison; the matched-optimizer
|
||||
regeneration is pending.}
|
||||
\label{fig:longrun}
|
||||
\end{figure}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user