Data provenance
anneal-confirm · ac83f85 (dirty) · run 2026-10-27
via reports/m2/anneal-confirm/along, reports/m2/anneal-confirm/axes, reports/m2/anneal-confirm/calls, reports/m2/anneal-confirm/finished-trajectories, reports/m2/anneal-confirm/restricted-axes
loss-rate · 9a37845-dirty (dirty) · run 2026-10-21
via reports/m2/loss-rate/calls
reference-baseline · dc95e0f-dirty (dirty) · run 2026-10-24
via reports/m2/reference-baseline/axes
soft-pool · 434a7a7 · run 2026-10-20
via reports/m2/soft-pool/trajectories
soft-pool-scout · 4017bcf · run 2026-10-26
via reports/m2/soft-pool-scout/axes, reports/m2/soft-pool-scout/restricted-axes
split-anti-seeds · 87826ef · run 2026-10-13
via reports/m2/split-anti-seeds/trajectories

Anneal confirmation

The pool over slices 1 to 3, with its slice temperature annealing slowly from 0.1 to 0.025, keeps the anchor on every run at eight fresh seeds. An early callCall The early verdict on whether a run kept the anchor, from mean α at the example answers at slice 3 over epochs 44 to 64. A run below 0.15 is called lost, and one from 0.28 kept. A run in between is finished and measured. at epoch 64 finds the anchor kept on every run of a forty-seed count too. SpillSpill The largest drop on any other op, at the dose where it is largest. Lower is better, and a run above 0.02 is over the criterion. and the task stay within the criteria of the D2.2 design (one run ends at the spill line), and removalRemoval The drop on difference under the full edit at every position and slice, as a share of the way from the clean score to the target null. Higher is better, and a run below 0.5 has lost the anchor. is about that of falloff.

The soft pool scoutsoft pool scout The pool over slices 1 to 3 with \(\tau_\ell\) held at 0.1 keeps the anchor on all eight seeds with no early spill, and one seed rises late to near the criterion. found a candidate for the recipe of record: the pull pooled over slices 1 to 3, with the slice temperature \(\tau_\ell\) held at 0.1.11 Slice temperature: how sharply the pooled pull picks among slices. The pull is a softmin-weighted mix over slice and position pairs, and \(\tau_\ell\) sets how peaked the weights over slices are, as the pooling temperature \(\tau_p\) does over positions. It keeps the anchor and stays within the spill criterion at seeds 704 to 711. But on one or two seeds, spill rises late and ends near the criterion. The late spill scoutlate spill scout The late spill follows the anti anneal, and sharpening \(\tau_\ell\) to 0.025 over epochs 64 to 360 lowers it with no measured cost to removal or the task. then found that sharpening \(\tau_\ell\) further late in training, to 0.025, lowered that late rise at no measured cost.

Here the two moves become one. \(\tau_\ell\) falls from 0.1 at the start to 0.025 at epoch 400, smoothly on a log scale. So it is still close to 0.1 while the anchor settles, and reaches the halfway point (0.05) at epoch 200. We call this recipe τ_ℓ anneal.

This is the confirmation run for adopting τ_ℓ anneal as the recipe of record. It trains the recipe to the end at eight fresh seeds (712 to 719), with a control at each seed. It also trains it to epoch 64 at forty seeds (704 to 743), to count lost anchors.

Observations

Scope and method

This is an exploratory study, with no preregistration and no gate. We set four checks before the runs. They guide the choice of recipe without deciding it, so a recipe that misses one narrowly can still be the better choice:

  1. Every run at seeds 712 to 719 keeps the anchor (removalRemoval The drop on difference under the full edit at every position and slice, as a share of the way from the clean score to the target null. Higher is better, and a run below 0.5 has lost the anchor. at least 0.5).
  2. No run at those seeds ends over the spillSpill The largest drop on any other op, at the dose where it is largest. Lower is better, and a run above 0.02 is over the criterion. criterion of 0.02.
  3. Removal is no lower than that of falloff at seeds 704 to 711. The task passes the gate of the D2.2 design against the control at the same seed: a mean change over ops of at least −0.02, and at least −0.05 on any one op.
  4. At most one run of the forty loses the anchor. That is about as few as step, soft τ (none of forty) and falloff (one) lost in the loss-rate screenloss-rate screen A call from α at the example answers over epochs 44 to 64 sorts lost anchors from kept ones; at forty seeds falloff lost one and step, soft τ none., and forty seeds can't tell those two counts apart.

