We believe momentum remains an under-optimized area of pre-training. While much recent research focuses on optimizer design, momentum often still uses a single exponential moving average (EMA) buffer with a fixed decay rate. K-Maxwell combines several such buffers and gradually shifts their weights during training. [1], [2]

How much does momentum remember?

Mean gradient age: 27.3 steps

Momentum weight by gradient ageLogarithmic weight axis. K-Maxwell is blue, Bi-Maxwell black, single EMA dashed gray. Select a buffer below to inspect its contribution.Momentum weight · log scale10⁻⁵10⁻⁴10⁻³10⁻²10⁻¹0100200300Gradient age (steps ago)
K-MaxwellBi-MaxwellSingle EMA
Buffer weights · select to highlight
How it works

The buffers keep fixed memory timescales; the slider changes their mixture weights. Curves show the scheduled profile, excluding the initialization transient and common Nesterov contribution. Experiment report ↗

Results

We simultaneously set NanoGPT records for 2 different optimizers (Muon and MuonH but not SOAP) by tuning a single more-expressive momentum implementation. K-Maxwell reduces the required training steps by 90 on Muon (2.77%) and 60 on MuonH (1.92%). The same momentum method is used for both optimizers, with six buffers on MuonH and eight on Muon. On SOAP-Muon, the observed reduction is only 10 steps (0.37%) on the current world record, with no statistically significant improvement over its predecessor, Bi-Maxwell. We suspect this is due to an overlap in how momentum and SOAP-style preconditioning [6] both address oscillations at the edge of stability.

K-Maxwell reaches the target sooner

3,250 → 3,160 steps

