Weight projection for two-circuit-network RLVR stability at longer K

Weekly update · self-contained for other teams · every term defined on this page · all numbers from full-precision (fp32) weight trajectories.

✓  Verified by Shamane

1. This week, in one line

We tested a cheap idea for keeping two loosely-coupled training circuits in sync at longer coordination intervals, let the stale side predict its partner’s future weights instead of waiting for them, and found it is a solid, robust win on an easier task (about 6% closer to the true weights, useful tens of steps out) but on a harder task the per-step learning is very noisy, so projecting the weights forward buys nothing and plain do-nothing wins. That gap is itself informative: how noisy the per-step learning is (how coherent the optimization is), as we discuss, likely reflects the small model’s capability on hard math as much as any flaw in the projection method. One cheap-to-measure signal, how aligned consecutive weight updates are, predicts which regime you are in, so the design answer is to gate the trick on trajectory coherence rather than apply it blindly.

2. Background & the goal

The method: the two-circuit-network RLVR setup

We train the model split into two circuits (two partitions of the network) that must stay coordinated while the model learns from reward (RLVR). Exchanging everything between the circuits on every step is expensive; the entire point of the method is to cut that boundary traffic. So between coordination points, each circuit does its work against a stale copy of the other circuit’s weights.

The problem: staying stable at longer K

K is how many steps we let pass between coordinations (refreshes). Larger K means less communication, which is cheaper, but the stale copy drifts further from the truth, and that drift is what threatens training stability. Staying stable as K grows is the real target; everything below is in service of it.

The initial idea: go deep on weight projection

The bet: rather than wait for a fresh copy (or refresh more often), the circuit holding the stale copy could locally extrapolate the partner’s weights forward along their recent trajectory, a cheap prediction that keeps it close even at larger K. If a stale copy can predict where the partner is heading, staleness stops mattering. That is the bet we went deep on.

What we did

A focused, offline weight-projection study on real saved training trajectories: does the bet hold, how far ahead does it hold, on which parts of the network, and on which datasets, answered before committing anything to the live system. Everything below is a pure replay of saved weights; no training was run to produce these numbers.

3. Setup

The two datasets

Same model (a 1.5B instruct model), same RL recipe (vanilla GRPO), two training datasets: an easier one (grade-school math word problems, “GSM8K”) and a harder one (filtered competition-style math, “MATH”). We look at both on purpose, a trick that only works in the easy regime is not one we can ship.

How we collected the checkpoints

During each run we saved the complete set of weight matrices (all 338 of them) at regular snapshots, 160 across the easier run, 50 across the harder run (spaced ~20 steps apart, 1000 steps total). All analysis is on the fp32 trajectories; we deliberately excluded lower-precision traces so the numbers reflect real weight motion, not quantization noise.

4. How to read the numbers

The projection ratio: “did extrapolating help?”

For a stale copy at time t, doing nothing means keeping θ_t; its error is the distance to the true future weights, ‖θ_t − θ_future‖. A prediction θ̂ has error ‖θ̂ − θ_future‖. The projection ratio is simply

ratio = predicted error ÷ do‑nothing error

Why the ratio is the right yardstick

Median, and the p10-p90 band

We never score a single checkpoint pair. For each setting we slide the prediction window across the whole trajectory and report the median ratio over all windows, with the 10th-90th-percentile band as the spread. Median (not mean) so a few pathological windows can’t dominate; the band shows how consistent the effect is.

5. The projection methods, and which one wins

Each method is a rule for turning a few recent snapshots into a guess for a future one, graded by the ratio above and always out-of-sample (any tuning is chosen only from windows strictly earlier than the one being scored, no peeking at the answer). This is the definitional reference for the rest of the doc.

The method ladder, what each one is

Scored fairly: for each anchor-spacing Δ and horizon h we slide the anchor pair across the entire trajectory, predict h ahead, and grade against the true snapshot we already have. Online, the loop is: fit from recent snapshots → predict ahead → when the next real snapshot arrives, snap to it and re-fit, so error never accumulates.