τ_ℓ anneal is τ_ℓ fixed from the soft pool scoutsoft pool scout The pool over slices 1 to 3 with \(\tau_\ell\) held at 0.1 keeps the anchor on all eight seeds with no early spill, and one seed rises late to near the criterion. (in full, τ_ℓ 0.1, τ_ℓ fixed) with one change: \(\tau_\ell\) moves from 0.1 to 0.025 over epochs 0 to 400, on a minimum-jerk curve in log \(\tau_\ell\).22 Minimum-jerk: a smooth S-shaped path that starts and ends at rest, so the change is slow at both ends and fastest in the middle. The position temperature \(\tau_p\) still sharpens from 1 to 0.1 by epoch 40, the anchor weight still warms up over the first 40 epochs, and the anti weight still anneals to the per-slice holds of falloff by epoch 360.

The forty runs of the count use the same seeds as the falloff and step, soft τ runs of the loss-rate screen. So each run pairs with a run of each of those recipes by initialization, batches, and label draws. Each run stops at epoch 64 for its callCall The early verdict on whether a run kept the anchor, from mean α at the example answers at slice 3 over epochs 44 to 64. A run below 0.15 is called lost, and one from 0.28 kept. A run in between is finished and measured., made as in that screen.

The runs at 712 to 719 continue from those stops to epoch 400, keeping a checkpoint every 32 epochs. Each control trains for the full schedule at the same seed, with no pull and no anti term. All runs trained and were measured on L4 GPUs.

The stored recipes ran at seeds 704 to 711, and τ_ℓ anneal at 712 to 719. So a difference between them includes the variation between two draws of eight seeds. Under falloff and step, soft τ, removal varies by about 0.15 across seeds, with one or two low seeds in eight. A difference in the seed mean smaller than a few hundredths is within that variation.

The measurements

Every edit below is the e₁ edit. Each score is the drop under that edit, less the median drop under the same edit along each of the other 63 coordinate axes of the run (the rule of the D2.2 design).

Removal
The drop on difference under the full edit at every position and slice, as a share of the way from the clean score to the target null. Higher is better, and a run below 0.5 has lost the anchor.
Spill
The largest drop on any other op, at the dose where it is largest. Lower is better, and a run above 0.02 is over the criterion.
Spill along training
Spill at the full dose, measured on each checkpoint a run kept (epochs 16, 32, and 64, then every 32 epochs) and at the end.
Task change
The clean score per op, less that of the control at the seed.
Call
The early verdict on whether a run kept the anchor, from mean α at the example answers at slice 3 over epochs 44 to 64. A run below 0.15 is called lost, and one from 0.28 kept. A run in between is finished and measured.

The anchor at fresh seeds (E1)

Does every run at the fresh seeds keep the anchor, and are removalRemoval The drop on difference under the full edit at every position and slice, as a share of the way from the clean score to the target null. Higher is better, and a run below 0.5 has lost the anchor. and the task as good as under falloff?