Muon validation lossLower loss is better. Lines connect measured checkpoints. The vertical blue line follows the iteration slider. Exact measurements and sources follow the figure.Validation loss ↓3.2723.2833.2953.3063.3172,9003,0503,1603,250Training stepTarget 3.28Single EMA: 3.31546 at step 2925; n=10Single EMA: 3.31201 at step 2950; n=10Single EMA: 3.30837 at step 2975; n=10Single EMA: 3.30499 at step 3000; n=10Single EMA: 3.30073 at step 3025; n=10Single EMA: 3.29733 at step 3050; n=10Single EMA: 3.29414 at step 3075; n=10Single EMA: 3.29102 at step 3100; n=10Single EMA: 3.28818 at step 3125; n=10Single EMA: 3.28528 at step 3150; n=10Single EMA: 3.28291 at step 3175; n=10Single EMA: 3.28087 at step 3200; n=10Single EMA: 3.27931 at step 3225; n=10Single EMA: 3.27866 at step 3250; n=10Bi-Maxwell: 3.31551 at step 2900; n=8Bi-Maxwell: 3.31377 at step 2910; n=8Bi-Maxwell: 3.31243 at step 2920; n=8Bi-Maxwell: 3.31167 at step 2925; n=8Bi-Maxwell: 3.31149 at step 2930; n=8Bi-Maxwell: 3.30987 at step 2940; n=8Bi-Maxwell: 3.30838 at step 2950; n=8Bi-Maxwell: 3.30697 at step 2960; n=8Bi-Maxwell: 3.30553 at step 2970; n=8Bi-Maxwell: 3.30503 at step 2975; n=8Bi-Maxwell: 3.30438 at step 2980; n=8Bi-Maxwell: 3.30338 at step 2990; n=8Bi-Maxwell: 3.30179 at step 3000; n=8Bi-Maxwell: 3.30030 at step 3010; n=8Bi-Maxwell: 3.29855 at step 3020; n=8Bi-Maxwell: 3.29765 at step 3025; n=8Bi-Maxwell: 3.29695 at step 3030; n=8Bi-Maxwell: 3.29562 at step 3040; n=8Bi-Maxwell: 3.29462 at step 3050; n=8Bi-Maxwell: 3.29363 at step 3060; n=8Bi-Maxwell: 3.29203 at step 3070; n=8Bi-Maxwell: 3.29148 at step 3075; n=8Bi-Maxwell: 3.29076 at step 3080; n=8Bi-Maxwell: 3.28976 at step 3090; n=8Bi-Maxwell: 3.28856 at step 3100; n=8Bi-Maxwell: 3.28748 at step 3110; n=8Bi-Maxwell: 3.28642 at step 3120; n=8Bi-Maxwell: 3.28575 at step 3125; n=8Bi-Maxwell: 3.28516 at step 3130; n=8Bi-Maxwell: 3.28404 at step 3140; n=8Bi-Maxwell: 3.28306 at step 3150; n=8Bi-Maxwell: 3.28209 at step 3160; n=8Bi-Maxwell: 3.28125 at step 3170; n=8Bi-Maxwell: 3.28077 at step 3175; n=8Bi-Maxwell: 3.28040 at step 3180; n=8Bi-Maxwell: 3.27955 at step 3190; n=8Bi-Maxwell: 3.27881 at step 3200; n=8Bi-Maxwell: 3.27817 at step 3210; n=8Bi-Maxwell: 3.27759 at step 3220; n=8Bi-Maxwell: 3.27735 at step 3225; n=8Bi-Maxwell: 3.27718 at step 3230; n=8Bi-Maxwell: 3.27687 at step 3240; n=8Bi-Maxwell: 3.27672 at step 3250; n=8K-Maxwell: 3.30828 at step 2900; n=8K-Maxwell: 3.30671 at step 2910; n=8K-Maxwell: 3.30526 at step 2920; n=8K-Maxwell: 3.30461 at step 2925; n=8K-Maxwell: 3.30437 at step 2930; n=8K-Maxwell: 3.30297 at step 2940; n=8K-Maxwell: 3.30158 at step 2950; n=8K-Maxwell: 3.30026 at step 2960; n=8K-Maxwell: 3.29893 at step 2970; n=8K-Maxwell: 3.29847 at step 2975; n=8K-Maxwell: 3.29783 at step 2980; n=8K-Maxwell: 3.29681 at step 2990; n=8K-Maxwell: 3.29547 at step 3000; n=8K-Maxwell: 3.29414 at step 3010; n=8K-Maxwell: 3.29260 at step 3020; n=8K-Maxwell: 3.29181 at step 3025; n=8K-Maxwell: 3.29118 at step 3030; n=8K-Maxwell: 3.28991 at step 3040; n=8K-Maxwell: 3.28895 at step 3050; n=8K-Maxwell: 3.28816 at step 3060; n=8K-Maxwell: 3.28682 at step 3070; n=8K-Maxwell: 3.28619 at step 3075; n=8K-Maxwell: 3.28565 at step 3080; n=8K-Maxwell: 3.28462 at step 3090; n=8K-Maxwell: 3.28356 at step 3100; n=8K-Maxwell: 3.28264 at step 3110; n=8K-Maxwell: 3.28172 at step 3120; n=8K-Maxwell: 3.28115 at step 3125; n=8K-Maxwell: 3.28059 at step 3130; n=8K-Maxwell: 3.27965 at step 3140; n=8K-Maxwell: 3.27873 at step 3150; n=8K-Maxwell: 3.27794 at step 3160; n=8K-Maxwell: 3.27717 at step 3170; n=8K-Maxwell: 3.27677 at step 3175; n=8K-Maxwell: 3.27643 at step 3180; n=8K-Maxwell: 3.27570 at step 3190; n=8K-Maxwell: 3.27507 at step 3200; n=8K-Maxwell: 3.27453 at step 3210; n=8K-Maxwell: 3.27401 at step 3220; n=8K-Maxwell: 3.27381 at step 3225; n=8K-Maxwell: 3.27366 at step 3230; n=8K-Maxwell: 3.27339 at step 3240; n=8K-Maxwell: 3.27328 at step 3250; n=8
K-MaxwellBi-MaxwellSingle EMA
Lower loss is better. Large dots mark the reported passing steps.
Data & methods

The target is loss 3.28. The formal rule is (3.28 − mean loss) × √n ≥ 0.004; n is the number of independent runs. Dotted lines in the target view show the adjusted thresholds for n=8 and n=10. Large points mark the reported passing checkpoints.

K-Maxwell uses 8 H100 runs, Bi-Maxwell uses 8 A800 runs, and the published single-EMA baseline uses 10 runs. This graph compares training steps, not wall-clock speed.