The methods as equations

Let θt be the weights at step t, and predict h steps past a stale anchor at t. With reach κ = h/Δ:

hold-staleθ̂t+h = θt
naive linearθ̂t+h = θt + κ (θt − θt−Δ)
damped linearθ̂t+h = θt + λ κ (θt − θt−Δ), λ ∈ [0,1]
second-orderθ̂t+h = θt + λ κ vt + μ ½κ² at
vt = θt − θt−Δ (velocity), at = θt − 2θt−Δ + θt−2Δ (curvature)
projection ratiort,h = ‖θ̂t+h − θt+h‖ ÷ ‖θt − θt+h

So λ=0 recovers hold-stale, λ=1 recovers naive linear, and μ=0 drops the curvature term. The whole ladder is one family with two knobs (λ for the slope, μ for the curvature); “which method wins” is really “which knobs to keep, and whether to fix them or learn them.”

How the adaptive rule learns its step size (rolling least-squares / MLS)

The self-correcting arms do not fix λ; they re-estimate it online from the most recent real checkpoints. Once the true θs+h for an earlier window s has arrived, it becomes a label: we fit the λ that would have predicted it best, then apply that λ to the current window. Over the last K completed windows this is a one-parameter least-squares fit with a closed form (the projection of the realized move onto the extrapolation step):

adaptive λ (rolling LS)λt = ∑s ⟨ κΔθs, θs+h−θs ⟩ ÷ ∑s ‖κΔθs‖²
sum over the last K windows s with s+h < t (out-of-sample); Δθs = θs − θs−Δ

We tried a family of these: bounded rolling least-squares over the last K checkpoints (rolling-LS / moving least-squares, the best arm at K=5), an expanding-window LS, EWMA and momentum smoothing of λ, a two-parameter version that also fits the curvature μ, and warm-up / clip schedules, all fit strictly out-of-sample. On the frozen trace λ genuinely keeps adapting (it drifts 0.19→0.36 over training, and tracks higher, ~0.5, at short spacings) and never collapses. It just does not buy enough here to beat a single constant (next).

2026-07-06T13:36:51.603420 image/svg+xml Matplotlib v3.10.9, https://matplotlib.org/ 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 projection ratio at the operating point (Δ=10, h=10 steps): lower is better fixed damped-linear adaptive linear (self-correct) do nothing (hold stale) fixed second-order (damped) naive linear (full step) naive second-order (full step) do-nothing line 0.940 0.935 1.000 1.148 1.155 1.88 (off-scale) How each method does on GSM8K: first-order + damping wins
Figure 1. How each method does on the easier dataset (GSM8K). Projection ratio at the operating point (anchors 10 apart, predict 10 ahead); the dashed line is do-nothing. First-order + damping wins (0.94, a ~6% gain). Curvature hurts (both second-order arms sit above 1.0; the full second-order runs off-scale at 1.88). The undamped “naive” step over-shoots (1.15), damping is what turns it into a win. The best self-correcting arm (0.935) edges the fixed rule by only 0.004.

Reading the chart: why the fixed rule wins even though it is not the lowest bar

A fair question from Figure 1: the fixed damped-linear bar (0.940) is a hair longer than the adaptive bars (0.935-0.938), so why is it the winner? Because the winner is the simplest method that captures essentially all the available skill, not the numerically lowest one. The best adaptive arm beats the fixed rule by at most 0.0045 in ratio, which is below the 0.01 margin we require before paying for extra machinery, while it carries online state (re-fitting λ every step) and gives no better prediction accuracy. In skill-over-do-nothing terms (how far below 1.0 the ratio sits) the fixed rule recovers about 93% of the best arm’s advantage with a single constant λ≈0.3 and zero online fitting, so prefer-simplicity selects it. This is a verdict about a frozen trace; the live system is a different regime (see the box below).