Three panels, one column per recipe (falloff, step soft τ and τ_ℓ fixed at seeds 704 to 711, τ_ℓ anneal at 712 to 719), seeds as dots. Removal: τ_ℓ fixed sits tightly near 0.90; falloff and step soft τ spread from about 0.76 to 0.91; τ_ℓ anneal spreads from 0.74 to 0.92, mean 0.86. Spill: every recipe has most seeds below zero; τ_ℓ anneal tops out at 0.020, at the criterion of 0.02, and τ_ℓ fixed has one seed at 0.020 too. Task change: τ_ℓ anneal between -0.013 and 0.011, above the gate at −0.02; falloff has one seed at −0.032. Three panels, one column per recipe (falloff, step soft τ and τ_ℓ fixed at seeds 704 to 711, τ_ℓ anneal at 712 to 719), seeds as dots. Removal: τ_ℓ fixed sits tightly near 0.90; falloff and step soft τ spread from about 0.76 to 0.91; τ_ℓ anneal spreads from 0.74 to 0.92, mean 0.86. Spill: every recipe has most seeds below zero; τ_ℓ anneal tops out at 0.020, at the criterion of 0.02, and τ_ℓ fixed has one seed at 0.020 too. Task change: τ_ℓ anneal between -0.013 and 0.011, above the gate at −0.02; falloff has one seed at −0.032.

Removal, spill, and task at epoch 400, by recipe. One column per recipe: the stored runs of falloff, step, soft τ and τ_ℓ fixed at seeds 704 to 711, and τ_ℓ anneal at the fresh seeds 712 to 719; the seeds as small dots over a thin bar for their range, the seed mean as the large mark. Left: removal at the full dose. Middle: spill, the largest net drop on another op at any dose; the dashed line is the criterion, with the side over it hatched. Both are net of the median over the other 63 axes of the run. Right: the task change, the mean clean score over ops less that of the control at the seed, with the gate of the D2.2 design dashed.

recipeseedsremoval ↑spill ↓over criterion ↓over, block 1 ↓task change ↑worst op ↑
falloff704–7110.87 (0.77 to 0.91)−0.002 (−0.009 to 0.014)0 of 81 of 8−0.007 (−0.032 to 0.005)−0.066
step, soft τ704–7110.86 (0.76 to 0.91)−0.001 (−0.011 to 0.012)0 of 81 of 8−0.005 (−0.014 to 0.007)−0.036
τ_ℓ fixed704–7110.90 (0.88 to 0.91)−0.001 (−0.011 to 0.020)0 of 81 of 8−0.000 (−0.008 to 0.010)−0.023
τ_ℓ anneal712–7190.86 (0.74 to 0.92)−0.002 (−0.008 to 0.020)0 of 81 of 8−0.002 (−0.013 to 0.011)−0.036

Removal, spill and task at epoch 400, seed mean and range over eight runs, net of the median drop over the other 63 coordinate axes of the run. "Over, block 1" counts the runs over the criterion under the same edit restricted to block 1. The task change is the mean over ops of the clean score less that of the control at the seed; "worst op" is the lowest such change on any op of any run. The three stored recipes are at seeds 704 to 711 and τ_ℓ anneal at 712 to 719, so the rows compare different seeds.

Every run keeps the anchor, and every run passes the task gate. The task stays within about a hundredth of the control on the mean over ops. The worst single op is darken at seed 717 (−0.036), against a gate of −0.05. falloff has one run that misses the gate on one op.

Removal is close to that of falloff on the seed mean, and below that of τ_ℓ fixed. Most of the difference comes from two seeds, 719 and 718, which remove about as little as the lowest runs of the step recipes (falloff and step, soft τ). The lower of the two, seed 719 at 0.74, is the only run below the lowest falloff run. It is still well clear of the line where a run counts as lost. The other six spread from 0.83 to 0.92.

So removal under τ_ℓ anneal varies across seeds the way it does under the step recipes, while under τ_ℓ fixed it was unusually even at its eight seeds. We can't tell from this whether the anneal or the seeds make the difference, since the two recipes never ran at the same seeds.

The late spill scoutlate spill scout The late spill follows the anti anneal, and sharpening \(\tau_\ell\) to 0.025 over epochs 64 to 360 lowers it with no measured cost to removal or the task. found that sharpening \(\tau_\ell\) late kept removal where it was, seed by seed, which points to the seeds. But there the sharpening ran over epochs 64 to 360, carried on from stored epoch-64 states, where here it runs over the whole schedule.