Mean validation losses; blank cells mean no measurement on that step.
StepK-MaxwellBi-MaxwellSingle EMA
29003.308283.31551—
29103.306713.31377—
29203.305263.31243—
29253.304613.311673.31546
29303.304373.31149—
29403.302973.30987—
29503.301583.308383.31201
29603.300263.30697—
29703.298933.30553—
29753.298473.305033.30837
29803.297833.30438—
29903.296813.30338—
30003.295473.301793.30499
30103.294143.30030—
30203.292603.29855—
30253.291813.297653.30073
30303.291183.29695—
30403.289913.29562—
30503.288953.294623.29733
30603.288163.29363—
30703.286823.29203—
30753.286193.291483.29414
30803.285653.29076—
30903.284623.28976—
31003.283563.288563.29102
31103.282643.28748—
31203.281723.28642—
31253.281153.285753.28818
31303.280593.28516—
31403.279653.28404—
31503.278733.283063.28528
31603.277943.28209—
31703.277173.28125—
31753.276773.280773.28291
31803.276433.28040—
31903.275703.27955—
32003.275073.278813.28087
32103.274533.27817—
32203.274013.27759—
32253.273813.277353.27931
32303.273663.27718—
32403.273393.27687—
32503.273283.276723.27866
Configuration and sourceBaseline → K-Maxwell stepsReductionRuns and reported mean loss
Tuned Muon + auxiliary AdamW; submission #357 [3]3250 → 316090 steps; 2.77%8 seeds; 3.27794
MuonH fast-slow decay; submission #359 [4]3125 → 306560 steps; 1.92%8 seeds; 3.27833
SOAP-Muon + Tail-EMA + RowFloor + CWD; companion report [5]2690 → 268010 steps; 0.37%8 seeds; 3.27847 using Tail-EMA evaluation

Experiment design

With K-Maxwell, we test the hypothesis that more expressive momentum can accelerate convergence on modded-nanoGPT Track 3 optimization. This track measures how many optimizer steps are needed to reach below 3.28 validation loss.

The setup is simple, we use approximately 2 billion FineWeb tokens, with 524,288 tokens per step and we train GPT-2 small, which is 124M parameters with 12 transformer blocks, using the Muon and MuonH optimizers.

In our experiments, we compare single-EMA momentum, Bi-Maxwell’s fixed two-buffer mixture, and K-Maxwell’s six-buffer mixture with the MuonH optimizer and an eight-buffer mixture on the Muon optimizer. Within each optimizer comparison, we only change the momentum configuration, keeping the architecture, data, batch size, and other training settings fixed.

To ensure our results are not just random variance, we test our final K-Maxwell configuration across eight seeds. We report the earliest shared checkpoint satisfying the benchmark’s rule, (3.28 − mean validation loss) × √8 ≥ 0.004, and separately test improvement over the baseline at matching step counts.

After this, we also tested our configuration at larger batch sizes, which implies an increase in the number of tokens trained on - which we continue to use FineWeb for. Surprisingly, K-Maxwell retains an advantage at larger batch sizes while Bi-Maxwell approaches the matched Muon control with momentum turned off (µ = 0). This suggests that the annealed momentum mixture does more than dampen gradient noise, which increasing batch size adequately does.

What is momentum?

Momentum is an exponential moving average (EMA) of our past gradients, which we use to update our model parameters, after pre-conditioning our momentum values, with Muon, Adam or other optimizers. Muon (Jordan, 2024), [1]

vₜ = βvₜ₋₁ + (1 − β)∇L(θₜ)
θₜ₊₁ = θₜ − ηvₜ

Single EMA momentum [1].

What does momentum do?

Momentum is commonly conceived of as a heavy ball carrying us through small divots, saddle points and across flat regions of the loss surface.

Momentum on a quadratic bowl

A steeper valley makes gradient descent zigzag. Compare both methods at the same learning rate.

A ball descending a gridded quadratic loss surfaceAn elliptical bowl with a blue Polyak momentum trajectory approaching its single minimum. Use the controls below to follow the optimization steps.Minimum
A quadratic loss, L(x, y) = ½(x² + 16y²), with 16× greater curvature across the valley than along it. The blue path follows Polyak momentum (η = 0.12, β = 0.72). Switch methods to compare their positions at the same step. Without momentum, the learning rate is close to the stability limit, producing repeated overshoots across the valley.