methodratio ↓Δ vs fixedpred. accuracy ↑extra state
best self-correcting arm (rolling-LS, K=5)0.9351−0.0045+0.121online re-fit
adaptive linear (expanding LS)0.9380−0.0016+0.117online re-fit
adaptive second-order0.9387−0.0009+0.1182 params, online
fixed damped-linear (WINNER)0.9396(reference)+0.1171 constant, none
do nothing (hold stale)1.0000+0.060400

Every arm clears ratio < 1; the adaptive arms are lower by ≤ 0.0045 (sub-margin) at the cost of online state. GSM8K operating point (per-step Δ=10, h=10, global row). Curvature and undamped variants sit above 1.0 and are omitted here (see Figure 1).

What the ladder says

Why adaptive / learnable methods are NOT dead, and why we trust them in the real two-circuit network

“Fixed wins” is an offline model-selection call on a frozen trace, where an extra learned scalar bought too little to justify its complexity. It is not a claim that learnable correction is unnecessary live. Three reasons the real system should, and will, use adaptive/learnable methods:

6. The cross-dataset verdict (fp32): easier vs harder

The headline: the exact same projector that wins on the easier dataset falls back to “do nothing” on the harder one: because on the harder task the per-step learning is very noisy, so the weight path is far less coherent (more on why below).

2026-07-06T13:36:51.527836 image/svg+xml Matplotlib v3.10.9, https://matplotlib.org/ GSM8K (easier) MATH (harder) 0.90 0.92 0.94 0.96 0.98 1.00 1.02 projection ratio (lower = better; <1 beats do-nothing) do-nothing line (hold stale) = 1.0 0.940 WINS 1.000 no gain Did forward-projection help? GSM8K (easier) MATH (harder) 0.0 0.2 0.4 0.6 0.8 1.0 trajectory coherence (alignment of consecutive updates) 0.86 aligned path 0.15 very noisy (near-orthogonal) Why: is there a direction to project along?
Figure 2. Same projector, two datasets; coherence decides. Left: the fixed damped-linear rule scores 0.94 on the easier dataset (wins) but 1.00 on the harder one, where the per-step learning is so noisy that its damping is driven to zero and it settles on doing nothing. Right: the discriminator is the alignment of consecutive weight-update directions, 0.86 (a smooth, persistent path a line can ride) vs 0.15 (near-orthogonal steps: a random-walk-looking path with no direction to project along).
2026-07-06T13:36:51.681078 image/svg+xml Matplotlib v3.10.9, https://matplotlib.org/ 0 10 20 30 40 horizon h (checkpoints ahead of the stale copy) 0.8 0.9 1.0 1.1 1.2 1.3 projection ratio (lower = better) up to 1.8 beats stale out to ≈30 steps ahead GSM8K: projection beats stale far out do nothing damped-linear naive linear 0 5 10 15 20 25 30 horizon h (checkpoints ahead of the stale copy) up to 2.6 damped-linear rides ratio ≈ 1.0 (no skill to extract) MATH: projection sits on the do-nothing line
Figure 3. How accuracy decays with horizon. On the easier dataset (left) the damped line stays below the do-nothing line out to ≈30 steps ahead, real skill over a useful window. On the harder dataset (right) it rides the do-nothing line at every horizon, no skill to extract. Undamped “naive” extrapolation is harmful on both, and worse on the harder path. (Checkpoints are ~1 step apart on the left, ~20 steps apart on the right.)
 GSM8K (easier)MATH (harder)
Best projector at the operating pointfixed damped-linear (wins)do-nothing (hold stale)
Projection ratio0.941.00
Skill vs do-nothing+6%~0%
Useful horizon≈30 steps ahead~0 (only at the freshest anchor)
Consecutive-update alignment0.86 (aligned)0.15 (near-orthogonal)
Biases familyprojects safelyactively harmed → exclude

Why MATH looks random, and why it may still be workable

“Looks random.” The 0.15 coherence is uniform: the same ~0.15 across every anchor spacing, every layer family, and every phase of training. At the operational staleness (checkpoints ~20 steps apart, horizons of ~100-200 steps) there is nothing for a projector to gain over do-nothing, and the biases family is actively harmed by any projection.