Spill at the end and along training (E2)

Does any run end over the spillSpill The largest drop on any other op, at the dose where it is largest. Lower is better, and a run above 0.02 is over the criterion. criterion, and does the late rise of the soft pool scoutsoft pool scout The pool over slices 1 to 3 with \(\tau_\ell\) held at 0.1 keeps the anchor on all eight seeds with no early spill, and one seed rises late to near the criterion. show up along training? The figure shows the spill of each seed along training. Beneath it are the clean score of the op the spill falls on, and the two schedules that move late.

Four stacked panels sharing an epoch axis from 16 to 400. Top: spill at each kept checkpoint for the eight seeds, as faint lines, with seed 713 and seed 714 drawn darker. Most seeds sit between −0.03 and 0.01 throughout. Seed 714 jumps to 0.08 at epoch 32, is at the criterion at the next checkpoint, and is back near zero by the one after. Seed 713 has a bump to 0.029 at epoch 96, then wanders near zero until about epoch 300, then rises to 0.020 at the end, at the criterion. Second: the clean score on mix for every seed, rising slowly from about 0.1 to 0.29, with seed 713 no different from the others. Third: τ_ℓ on a log scale, from 0.1 to 0.025. Bottom: the anti weight at slice 3, from 0.25 to its hold of 0.07 by epoch 360, then down to near zero with the anchor over the last 40 epochs. Four stacked panels sharing an epoch axis from 16 to 400. Top: spill at each kept checkpoint for the eight seeds, as faint lines, with seed 713 and seed 714 drawn darker. Most seeds sit between −0.03 and 0.01 throughout. Seed 714 jumps to 0.08 at epoch 32, is at the criterion at the next checkpoint, and is back near zero by the one after. Seed 713 has a bump to 0.029 at epoch 96, then wanders near zero until about epoch 300, then rises to 0.020 at the end, at the criterion. Second: the clean score on mix for every seed, rising slowly from about 0.1 to 0.29, with seed 713 no different from the others. Third: τ_ℓ on a log scale, from 0.1 to 0.025. Bottom: the anti weight at slice 3, from 0.25 to its hold of 0.07 by epoch 360, then down to near zero with the anchor over the last 40 epochs.

Spill along training, and the op it falls on. Top: the spill at the checkpoints kept at epochs 16, 32 and 64 and then every 32 epochs, and at the end, net of the median over the other 63 axes of the run, for each of the eight seeds; seed 713 (the highest at the end) and seed 714 (the highest early) are drawn darker, and the dashed line is the criterion, with the side over it hatched. Second: the clean score on mix, the op the late spill falls on, for each seed. Below them, the two schedules that move late: the slice temperature τ_ℓ (log scale) and the anti weight λ_s̄ at slice 3.

No run ends over the criterion, and one ends at it. Seed 713, after an early bump, stays near zero until about epoch 300, then rises to 0.020 at the end. That is 0.0002 under the line, less than a change of GPU moved this score in the late spill scoutlate spill scout The late spill follows the anti anneal, and sharpening \(\tau_\ell\) to 0.025 over epochs 64 to 360 lowers it with no measured cost to removal or the task. (up to 0.003). So we count it as at the line rather than under it. The other seven end below or near zero.

This is the late kind of spill that the soft pool scout saw on one or two seeds in eight, at about the same size and on the same op (mix, as on seed 707 under τ_ℓ fixed). So the slow anneal does not remove it.

Every seed is still learning mix over the whole run, which fits the earlier finding, quoted in the late spill scout, that the late kind falls on ops a run is still learning. But seed 713 learns it no later than the others, so when mix is learned does not say why this seed rises and the others don't.

Early on, two seeds have brief bumps over the line. Seed 714 reaches 0.08 at epoch 32, while the position pool sharpens. It is still at the line (0.020) at the next checkpoint, and near zero by the one after. Seed 713 reaches 0.029 at epoch 96, and is near zero again by 128.