While this is intuitively useful, momentum does much more - helping us converge faster when curvature differs greatly across our gradient directions, or in other words, our loss objective is poorly conditioned. For a positive-definite Hessian, which describes our loss surface’s local curvature, the condition number is the ratio of its largest to smallest eigenvalues:

κ=λmaxλmin\kappa =\dfrac{\lambda_{max}}{\lambda_{min}}

To understand why momentum helps us converge faster, we can observe a simple example. For full-batch optimization of a convex quadratic loss, tuned Polyak momentum helps accelerate progress along directions of low curvature while damping oscillations along directions of high curvature, which occur at the edge of stability. In this simplified setting, it improves the convergence dependence on the condition number from κ to √κ. [7], [8]

For a positive-definite quadratic with optimally tuned constant parameters, the asymptotic contraction factors for parameter error are:

Without momentum ρ = (κ − 1) / (κ + 1)
With Polyak momentum ρ = (√κ − 1) / (√κ + 1)

Smaller ρ means faster convergence. These are parameter-error rates; they are not the per-step contraction factors for the loss itself. [7]

vt=βvt−1+∇L(θt),θt+1=θt−ηvt

Polyak momentum. [8]

The intuition is that gradients along a low curvature direction tend to keep the same sign: +g, +g, …, so momentum accumulates along a persistent gradient direction. However, down high curvature directions, updates can overshoot due to the discretized learning rate of gradient descent, causing gradients to alternate: −g, +g, −g, +g. Averaging these opposing gradients dampens this oscillating motion, which is exactly what momentum does.

Cohen et al. (2021) [9] observed that, during full-batch neural network training, the largest Hessian eigenvalue often rises and then hovers near 2η, where η is the learning rate. This is called training at the edge of stability, and we find that momentum permits us to take on larger learning rates which can speed up convergence.

Figure 1. Convergence and divergence on a quadratic loss. With learning rate η and curvature S, gradient descent converges when S < 2/η (left) and diverges when S > 2/η (right). Animation from the Central Flows companion website [19]; related edge-of-stability findings are discussed in [9].

For the standard Polyak update on a positive-definite quadratic loss, the new stability condition is 0<η<2+2βλmax, where β is the momentum coefficient. [7] In the experiments of Andreyev et al., large-batch momentum dynamics approach the optimizer-specific deterministic stability boundary, while smaller batches impose tighter stability constraints. [17]

K-Maxwell momentum

K-Maxwell momentum extends Bi-Maxwell [10] and AdEMAMix [2] using eight EMA buffers with logarithmically spaced timescales and fixed decay rates (β). AdEMAMix and Bi-Maxwell both use two EMA buffers, but AdEMAMix anneals from a shorter to a longer memory — the reverse of our annealing schedule and AdEMAMix also uses the Adam optimizer. AdEMAMix further anneals the β₃ decay rate itself over training, along with the relative weight of the longer memory EMA buffer to curb instability early on in training. Bi-Maxwell however, has a fixed memory kernel, and instead of just adding a weighted, longer memory EMA buffer, it does a weighted average of both the short and longer term memory.

AdEMAMix

m₁,ₜ = β₁m₁,ₜ₋₁ + (1 − β₁)gₜ
m₂,ₜ = β₃(t)m₂,ₜ₋₁ + (1 − β₃(t))gₜ
νₜ = β₂νₜ₋₁ + (1 − β₂)gₜ²
m̂₁,ₜ = m₁,ₜ / (1 − β₁ᵗ), ν̂ₜ = νₜ / (1 − β₂ᵗ)
θₜ₊₁ = θₜ − ηₜ(m̂₁,ₜ + α(t)m₂,ₜ) / (√ν̂ₜ + ε)

Here m₁ and m₂ are the fast and slow gradient averages. ν averages squared gradients. Hats denote correction for zero initialization. α(t) controls the slow buffer’s contribution, β₃(t) controls its memory, and ε is a small constant. [2]

Bi-Maxwell, in the tuned Muon comparison

