Optimization
Choose the update geometry, its memory and its scale—then test them together.
On this page
A training loss supplies gradients. An optimizer turns those gradients into parameter changes. A schedule sets how large those changes can be over time. Batch size changes the estimate and the number of updates available for a fixed data budget.
These choices interact. A small raw gradient can produce a substantial adaptive update. A larger batch can reduce noise yet reduce progress per token. Begin with the actual update, then connect it to the experiment budget.
A gradient is not yet an update
For local quadratic curvature H, the estimated loss change is . Descending the linear term is not enough if the quadratic term overwhelms it. On a positive quadratic eigenvalue λ, plain gradient descent requires 0<ηλ<2 for convergence along that direction.
Neither this local calculation nor a decreasing training loss proves good generalization. For the gradient and curvature geometry, see Differentiation and Optimization Geometry →. The loss definition → determines what improvement means.
Remember directions, not just the current batch
An exponential moving average (EMA) gives recent gradients greater weight. Consistent directions accumulate; alternating directions cancel. After a direction changes, momentum initially continues to include the earlier direction.
The approximate memory is steps when β is near one. The exact e-folding time is for . At , the approximation is ten steps; at , one hundred. These are steps, not tokens: changing batch size changes the amount of data in that memory.
Momentum is not merely an independent learning-rate multiplier. In a nonstationary sequence it changes direction, response delay and correlations as well as scale. Nesterov variants read a different combination of current gradient and momentum; identify the implementation convention.
Watch a direction reverse
A gradient reversal reaches the buffer
Hold the assigned gradients fixed; change the memory coefficient.
No gradient processed. Raw buffer is zero; corrected estimate is not defined at . No update direction exists before the first gradient.
Assigned sequence [1,1,1,1,1,−1,−1,−1,−1,2,0,0]. Playback steps are optimizer steps in this illustration, not seconds of training.
Exact small input, not a speed benchmark. Step order follows the algorithm; playback is optional. Blue is the uncorrected buffer. The caption also reports bias correction. No autoplay.
Adapt coordinates with two moments
The numerator smooths direction. The denominator rescales coordinates according to recent magnitude. A persistently large coordinate gradient can receive a comparable normalized step to a smaller one. Adam still has one base learning rate, but effective coordinate updates differ.
v is not a covariance matrix or a Hessian estimate. Even is only a variance-like diagnostic under compatible averaging/stationarity conditions; the two buffers usually use different β values. Calling Adam a second-order optimizer obscures this distinction.
Correct the startup, not all uncertainty
For a constant gradient g, the correction recovers and at every step. It does not make a noisy mini-batch equal to the full-data gradient, nor does it make the ratio unbiased.
When ε is negligible and g≠0, the first adaptive step is approximately −η sign(g), not proportional to |g|. This explains the sign-like intuition but does not make every later Adam step SignSGD. Momentum, changing magnitudes and ε matter.
ε affects very small-gradient coordinates. With g² far below ε², the denominator is ε-dominated; the sign approximation fails. Epsilon location also matters: and are different rules.
Keep shrinkage outside the moments
Adding λθ to the loss gradient causes Adam to accumulate and adapt that term. It is not the same as applying a uniform shrink factor outside the moments. For ordinary SGD without momentum, the two forms coincide under matching conventions.
For , and , decay subtracts 0.01 before considering the adaptive contribution. A constant gradient of 2 gives an adaptive subtraction near 0.01 at step one. These are separate effects; decay is not evidence that the training objective decreased.
Implementation order, skipped parameters and mixed precision matter. For example, a parameter with no gradient may be skipped rather than decayed. Use the actual optimizer rule, not a generic “Adam plus L2” label. AdamW algorithm ↗
Weight decay discounts update history
For 0<ηλ≪1, an older contribution decays approximately as . Its e-folding timescale is about steps. With and , that is about 100K steps.
With a varying schedule, replace powers by products of . Equal ηλ gives equal direct forgetting timescale, not equal training dynamics: changing η also changes the trajectory and future u. This is a useful interpretation of decay, not a proof that two recipes are interchangeable. Learning rate and decay as memory ↗
Read settings as a recipe, not a law
| Quantity | Illustrative candidate | What changes |
|---|---|---|
| Peak η | 10⁻⁴ to 5×10⁻⁴ | Model, batch, data, duration and parametrization |
| β₁ | 0.9 | Momentum response |
| β₂ | 0.95; historical 0.999 also common | Magnitude-estimator response |
| ε | 10⁻⁸ | Small denominators and precision |
| λ | 0.1 or 0.01 | Decay history and parameter group |
| Global clip | 1.0 | Gradient threshold, not Adam-update bound |
| Precision / schedule | BF16; cosine or WSD | Numerics and update history |
These are candidate settings from the atlas sources, not package defaults or current universal recommendations. AdamW is a useful controlled baseline. Smaller β₂ reacts faster to scale changes but adds estimator variability. Higher β₁ smooths more and responds more slowly.
Why treat a matrix differently?
A hidden weight W is a linear map, not only a flattened parameter vector. Adam rescales entries separately. Elementwise SignSGD discards each entry’s magnitude. Muon instead normalizes the singular geometry of a momentum matrix.
The rectangular partial polar factor is often called Muon’s “matrix sign.” This is not the analytic matrix-sign function based on eigenvalues of a square matrix. A rank-deficient matrix uses only nonzero singular directions.
Equivalently, , where the dagger is the Moore–Penrose pseudoinverse. A diagonal matrix reduces to coordinate signs. A column vector instead becomes L2-normalized: treating a vector as a diagonal matrix versus a column gives different geometry.
A conceptual update is , with optional shape scaling. Actual Muon implementations differ in momentum normalization, Nesterov combination, polynomial approximation and scale. Do not identify an ideal formula with every implementation.
The norm defines steepest descent
A spectral-norm budget limits the largest linear action of the update on a unit input. A Frobenius budget limits total flattened energy. They define different steepest directions.
For the quadratic penalty , the Frobenius solution is −ηG. With spectral norm, one solution is . The nuclear-norm multiplier matters: the constrained direction and the penalized update are not identical formulas without rescaling.
This explains the appeal of matrix-aware geometry, not why it must outperform Adam on every architecture. The momentum direction can also differ from the current gradient. Learning rates are meaningful only together with normalization and scaling conventions.
Approximate the polar direction without an SVD
Computing a full singular-value decomposition (SVD) per matrix per step is expensive. Newton–Schulz-style polynomial iterations use matrix multiplications instead. Start with , with an explicit zero-matrix case.
The Taylor-derived coefficients (15/8,−5/4,3/8) move normalized nonzero singular values toward one. Tiny singular values can need more iterations. Zero stays zero; finite precision can change effective rank.
The checked Muon implementation instead uses (3.4445,−4.7750,2.0315), BF16 and a small fixed iteration count. Its own explanation says it does not converge to exactly UVᵀ everywhere. This fast approximation is not the same as the ideal polar factor. Muon implementation ↗
Use XXᵀ instead of XᵀX when the row dimension is smaller; the corresponding algebraic multiplication order is equivalent. Transposing rectangular matrices reduces intermediate cost. Test accuracy and dtype on the actual shapes rather than assuming more iterations are always better.
Transform singular magnitudes step by step
From an ellipse toward balanced directions
Hold the singular vectors fixed. Only the magnitudes change.
Initial singular values 4, 0.4 are divided by their Frobenius norm at step zero. Left singular vectors stay fixed at a 30° rotation. Both axes use the same scale; the dashed circle has radius one.
Taylor coefficients target nonzero singular values approaching one. A zero singular value remains zero in every polynomial step. This is exact scalar polynomial arithmetic, not a BF16 kernel or learned weight spectrum.
Exact small input, not a speed benchmark. Step order follows the algorithm; playback is optional. The plot shows linear action on a unit circle, not an empirical training result.
Normalize shape-dependent update RMS
A full-rank 4×4 polar update has RMS 0.50; a 4×16 update has 0.25. Equal learning rates do not give equal entry-wise RMS.
The original Moonlight-style rule multiplies by , targeting RMS≈0.2 for full-rank ideal factors. Rank deficiency and approximate singular values change that equality. The 0.2 is an empirical calibration, not a mathematical constant.
The checked Keller Jordan code uses a different aspect-ratio factor, , with its own learning-rate convention. Do not combine the two scaling recipes blindly. Track update RMS and update/weight ratios for each parameter group.
Choose which geometry is normalized together
A combined Q/K/V projection joins multiple heads into one stored matrix. Whole-matrix orthogonalization couples the heads through shared singular directions. Splitting by functional head changes that coupling.
Kimi K3’s original note describes per-head Muon; GLM-5 describes Muon Split for MLA Q/K/V up-projections. Each head’s momentum block is processed separately, then concatenated. This is not equivalent to a different scalar learning rate per head.
The reported GLM comparison matches a GQA-8 baseline while keeping attention logits stable without clipping in that setting. Smaller polynomial matrices can reduce work, but partitioning changes update geometry as well as cost. Verify head axes, layouts and grouped-query sharing rather than splitting an arbitrary storage dimension. Kimi K3 report ↗
Assign parameters by function
| Parameter role | Candidate rule | Reason to inspect |
|---|---|---|
| Dense attention/MLP/expert matrices | Muon versus AdamW ablation | Matrix geometry and update scale |
| Embeddings and output head | AdamW or separately tested rule | Vocabulary semantics, tying and sparsity |
| Norm gains, biases and scalars | AdamW/SGD; separate decay choice | No natural hidden-matrix geometry |
| Router / small sensitive matrices | Start with controlled baseline | Routing/load instability |
| Large conditional-memory tables | Memory-aware optimizer | State budget and sparse access |
Two groups must not update the same tied parameter twice. A shape test alone is insufficient: embeddings are matrices but serve a different function from hidden projections. Check the parameter identity, not only its name.
Muon typically stores momentum without Adam’s second-moment buffer for those matrices, but total memory includes gradients, master weights, temporary products and distributed state. Communication and sharding can offset arithmetic savings. See Distributed Training →.
Weight spectra are evidence, not an explanation by themselves
A higher normalized singular-value entropy means energy is spread more evenly. Reported Moonlight-style analyses find more uniform spectra with Muon. The hypothesis is better use of matrix capacity and less compressibility; entropy alone does not prove either downstream benefit.
Normalize the same spectrum definition, matrix role and rank threshold when comparing optimizers. An optimizer’s update spectrum is not the trained weight spectrum. Also test pretraining-optimizer × fine-tuning-optimizer combinations: switching an Adam-pretrained model to Muon for SFT need not reproduce Muon pretraining gains.
What a larger batch actually changes
A larger B reduces estimator covariance in this model. Correlated examples, repeated tokens and changing data mixtures reduce the effective independent sample count. Larger batches do not guarantee better generalization or better progress per compute.
Multiplying signal and noise by η leaves their instantaneous ratio unchanged. For , η cancels. A smaller learning rate reduces absolute step noise and curvature effects; it does not improve this estimator’s SNR by itself.
When the mean gradient shrinks while sampling variance stays substantial, SNR can fall. Learning-rate decay may help dynamics then, but it does not directly reduce gradient-estimation variance. Increasing B does under the stated sampling assumptions.
Separate signal, step noise and data budget
One batch versus the same 256 samples
| Quantity | Value |
|---|---|
| Batch B | 16 |
| Learning rate η | 0.1000 |
| Gradient variance 16/B | 1.0000 |
| Gradient SNR (squared) | 1.0000 |
| One update mean | -0.1000 |
| One update standard deviation | 0.1000 |
| Steps for 256 samples | 16 |
| Fixed-data cumulative drift | -1.6000 |
| Fixed-data cumulative variance | 0.1600 |
Mode: constant. Changing η scales update signal and noise together, so instantaneous SNR does not change. The fixed-data totals assume a frozen gradient distribution and independent steps; real gradients evolve with the parameters.
These identities do not predict a stable learning rate. In particular, the large linear-scaled rates shown here may violate local curvature limits.
Noise can influence generalization and exploration, but “small dataset means small batch is best” and “one data pass means large batch is best” are not laws. Data quality, objective, repeated examples, architecture and update count still matter.
Linear and square-root rules preserve different quantities
With frozen independent SGD gradients, holds one-step update covariance constant. It does not hold signal-to-noise ratio constant: batch already changes that ratio.
At a fixed number D of examples, there are D/B updates. Cumulative mean displacement is approximately ; cumulative covariance . Linear preserves both expressions in this frozen-gradient approximation. Real gradients and curvature invalidate unrestricted extrapolation.
The original AdamW example increases and using a square-root candidate. It is a candidate for a sweep, not a proved general Adam rule. Adaptive moments change the derivation; changing B also changes EMA memory measured in tokens, ε dominance, schedule duration and decay per token.
Record whether B counts examples, sequences, valid tokens or weighted loss elements. Gradient accumulation approximates a larger mean batch only when loss normalization and weighting match. BatchNorm statistics, randomness, clipping each microbatch and sequence-dependent weighting can break equivalence.
Why an adaptive optimum can turn over
A simplified Adam analysis replaces the update by coordinate signs. For Gaussian coordinate noise, the exact mean sign is . The original blog uses the approximation below:
Assuming a shared noise/signal ratio κ², define the signal attenuation b below. A Hessian-based local approximation then gives:
The expression peaks at only if the relevant denominators are positive and the optimum lies in the reachable range. Negative/zero cross terms, unequal noise ratios or indefinite curvature invalidate the simplified interpretation. is not Adam’s or .
This model motivates a possible learning-rate “surge”: growth with B can flatten or reverse. It does not prove noise always corrects sign updates or that every huge batch needs lower LR. The original linked analyses remain references; the 10542 page was unavailable for a fresh full review in this pass.
Search a joint near-optimal region
Hold architecture, data mixture, tokenizer, precision, loss reduction and schedule family fixed. Choose feasible global token batches from memory and throughput measurements. At each batch, sweep peak LR on a logarithmic grid.
Use equal token budgets for data-efficiency comparisons and also report elapsed time. Keep enough horizon to expose moment-state and routing instability; a brief favorable loss slope is not a stable long run. Repeat promising settings with more than one seed and a held-out evaluation.
Map the region within a stated tolerance of best validation loss. Prefer a robust region with good throughput and clipping behavior over one noisy winning point. Test larger-scale checkpoints before extrapolating.
Mean gradients of independent microbatches can estimate trace covariance: B_micro times their sample variance estimates per-sample trace under matching assumptions. Repeatedly evaluate at fixed checkpoint and record the sampling definition. This estimates a local noise scale, not a permanent global optimum.
Control early functional changes
Linear warmup uses for . Here, t counts steps from the start, is the warmup duration, and is the peak learning rate. Warmup limits early parameter changes while activations, optimizer statistics and the data-driven direction settle. Large initial gradients are one possible issue, not a necessary property of random initialization.
Bias correction already removes zero-start EMA attenuation under stationarity. Warmup has a different role: noisy ratios, rapidly changing states, normalization, depth and a large chosen peak can still destabilize updates. It is not waiting for Adam to learn a Hessian.
The original heuristics suggest 1–5% of pretraining steps, or 50–500 steps / 0.1–1% for some short fine-tuning runs. Treat them as examples, not guaranteed industry rules. Larger batches do not automatically make mean gradients larger or require longer warmup.
Too little warmup can expose an unstable peak early. Too much can waste budget at small steps; it does not prove the model is trapped in a bad local minimum. Sweep duration jointly with the peak and inspect functional update scale.
The original Transformer schedule grows linearly, then decays with the inverse square root of step:
Changing model width and warmup also changes its peak; do not compare schedules by shape alone.
Warm up, remain stable, then decay
Warmup–Stable–Decay (WSD) separates three decisions: reach a peak, keep it during an extendable plateau, then begin a cooldown for a selected endpoint. Cosine normally begins decreasing after warmup and ties the trajectory to a chosen horizon.
The practical advantage of WSD is shared trunk training. Several token-budget comparisons can branch from plateau checkpoints and receive their own cooldown. Comparing a cooled checkpoint with an uncooled plateau is not a fair final-quality comparison.
Late decay may refine the endpoint, but a sharp loss decrease is not proof that all useful learning happens in the cooldown. If data changes at the same time, schedule and mixture effects are confounded.
Discrete drops around 80% and 90% of tokens are one multi-step example. Linear, cosine or other cooldowns are possible. Extending training after a cooldown is not the same as simply extending the plateau; document resume policy and optimizer state.
Compare schedule shape at fixed peak
Choose when the plateau ends
Progress 50%: WSD =1.000; cosine=0.587. Both end at 0.1. WSD uses an illustrative linear cooldown, not a universal required decay shape.
The horizontal axis is fraction of a fixed token budget with a constant batch. This is a schedule, not a measured loss curve. Changing batch size requires tracking the token/step conversion.
Make small experiments predictive
Empirical hyperparameter laws fit settings across compute budgets. Using for a dense training approximation, the retained empirical fits are and . Their coefficients require the original compute/batch units and setup; do not insert arbitrary GPU-hours or token units.
These fitted trends are priors, not universal laws. Different language/domain mixtures, data quality, tokenization, objectives, precision and architecture can move the region. Fit locally over several budgets, record residuals and uncertainty, and revalidate after distribution changes.
Maximal update parametrization (μP) addresses a different axis: width. Stable initialization variance alone does not ensure stable update-induced features. For , inspect , not merely . Forward signals, backward sensitivities and functional updates need compatible scaling.
A width-stable base learning rate is not a width-stable raw learning rate in every tensor. The reference μP implementation divides hidden-weight Adam LR by the width multiplier and treats readout/input dimensions separately. This corrects the old blanket hidden-matrix LR statement. μP parameter-group scaling ↗
Define base and changed-width shapes, configure initialization/readout/optimizer together, run coordinate checks across widths, tune on a small member and validate larger members. The reference family keeps depth fixed; changing depth is not automatically covered. Schedulers must preserve per-group ratios rather than overwrite every LR with the same absolute value. A resumed model must not be reinitialized by shape registration.
μP transfer and compute-law fitting are complementary. Neither eliminates the need to test changed heads, sparse experts or new data. The functional-scaling explanation below connects the spectral view to these parameter-group rules.
Follow the effect of an update through the layer
For a row-vector input x and a weight matrix W, the linear output is y = xW. Fan-in initialization can keep output variance bounded at initialization. It does not determine the effect of a learned update, because the gradient can be correlated with x.
Small entry-wise changes can still combine into a large feature change. This is why keeping a weight norm or one raw learning rate constant is insufficient for width transfer. For a nonlinear layer , its Jacobian J describes local input-to-output sensitivity. Forward propagation, backward propagation and update-induced changes must all be considered.
Across several layers, sensitivities compose as Jacobian products. Large operator norms can amplify perturbations; small singular directions can suppress them. One layer's spectral norm alone does not certify stable gradients through the whole model. μP supplies coordinated scaling rules, not a universal requirement that every Jacobian be orthogonal.
The reference Transformer recipe also changes attention-score scaling from to a multiple of . Its example uses , which matches the usual scale when the head width is 64. This belongs to that parametrization; do not independently replace attention scaling in an arbitrary pretrained model. Reference μP setup ↗.
Use coordinate checks to compare activation magnitudes over several widths and learning rates. Then inspect actual update-induced feature changes and validate training behavior. A failed check is a reason to inspect initialization, readout, head scaling and optimizer groups—not simply lower every learning rate.
μP width-transfer discussion ↗ · Spectral-scaling discussion ↗ · Further model-scaling discussion ↗ · Learning rate and batch foundations ↗.
Clip gradients before the optimizer transforms them
Value clipping clamps each coordinate and can change direction. Global clipping’s SGD update satisfies , but Adam transforms the clipped gradients through moments and decay. It does not give that same universal bound on the final Adam update.
Accumulate correctly weighted gradients, unscale mixed-precision gradients, check finiteness, compute the logical global norm and clip before the optimizer step. Sharded norms require the appropriate collective and must not double-count replicated copies. Clipping each microbatch is generally different from clipping the accumulated gradient.
Use the norm distribution and clipping rate to choose τ. A threshold of 1.0 or 0.5 is a trial setting, not a unit-independent safeguard. Frequent clipping can be intentional or indicate an overly low threshold, a reduction bug or pathological batches; it is not automatically wrong.
Inspect actual parameter changes as well as raw norm. Stable norms can coexist with poor generalization or adaptive update spikes. The diagnostic table below separates raw gradients from actual parameter changes.
Read the gradient and the update separately
| Observation | Check next |
|---|---|
| Rare norm spikes | Identify the batch, reduction scale, precision and corresponding loss/update |
| Tiny early-layer gradients | Inspect saturation, masks, disconnected paths and layerwise gradient flow |
| Large head gradients, small backbone gradients | Check frozen parameters, intended adaptation targets and functional changes |
| Clipping on most steps | Inspect the raw distribution and threshold; frequent clipping can be intentional |
| Smooth norms but poor validation | Check data, objective and generalization; stable optimization is not model quality |
Record raw and clipped norms together. Inspect trends at matched loss reductions and batch definitions. Norms need not decrease monotonically; changing the schedule, data or parameterization changes their interpretation. A large norm is not automatically harmful, and a small gradient does not imply a small Adam update.
# After correctly weighted gradient accumulation; scaler is an AMP GradScaler.
scaler.unscale_(optimizer)
raw_norm = torch.nn.utils.clip_grad_norm_(
model.parameters(), max_norm=threshold, error_if_nonfinite=True
)
scaler.step(optimizer)
scaler.update()
optimizer.zero_grad(set_to_none=True)
The function returns the total norm before clipping. This sketch assumes nonsharded gradients and an existing AMP training loop. Distributed/sharded training needs its framework's logical global-norm operation. Compare actual parameter values before and after the optimizer step to measure update scale. PyTorch clipping contract ↗.
Training stability and run diagnosis → · Gradient and curvature geometry →
Qwen Muon: choose the operator before orthogonalizing it
Muon normalizes a momentum matrix through a finite orthogonalization procedure. The unit of that operation should match a meaningful linear map, not whichever tensors the training framework stores together.
Qwen uses Nesterov momentum 0.95 and eight Newton–Schulz steps with the Polar Express coefficient schedule. More accurate orthogonalization reduces the frequency and magnitude of spikes in their stress tests. The pre-iteration Frobenius normalization uses a numerical constant of 10⁻¹⁴.
| Parameter | Rule / exception |
|---|---|
| Attention q/k/v and output; GDN input/output; routed and shared expert fc1/fc2; n-gram key/value projections | Muon for suitable linear maps |
| Input embedding and output head | AdamW |
| MoE router | AdamW; Muon destabilizes early routing and offers no significant later gain |
| GR low-rank projections | AdamW; very elongated shapes perform better with it in their tests |
| N-gram lookup table | Adam, no weight decay |
| GDN decay and beta projections | Scalar per head: exclude from matrix orthogonalization |
| Attention and GDN output gates | AdamW performs as well as or slightly better than Muon |
The report hypothesizes that router outputs lack the shared linear structure that makes orthogonalization helpful. That explanation is not established by the observed instability. Similarly, the shape explanation for GR is an author interpretation.
Split fused QKV and GDN input gradients into per-head semantic submatrices. Split SwiGLU fc1 into gate and up halves. Orthogonalize each eligible part independently, then restore the original layout. Otherwise singular directions couple unrelated operators and the shape scale uses the wrong dimensions.
# Schematic update grouping; not runnable Muon code.
for parameter in fused_parameters:
for part in semantic_parts(parameter):
if uses_muon(part):
direction = polar_express(momentum(part), steps=8)
direction *= 0.2 * sqrt(max(part.shape))
apply_update(part, direction)
else:
apply_adam_family_update(part)
# Preserve one optimizer owner/state per logical parameter.
Splitting QKV/GDN improves both loss and benchmarks. Splitting fc1 leaves loss essentially unchanged while slightly improving benchmarks. These observations reinforce the distinction between storage fusion and update geometry.
The report does not supply every production learning rate, decay coefficient or polynomial coefficient. Eight steps alone do not reproduce Polar Express. Retain exact coefficients, normalization dtype, zero-matrix behavior and state ownership when implementing it. Distributed Muon and kernel overhead → · Retune LR and batch together →.
Qwen3.8-Next architecture report, §3.1, p. 16 (26 August 2026) ↗.
Model recipes use different groups and phases
These are disclosed settings retained from the original model notes, not recommendations to copy. Full data, architecture, precision and RL conditions remain in their report owners.
| Recipe | Groups / geometry | Schedule and selected settings |
|---|---|---|
| DeepSeek-V4.1-Flash | Muon hidden/projector matrices; head-wise Q/K. AdamW nonmatrices. Nesterov + Sinkhorn for tables/embedding/head, no decay. | 100.6M-token global batch; 2K-step warmup; peak 2.6×10⁻⁴ until 28T, cosine to 2.6×10⁻⁵ at 40T, hold to 45T |
| GLM-5 | Muon Split for MLA Q/K/V up-projections; batch-size warmup | Peak 2×10⁻⁴ → cosine 4×10⁻⁵; mid-training linear to 10⁻⁵ |
| MAI-Thinking-1 | AdamW , , ; global clip 1.0 | Peak 2×10⁻⁴ → minimum 2×10⁻⁵; ~12B-token warmup; cosine; dropout .15 |
| MiMo-V2.6 | Muown with row-norm control for hidden matrices; AdamW embedding/head/router | Flash 48T and Pro 30T pretraining; 32K→256K context, 1M in agent mid-training |
DeepSeek’s original note records Muon momentum .95, decay .1 and target update RMS .18; AdamW betas 0.9/0.95, and decay 0.1. Large conditional-memory tables get a 5× LR multiplier and 11 Sinkhorn-balancing iterations, and . Alternating row/column squared-update balancing is not Muon’s polar normalization and not mHC’s forward residual mixing.
45T / 100.6M gives roughly 447K updates only if the global token batch stays fixed. It is not GPU-hours. Context grows from 64K to 1M at 34T; the phase transition also changes workload. Distributed state ownership and optimizer memory are part of this recipe.
GLM’s DSA indexer warmup uses 5×10⁻³→2×10⁻⁴; sparse adaptation uses 10⁻⁵. Those are different parameter/stage objectives, not contradictions in one peak LR. MAI reports less aggressive decay improves post-RL results; that is an observation about later trainability, not a universal pretraining loss law.
MiMo’s GRPO-like prompt means and entropy-controlled four-way clipping act on policy ratios/credit assignment. They are not gradient-norm clipping or a new Muon polynomial. Keep RL aggregation and rollout weighting in the RL topic rather than describing every “optimization” mechanism as an optimizer update.
Measure the update that the model receives
Verify gradient reduction, accumulation weighting and parameter-group identity first. Then log raw/after-clip norms, moment statistics, update RMS, update/weight ratio and effective decay by group. Layerwise values often reveal what one global scalar hides.
For Muon, test the zero matrix, rectangular shapes, rank deficiency, singular-value behavior, head partition and chosen polynomial dtype. Check state ownership and communication. A short pilot must include resume from a full optimizer checkpoint.
Compare optimizers at matched unique tokens, FLOPs and elapsed-time constraints; report all three rather than claiming they are equivalent. Include delayed instability, downstream transfer and post-training behavior. Prefer a stable near-optimal region to a single early loss winner.
Batch, learning rate, moment memory, clipping, decay and schedule form one recipe. Change one axis at a time when testing a mechanism, then retune jointly for a performance comparison. Neither fair experiment should be confused with blindly copying every Adam setting into Muon.
References and connected topics
Adam ↗ · Decoupled weight decay ↗ · Muon implementation and conventions ↗ · μTransfer ↗ · Smol training playbook ↗
Batch/LR analysis ↗ · Epsilon and LR scaling ↗ · Batch/LR foundations ↗ · EMA and batch ↗ · Muon geometry ↗ · Muon experiments ↗ · Muon details ↗
Optimizer settings belong to the model, data and phase that produced them. Frontier training recipes → · RL objectives and rollout consistency → · Run stability →
The visual experiments use exact synthetic calculations, not measured model-training results.