These bumps are the early kind of spill. The soft pool scout scored τ_ℓ fixed at seeds 704 to 711 on the same early checkpoints (16, 32, 64, and 128) and saw no spill above 0.003 there. By epoch 32 the anneal has moved \(\tau_\ell\) by about one percent, so the bumps do not come from the anneal.

Two runs of eight against none of eight can't tell whether the two draws of seeds differ here or the bumps are simply uncommon. The stored runs of the step recipes were not scored this densely, so we don't know how common such bumps are under them.

Under the edit at block 1 alone, one run goes over the criterion (713, at 0.028). The run that rises late is also the one that spills at block 1. That fits what recipe-comparerecipe-compare The spill of the pool with a soft slice temperature enters at block 1, the one slice the pool pulls and the step recipes leave alone. found under the pool: the spill enters with the edit at block 1. But one run of every recipe goes over at block 1 (table in E1), the step recipes included, so the block-1 spill on its own does not single out the pool.

Lost anchors at forty seeds (E3)

How many of the forty runs lose the anchor by the callCall The early verdict on whether a run kept the anchor, from mean α at the example answers at slice 3 over epochs 44 to 64. A run below 0.15 is called lost, and one from 0.28 kept. A run in between is finished and measured. at epoch 64, and how does that compare with falloff and step, soft τ at the same seeds?

Window means of α at the example answers for three recipes at the same forty seeds, as dots in three columns with grey lines joining each seed across them. Dashed lines at 0.15 (lost below) and 0.28 (kept above). Falloff spreads from about 0 to 0.6, with one seed below 0.15 and a few near 0.2; step soft τ from about 0.33 to 0.6; τ_ℓ anneal from 0.43 to 0.61, every seed above 0.28. Window means of α at the example answers for three recipes at the same forty seeds, as dots in three columns with grey lines joining each seed across them. Dashed lines at 0.15 (lost below) and 0.28 (kept above). Falloff spreads from about 0 to 0.6, with one seed below 0.15 and a few near 0.2; step soft τ from about 0.33 to 0.6; τ_ℓ anneal from 0.43 to 0.61, every seed above 0.28.

The early call at forty seeds. Mean α at the example answers at slice 3 over epochs 44 to 64, for each run, with a grey line joining the runs of a seed. falloff and step, soft τ are the calls of the loss-rate screen (and at seeds 704 to 711, the same window mean on their stored full runs). Below 0.15 a run is called lost and from 0.28 kept, with the band between finished and measured.

The call finds all forty runs kept. The lowest window mean (mean αAlignment How far a state points along e₁: the cosine between the state and e₁, which for a unit-length state is its component along e₁; 1 on the anchor direction and 0 off it. over epochs 44 to 64) is seed 724 at 0.43, above the line where a run counts as kept, so no run needed finishing to settle its call.

With none lost of forty, the rate of lost anchors is below 7% (a one-sided 95% bound), the same bound as for step, soft τ in the loss-rate screenloss-rate screen A call from α at the example answers over epochs 44 to 64 sorts lost anchors from kept ones; at forty seeds falloff lost one and step, soft τ none.. The call is made at epoch 64. The eight runs that went on to epoch 400 kept the anchor there too. The other 32 runs were scored only for the call, so the count says nothing about their spillSpill The largest drop on any other op, at the dose where it is largest. Lower is better, and a run above 0.02 is over the criterion..

Seed by seed, the window means are above those of falloff on 38 of forty seeds and above those of step, soft τ on 35. A soft position temperature at the start, which τ_ℓ anneal shares with step, soft τ, may be what brings the example answers onto e₁ early on every seed. But τ_ℓ anneal is also above step, soft τ on most seeds, so the soft start is not the whole of it. The pool over three slices may add to it, but nothing here separates the two. The soft start was added so the pull would not latch onto a syntax token while it settles, and that is its main job; whether a sharp slice temperature now does that job on its own is not something this run tests.