mᶠₜ = 0.85mᶠₜ₋₁ + 0.15gₜ
mˢₜ = 0.98mˢₜ₋₁ + 0.02gₜ
m̄ₜ = 0.4385mᶠₜ + 0.5615mˢₜ
uₜ = (1 − µ)gₜ + µm̄ₜ

The fast and slow buffers use fixed decay rates and mixture weights after activation. µ is the unchanged Nesterov mixing coefficient. Bi-Maxwell implementation

In our variant, K-Maxwell, training begins with a single EMA buffer and switches to K-Maxwell at step 1000, skipping the instability AdEMAMix sees early on in training from a longer memory EMA buffer. From the switch step, we linearly interpolate the mixture weights from a mean age of 58 steps toward a mean age of 26 steps, at step 3250. Mean age describes on average, the gradient age in the EMA buffer, weighted by each past gradient’s contribution. [3]

mi,t=βimi,t−1+(1−βi)gt,mˉt=∑iwi(t)mi,tm_{i,t}=\beta_i m_{i,t-1}+(1-\beta_i)g_t, \qquad \bar m_t=\sum_i w_i(t)m_{i,t}

The following pseudocode illustrates the annealed momentum after the switch step. Initialization and the surrounding optimizer are defined in the source trainer [11].

# per Muon 2-D param, step >= 1000:
for k, beta in enumerate(kmaxwell_decay_rates):  # 8 log-spaced τ in [3, 64]
    m[k].lerp_(g, 1 - beta)
frac = (step - 1000) / 2250
w = (1 - frac) * w_age58 + frac * w_age26        # mixture mean age 58 → 26
m_eff = sum(w[k] * m[k] for k in range(8))
update = g.lerp_(m_eff, mu)                       # Nesterov mix unchanged

We use logarithmically spaced timescales to capture meaningfully different ranges of gradient history. Slower EMAs can act as low-pass filters [12], smoothing out high frequency changes while retaining persistent gradient directions. Since we know characteristic frequency ω is approximately inversely proportional to memory τ (i.e. wavelength), we adopt a logarithmic scale.

ω≈1τ\omega \approx\dfrac{1}{\tau}

However, mean age alone does not capture the expressivity allowed by multiple EMA buffers. As discussed in AdEMAMix [2], an EMA mixture can give substantial weight to the newest gradients while retaining a long tail of older gradients. The example below shows how two memory profiles can have the same mean age but have vastly different gradient ages present:

MemoryMean ageWeight on the newest gradient
Single EMA with β = 0.9519 steps5%
Equal mixture of EMAs with mean ages 3 and 3519 steps≈13.9%

We suspect that combining very distinct timescales at each training step helps reduce recurring errors, including oscillations at the edge of stability. This is loosely analogous to Richardson extrapolation [13], which combines estimates at different step sizes to remove predictable error. Our mechanism is more closely associated with the idea of multi-timescale temporal filtering, however we presume it goes beyond this as it retains a stable advantage over normal single EMA Muon even with larger batch size. For related mathematical background on stochastic momentum dynamics, see Li, Tai, and E (2019). [18]

Annealing momentum

We also observe substantial gains from annealing momentum, and see a step-function improvement over configurations that kept the mixture weights fixed. [14] We suspect that longer memory helps maintain persistent gradient directions during the extended transient phase, when training is still making broad progress. Shorter memory may then improve responsiveness during the late-stage convergence phase, when the optimizer needs to adapt quickly to oscillatory changes in gradient direction. [15]

Another possible explanation is that long momentum memory becomes less useful late in training as retaining older gradient directions can delay the optimizer’s response to changes in the loss landscape. Shortening that memory may improve responsiveness, although it also reduces noise smoothing. Optimizer families such as RMSProp and ADAM, attempt to solve related problems by adjusting updates responsively, using running squared-gradient estimates to scale updates. This changes the effective learning rate of each component, potentially slowing convergence when gradient norm grows large - which is likely to occur when training at the edge of stability. On the other hand, K-Maxwell instead adjusts how much gradient history contributes to momentum, which appears to strictly improve convergence in our experiments.

Extending to larger batch sizes