Why the harder path is more random, and why this is NOT just “projection fails.” Three things to hold together. (1) Scope: the 0.15 is a step-to-step (consecutive-update) number. The whole-trajectory (cumulative) motion stays far more coherent than that: its per-matrix linearity R² is ≈0.62 on MATH vs ≈0.68 on GSM8K: barely different across datasets, whereas the step-to-step number drops sharply from 0.86 to 0.15 (the per-step learning on MATH is very noisy; Figure 4). On the easier set the SVD section (below) goes further and shows the cumulative motion is ~99% rank-1 with a near-linear coefficient (R² ≈ 0.98); we ran that rank-1 decomposition only on the easier trace, so on MATH we lean on the trajectory-R² comparison, not the 99% figure. Either way, the coarse direction of travel stays coherent on both datasets; it is the fine, per-tick increments that go noisy on the hard one. (2) Prior work already shows projection improves the metric that matters (downstream performance) on essentially this setup (a small model, GRPO/RLVR, math): Wang et al. 2026 (“Linear Dynamics in the RLVR Training of LLMs”) find weight and output trajectories are strongly linear (R² > 0.7) and that simple linear extrapolation matches RL at 6.1× less compute in weight space and beats it by +4.2% in output space; Wei et al. 2026 (“You Only Need Minimal RLVR Training”, RELEX) show a rank-1 SVD extrapolation from as little as ~15% of the steps matches or exceeds full RLVR on MATH (including on Qwen2.5-Math-1.5B) and generalizes out-of-domain, training-free, with the SVD acting as a spectral denoiser. (3) Capability: RELEX used a math-specialized base (Qwen2.5-Math-1.5B); we used a general 1.5B-Instruct on the harder Big-Math set. A general small model at the edge of hard competition math gets a sparser reward signal and noisier, less directional updates, consistent with both papers’ premise that RLVR mostly elicits and amplifies capabilities already latent in the base model. Read together: step-to-step coherence (hence short-horizon projectability) tracks how well the model can actually learn the task and should rise with a stronger / task-aligned base or an easier curriculum, so “do-nothing wins on the harder set” is as much about a general small model on hard math as about the method.

2026-07-06T13:36:51.866261 image/svg+xml Matplotlib v3.10.9, https://matplotlib.org/ Step-to-step alignment (consecutive-update cosine) Whole-trajectory linearity (per-matrix R²) 0.0 0.2 0.4 0.6 0.8 1.0 coherence (0 to 1) 0.86 0.68 0.15 0.62 GSM8K and MATH diverge here (~6x) GSM8K and MATH about the same here The hard task differs at the FINE (step) scale, not the COARSE (trajectory) scale GSM8K (easier) MATH (harder)
Figure 4. The hard task differs at the fine scale, not the coarse one. Step-to-step alignment (the cosine between consecutive weight updates) drops sharply from 0.86 on GSM8K to 0.15 on MATH (the per-step learning is very noisy on MATH), but whole-trajectory linearity (per-matrix R²) barely moves (0.68 vs 0.62). So the coarse direction of travel stays coherent on both datasets; only the fine, per-tick increments go noisy on the harder one. (The ~99% rank-1 / R²≈0.98 result in Figure 5 was measured on the easier trace only.)
The de-risking point: even a simple linear trajectory prediction helps, and it is validated on downstream tasks

The strongest part of that prior work is how little it takes, and where it is measured. Because the noisy, high-variance per-step RL updates aggregate into a stable low-dimensional drift, a plain linear extrapolation of the trajectory, no learned model, no curvature, is already enough: Wang et al. reach full-training quality at 6.1× less compute and improve results by +4.2% just by extrapolating, and RELEX’s rank-1 version matches full RLVR from only ~15% of the steps. Crucially, these are gains on downstream task accuracy (AIME, MATH, competition benchmarks), not on a weight-space proxy. So the downstream value of projecting the trajectory forward is already established; what our study adds is the best way to project under staleness, not whether projection can work at all.