Discussion

τ_ℓ anneal meets three of the four checks outright. Every run at the fresh seeds keeps the anchor (check 1), none ends over the spillSpill The largest drop on any other op, at the dose where it is largest. Lower is better, and a run above 0.02 is over the criterion. criterion though one ends at it (check 2), and the count of lost anchors is the lowest a count of forty can give (check 4).

Check 3 has two halves, and the task half passes on every run. On the removalRemoval The drop on difference under the full edit at every position and slice, as a share of the way from the clean score to the target null. Higher is better, and a run below 0.5 has lost the anchor. half, τ_ℓ anneal is a little below falloff on the seed mean, by less than two draws of eight seeds can differ (Scope and method). So that check is met within the seed spread rather than outright.

The late rise is still there on one seed in eight, at about the size the soft pool scoutsoft pool scout The pool over slices 1 to 3 with \(\tau_\ell\) held at 0.1 keeps the anchor on all eight seeds with no early spill, and one seed rises late to near the criterion. saw. So the slow anneal of \(\tau_\ell\) does not remove the late kind of spill; at most it keeps it at the line here.

The late spill scoutlate spill scout The late spill follows the anti anneal, and sharpening \(\tau_\ell\) to 0.025 over epochs 64 to 360 lowers it with no measured cost to removal or the task. found the effect of the late sharpening to be about the size of the difference between two GPUs, so a confirmation at eight seeds can't tell whether it helps. What the run shows is no cost we can separate from the seed draw: removal is lower than under τ_ℓ fixed on the mean, and E1 can't say whether the anneal or the seeds did that.

Two things favor the pool recipe over falloff. It chooses the slice within a range set by the architecture (slices 1 to \(L-1\)), and its early callCall The early verdict on whether a run kept the anchor, from mean α at the example answers at slice 3 over epochs 44 to 64. A run below 0.15 is called lost, and one from 0.28 kept. A run in between is finished and measured. is never unsure, where falloff stayed in the unsure band on three seeds of forty. Its count of lost anchors, none of forty against one, is a tie at this many seeds.

Against the pool recipe, one seed in eight ends at the spill line, while the eight stored runs of falloff end at most at 0.014. That is one run, set against the seed draw and the GPU shift, so it is a small mark rather than a difference we can rely on. Under the block-1 edit it goes over on one seed, as one run of every recipe does, and its removal varies across seeds as under the step recipes.

The early bumps on two seeds are the other mark, and the larger one goes well over the line. Under τ_ℓ fixed the soft pool scout saw none at the same checkpoints, but at epoch 32 the anneal has moved \(\tau_\ell\) by about one percent, so the two recipes are nearly the same there and the difference is most likely between the two draws of seeds. Both bumps cleared within 64 epochs, and the step recipes were never scored this early, so we can't say whether they bump too.

References

soft pool scout
The pool over slices 1 to 3 with \(\tau_\ell\) held at 0.1 keeps the anchor on all eight seeds with no early spill, and one seed rises late to near the criterion.
late spill scout
The late spill follows the anti anneal, and sharpening \(\tau_\ell\) to 0.025 over epochs 64 to 360 lowers it with no measured cost to removal or the task.
loss-rate screen
A call from α at the example answers over epochs 44 to 64 sorts lost anchors from kept ones; at forty seeds falloff lost one and step, soft τ none.
recipe-compare
The spill of the pool with a soft slice temperature enters at block 1, the one slice the pool pulls and the step recipes leave alone.

  1. Slice temperature: how sharply the pooled pull picks among slices. The pull is a softmin-weighted mix over slice and position pairs, and \(\tau_\ell\) sets how peaked the weights over slices are, as the pooling temperature \(\tau_p\) does over positions. ↩

  2. Minimum-jerk: a smooth S-shaped path that starts and ends at rest, so the change is slow at both ends and fastest in the middle. ↩