We also varied batch size in matched continuation experiments and found that K-Maxwell’s advantage remains robust at larger batch sizes, while Bi-Maxwell’s performance approaches the control: Muon with momentum turned off (µ = 0). Ordinary single-EMA Muon (µ = 0.95) is included as a separate comparison. We suspect this reflects a shift in momentum’s role as larger batches make gradients less noisy. Recent work on batch sharpness, which describes the curvature encountered along each mini-batch’s gradient direction, finds that momentum imposes a tighter stability constraint at small batch sizes. At larger batch sizes, training approaches the optimizer’s deterministic stability boundary, that is the limit associated with full-batch gradients, allowing it to reach sharper regions than in the small-batch regime, which allows us to continue to converge despite high curvature. [17]We hypothesize that K-Maxwell retains its advantage at larger batch sizes by extending this effect to even higher curvature regions.

K-Maxwell retains its advantage at larger batches

Batch-size ablation against momentum-off MuonBlue K-Maxwell retains a benefit at 16 times the batch size. Black Bi-Maxwell approaches zero. Lower is better. Error bars show one population standard deviation across three seeds. Hover over a point or open the data table for exact values.Δ validation loss ↓-0.010-0.008-0.006-0.004-0.00201×2×4×8×16×Batch size (× baseline)Reference band ±0.0005K-Maxwell, 1×: -0.00537 ± 0.00012K-Maxwell, 2×: -0.00665 ± 0.00007K-Maxwell, 4×: -0.00661 ± 0.00007K-Maxwell, 8×: -0.00627 ± 0.00014K-Maxwell, 16×: -0.00469 ± 0.00021Bi-Maxwell, 1×: -0.01047 ± 0.00014Bi-Maxwell, 2×: -0.00732 ± 0.00015Bi-Maxwell, 4×: -0.00426 ± 0.00015Bi-Maxwell, 8×: -0.00197 ± 0.00021Bi-Maxwell, 16×: +0.00055 ± 0.00014Single EMA, 1×: +0.00004 ± 0.00006Single EMA, 2×: +0.00003 ± 0.00000Single EMA, 4×: 0.00000 ± 0.00008Single EMA, 8×: +0.00001 ± 0.00012Single EMA, 16×: +0.00031 ± 0.00020
K-MaxwellBi-MaxwellSingle EMA
Loss difference vs Muon with momentum off. Three runs; error bars show ±1 standard deviation.
Data & methods

Each method continues from the same per-seed step-2,000 state to step 2,750. One batch unit is 524,288 tokens per step. Comparisons are within each batch size: larger batches see more tokens. Error bars use the population standard deviation. The ±0.0005 reference band is not a confidence interval. Measurements ↗

Paired loss differences versus µ = 0; lower is better.
BatchMethodMeanSDSeed 0Seed 1Seed 2
1×K-Maxwell-0.005370.00012-0.00543-0.00521-0.00548
1×Bi-Maxwell-0.010470.00014-0.01065-0.01043-0.01032
1×Single EMA+0.000040.00006+0.00004+0.00012-0.00003
2×K-Maxwell-0.006650.00007-0.00672-0.00666-0.00656
2×Bi-Maxwell-0.007320.00015-0.00732-0.00751-0.00714
2×Single EMA+0.000030.00000+0.00004+0.00003+0.00003
4×K-Maxwell-0.006610.00007-0.00671-0.00658-0.00655
4×Bi-Maxwell-0.004260.00015-0.00445-0.00425-0.00408
4×Single EMA0.000000.00008-0.00006-0.00005+0.00011
8×K-Maxwell-0.006270.00014-0.00609-0.00643-0.00628
8×Bi-Maxwell-0.001970.00021-0.00226-0.00178-0.00187
8×Single EMA+0.000010.00012+0.00004+0.00013-0.00015
16×K-Maxwell-0.004690.00021-0.00444-0.00466-0.00496
16×Bi-Maxwell+0.000550.00014+0.00045+0.00075+0.00045
16×Single EMA+0.000310.00020+0.00047+0.00043+0.00003

A related explanation is that K-Maxwell’s momentum annealing becomes more useful as the balance shifts from mostly gradient noise to predominately oscillations caused by curvature, causing us to overshoot along steep directions. Annealing the mixture may help K-Maxwell adapt to this shift more effectively than a fixed momentum mix such as in Bi-Maxwell.

Limitations