Why it could still work (from prior work and our own data):

Takeaway: projection is coherence-gated, not universal. Measure coherence online and switch, where it is high, project with the cheap fixed rule; where it is low, fall back to shorter refresh / hold-stale and drop the fragile families (biases).

7. The SVD / rank-1 direction work, and what it opens up for correction

Separately, we asked a sharper structural question: does each weight matrix really move along one direction? For every matrix we stack its changes-from-start across all saved checkpoints and run a singular value decomposition (SVD) on that little stack, done cheaply in a tiny checkpoint×checkpoint domain, never forming a full-size vector. The top singular direction v₁ is the one direction the matrix has mostly moved along; the coefficient c(t) says how far along it each checkpoint sits. This trajectory-SVD construction follows Wei et al. 2026 (RELEX); we re-implement it and test it on our own runs.

2026-07-06T13:36:51.781509 image/svg+xml Matplotlib v3.10.9, https://matplotlib.org/ 0 20 40 60 80 100 gap between checkpoints (optimizer steps) 0.6 0.7 0.8 0.9 1.0 direction alignment (|cosine|) stays ≈0.99 (one direction, up close) drifts to 0.64 over the full run The rank-1 direction is locally sharp, globally it slowly rotates consecutive 10-step gap cumulative vs. run start 0.00 0.25 0.50 0.75 1.00 1.25 error left after repair, 1 step stale (lower = better) momentum (recent Δ) rank-2 anchored rank-1 anchored rank-1 far-ahead (paper form) do-nothing 0.46 0.68 0.99 (safe fallback) 3.9 to 21.7 (off-scale) What rank-1 is good for at short range
Figure 5. The rank-1 picture. Left: consecutive checkpoints stay ~0.99 aligned (locally it really is one sharp direction), but the cumulative alignment against the run’s first direction drifts to ~0.64, v₁ is locally sharp yet slowly rotates (~7.6° per 10-step gap). Right: at a one-step horizon, momentum (anchor + most-recent delta) removes ~55% of the error, the anchor-pinned rank-1 line is a safe never-harmful fallback (~0.99), and the textbook “project straight along v₁ far ahead” form is 4-22× worse than doing nothing.

What we found

What this opens up for our correction

The rank-1 object is a cheap, well-defined, low-dimensional trajectory state: one unit direction v₁ plus two scalars per tensor. That is a natural, compact basis for the spectral-correction lever in the two-circuit design:

The clean division of labour that falls out: momentum / anchor for short-horizon staleness repair; the SVD / rank-1 direction for long-range position, compression and spectral correction: not the other way round.

8. Caveats & open questions (the catches)

9. Next steps

References

  1. Wang, T., Liu, J., Wu, Z., Jin, S., Chen, W., Xu, H., Miao, N. (2026). Linear Dynamics in the RLVR Training of Large Language Models. arXiv:2601.04537. RLVR weight and output trajectories are strongly linear (R² > 0.7); linear weight extrapolation matches RL at 6.1× less compute, and output-space extrapolation improves downstream accuracy by +4.2%.
  2. Wei, Z., Zhu, X., Chen, W.-L., Huang, C., Huang, J., Meng, Y. (2026). You Only Need Minimal RLVR Training: Extrapolating LLMs via Rank-1 Trajectories (RELEX). arXiv:2605.21468. RLVR weight deltas are extremely low-rank; the rank-1 SVD coefficient is near-linear (R² > 0.98); extrapolation from as few as ~15% of steps matches or exceeds full RLVR on MATH (incl. Qwen2.5-Math-1.5B) and out-of-domain, training-free, with the SVD acting as a spectral denoiser.
Qwen2.5-1.5B-Instruct, vanilla GRPO, fp32 weight trajectories (338 matrices; 160 snapshots on the easier run, 50 over 1000 steps on the harder run; rank-1 study on a 61-matrix panel). All figures generated from the offline replay data; no training was run for this analysis. Verified by Shamane.