K-Maxwell has a substantial memory cost at larger model sizes as it stores seven additional EMA buffers per parameter that it is applied to. This can become prohibitively expensive at the trillion-parameter scale. We are actively working on momentum approaches that use less memory.

Conclusion

By extending single EMA and Bi-Maxwell momentum, K-Maxwell shows that mixing multiple momentum timescales and annealing their mixture during training can speed up pre-training convergence. Its robustness at larger batch sizes also suggests that these improvements extend beyond simply dampening stochastic gradient noise. We presume the advantage comes from maintaining a longer tail of gradient history and having this moving average of

Many open questions remain about why temporal filtering improves optimization, and through what mechanism mixed EMA momentum does this. We believe understanding these mechanisms could help us design more effective, memory-efficient momentum methods.

Acknowledgements

Thank you to Jerry Hong for assisting with this project. Baseline implementations and their contributors are credited in the linked experiment reports.

References

[1] Kingma, D. P., & Ba, J. (2015). Adam: A method for stochastic optimization. International Conference on Learning Representations.

[2] Pagliardini, M., Ablin, P., & Grangier, D. (2024). The AdEMAMix optimizer: Better, faster, older. arXiv.

[3] jacknzheng. (2026c, August 27). Track 3: Annealed K-Maxwell momentum on tuned Muon—3160 steps (n=8) [Pull request #357]. GitHub.

[4] jacknzheng. (2026d, August 28). Track 3: K-Maxwell on MuonH fast-slow decay, 3065 steps (n=8) [Pull request #359]. GitHub.

[5] jacknzheng. (2026a). Record: Track 3 optimization—Frozen K-Maxwell momentum on SOAP-CWD—2680 steps (n=8) [Experiment report]. GitHub.

[6] Vyas, N., Morwani, D., Zhao, R., Kwun, M., Shapira, I., Brandfonbrener, D., Janson, L., & Kakade, S. (2024). SOAP: Improving and stabilizing Shampoo using Adam. arXiv.

[7] Goh, G. (2017). Why momentum really works. Distill, 2(4), Article e6. doi:10.23915/distill.00006

[8] Polyak, B. T. (1964). Some methods of speeding up the convergence of iteration methods. USSR Computational Mathematics and Mathematical Physics, 4(5), 1–17.

[9] Cohen, J. M., Kaur, S., Li, Y., Kolter, J. Z., & Talwalkar, A. (2021). Gradient descent on neural networks typically occurs at the edge of stability. International Conference on Learning Representations.

[10] Hu, Y., Xiang, H., Gong, X., & Yu, H. (2026). A physical response-and-memory model for Muon optimization. arXiv.

[11] jacknzheng. (2026e). train_gpt_kmaxwell_anneal.py [Python source code]. GitHub.

[12] Smith, J. O., III. (2007). Introduction to digital filters: With audio applications. W3K Publishing.

[13] Israel, R. (2002, January 29). Richardson extrapolation. University of British Columbia.

[14] jacknzheng. (2026b). Record: Track 3 optimization—K-Maxwell annealed momentum on the tuned Muon baseline—3160 steps (n=8) [Experiment report]. GitHub.

[15] Sutskever, I., Martens, J., Dahl, G., & Hinton, G. (2013). On the importance of initialization and momentum in deep learning. In S. Dasgupta & D. McAllester (Eds.), Proceedings of the 30th International Conference on Machine Learning (Vol. 28, pp. 1139–1147). PMLR.

[16] Hinton, G., Srivastava, N., & Swersky, K. (n.d.). Neural networks for machine learning: Lecture 6e—RMSProp: Divide the gradient by a running average of its recent magnitude [Lecture slides]. University of Toronto.

[17] Andreyev, A., Ananthkumar, A., Walden, M., Poggio, T., & Beneventano, P. (2026). Momentum further constrains sharpness at the edge of stochastic stability. arXiv.

[18] Li, Q., Tai, C., & E, W. (2019). Stochastic modified equations and dynamics of stochastic gradient algorithms I: Mathematical foundations. Journal of Machine Learning Research, 20(40), 1–47.

[19] Cohen, J., Damian, A., Talwalkar, A., Kolter, J. Z., & Lee, J. D. (n.d.). Part I: How does gradient descent work? Understanding Optimization in Deep Learning with Central Flows [Companion website].