A Practical Guide to Complete(d) Hyperparameter Transfer

A non-Tensor-Programs explanation of Completed Hyperparameter Transfer across Modules, Width, Depth, Batch & Duration. The target reader is mathematically comfortable, skeptical, and wants to know what is being assumed, what is actually demonstrated, and where the recipe is likely to fail in real large-model training.

Main source: Mlodozeniec, Ablin, Bethune, Busbridge, Klein, Ramapuram, Cuturi, Completed Hyperparameter Transfer across Modules, Width, Depth, Batch & Duration, arxiv 2512.22382. This guide uses plain-text math and original diagrams.

1. Thesis

The paper is best read as an attempt to make the following workflow legitimate:

Tune many optimizer and initialization hyperparameters on a small proxy run. Transform those hyperparameters when width, depth, batch size, and token budget change. Use the transformed values directly at the target scale, without retuning.

That is stronger than ordinary muP-style transfer in three ways. First, the target is not just a single global learning rate. The paper tunes learning rate, initialization scale, AdamW epsilon, AdamW beta1 and beta2 through their complements, weight decay, and residual multipliers. Second, the tuning can be per-module, so QKV weights, MLP matrices, norms, embeddings, output weights, and depth positions can receive different multipliers. Third, the transfer is not only across model size; it includes batch size and total training duration.

The paper's central idea is not "there is one magic hyperparameter value." It is: there are dimensionless hyperparameters that remain meaningful only after you divide out the predictable scale effects created by architecture, optimizer, batch size, and training horizon. Complete(d)P is the proposed way to divide out those effects.

Core claim. If you apply the correct transformations, the identity of the best hyperparameters is approximately invariant across a large region of practical scaling. If you do not apply those transformations, apparent "optimal" hyperparameters drift with scale, and scaling-law experiments can partly measure recipe drift rather than intrinsic model/data scaling.
Small proxy cheap search global or per-module HPs Transform coordinates width/depth: feature-update scale batch: same optimizer SDE duration: iso-horizon rule modules: type x depth multipliers Target run larger model/data minimal or no retuning Without the transformation, the apparent optimum can drift.
Complete(d)P is a coordinate change on hyperparameters. It tries to make the small-run optimum and target-run optimum refer to the same underlying training behavior.
What this is not. It is not a proof that one proxy search gives the globally optimal large-run recipe. It is an empirical and asymptotic argument that certain scale effects are predictable enough to remove. The remaining question is how close the proxy optimum is to the target optimum after removal of those predictable effects.

2. Mental Model and Notation

The paper separates two kinds of quantities:

  • Training configuration: the dimensions you intentionally scale: width, depth, batch size, and token count.
  • Hyperparameters: optimizer and initialization choices you want to tune once and transfer.

Let a base run have width N0, depth L0, batch size B0, and token count D0. Let a target run have N, L, B, and D. The paper describes scaling through ratios:

m_N = N / N0 width ratio m_L = L / L0 depth ratio m_B = B / B0 batch-size ratio m_D = D / D0 token-count ratio

A rule like learning_rate *= sqrt(m_B / m_D) means: keep the base hyperparameter value, but before using it at target scale, multiply it by that factor. For per-module hyperparameters, the same idea applies to every parameter group, after also multiplying by that group's module and depth factors.

The Loss-Surface Version

Think of a hyperparameter setting h as a point in a high-dimensional landscape:

loss = final_validation_loss(config, h)

Naively, when you change the configuration, the landscape moves. The goal of parameterization is to describe a transformed hyperparameter coordinate h_tilde such that:

loss(base_config, h_tilde) and loss(target_config, h_tilde) have similar minima after predictable scaling effects are factored out.

This is why hyperparameter transfer is more than "scale the learning rate." It is a claim about the stability of an optimization landscape after a coordinate change.

My interpretation. The paper is implicitly asking for a good coordinate system on training recipes. In a bad coordinate system, the same training behavior receives different numeric hyperparameter values at different scales. In a good coordinate system, the numbers are more nearly invariant.

3. What Complete(d)P Changes

The paper builds on CompleteP, which itself adapts muP/depth-muP ideas to transformers. You said width scaling can be mostly left out, so this section keeps width short and focuses on the conceptual invariants.

Width Initialization: Reconcile the Table with the Spectral Condition

Let an iid-initialized matrix W have shape d_out x d_in and entry standard deviation s. Its spectral norm is typically of order

||W||_* ~= s * (sqrt(d_out) + sqrt(d_in))

The spectral condition asks for ||W||_* = Theta(sqrt(d_out / d_in)). Solving for the entry scale gives

s = Theta( sqrt(d_out / d_in) / (sqrt(d_out) + sqrt(d_in)) ) = Theta( [1 / sqrt(d_in)] * min(1, sqrt(d_out / d_in)) ) Var(W_ij) = Theta( [1 / d_in] * min(1, d_out / d_in) )

Therefore the assembled rule initialization variance *= m_N^(-1) is not a different result. It is the fixed-aspect-ratio specialization: when both hidden dimensions scale by m_N, the min factor is constant and the variance falls by m_N^(-1). For a square hidden matrix this is simply Var(W_ij) = Theta(1 / d). The old table was misleading because it called this merely “finite-activation scaling” and hid the fixed-shape assumption.

Rectangular widths do not reduce to one m_N exponent. If fan-in and fan-out change by different factors, retain the shape-general formula above. A scalar m_N rule only describes the paper's model family, where hidden aspect ratios are held fixed.

Width Learning Rates: Same Spectral Budget, Different Optimizers

The optimizer-independent target is the update norm ||Delta W||_* = Theta(sqrt(d_out / d_in)). A scalar learning-rate rule follows only after specifying the matrix produced before that scalar is applied.

SGD realization

For Delta W = -eta_SGD * G, the spectral-condition paper derives ||G||_* = Theta(sqrt(d_in / d_out)) using an order-one first-order loss change, proportionality of the SGD update and gradient, and low stable rank. Under those additional assumptions,

eta_SGD = Theta(d_out / d_in)

Thus a square or fixed-aspect-ratio hidden matrix has no width learning-rate factor under this SGD realization. This is not a consequence of the spectral condition alone; it uses the SGD-specific gradient argument.

Adam/AdamW realization

Let P_t = m_hat_t / (sqrt(v_hat_t) + epsilon) be Adam's matrix before its scalar learning rate, and define its mean squared entry q_t and stable rank r_t:

q_t = ||P_t||_F^2 / (d_out * d_in) r_t = ||P_t||_F^2 / ||P_t||_*^2 eta_Adam = Theta(sqrt(r_t / q_t) / d_in)

This last line follows by identity from the same spectral update budget. For a square layer with q_t = Theta(1), it gives a spectrum rather than one universal Adam exponent:

Realized Adam geometryStable rankWidth LR
Concentrated updater_t = Theta(1)eta = Theta(1 / d_in)
Intermediater_t = Theta(d_in^gamma)eta = Theta(d_in^(gamma / 2 - 1))
Diffuse updater_t = Theta(d_in)eta = Theta(1 / sqrt(d_in))

Complete(d)P's hidden-weight factor m_N^(-1) selects the first endpoint: order-one entry RMS and width-independent stable rank. Real training can move between endpoints as optimizer history, minibatch structure, clipping, sparsity, epsilon occupancy, and correlations change q_t or r_t. Low stable rank also does not by itself guarantee feature motion; the dominant right singular directions must act nontrivially on the current activation.

Depth Scaling Has Two Problems

A transformer block is a residual update:

h_next = h + residual_multiplier * block(h)

If depth increases but each block keeps making an equally large residual update, the total residual path can become too large. If each block update shrinks too aggressively, the network becomes too close to an identity map and stops learning rich features. Depth parameterizations choose how much each block's contribution shrinks with depth.

The two obligations are different. Forward stability asks whether the residual stream stays finite as more blocks are composed while the parameters are held fixed. Feature-learning stability asks whether one optimizer step produces a nonvanishing, nonexploding change in that residual stream as depth changes. The residual multiplier helps with both, but the second problem also constrains the optimizer-induced branch update.

Complete(d)P uses a residual multiplier:

residual_multiplier = m_L^(-alpha)

where alpha is in the theoretically motivated range [0.5, 1]. The paper reports transfer for alpha = 0.5 and alpha = 1. It also notes that alpha = 0.5 can be slightly better at the largest model in their experiments, consistent with the "feature diversity" motivation from depth-muP.

Depth as accumulated residual updates Each block update must shrink enough for the whole depth limit to stay finite. Too little shrinkage residual path can blow up or training becomes unstable Balanced shrinkage finite depth behavior feature learning survives Too much shrinkage network becomes too lazy updates under-accumulate
The depth multiplier is an attempt to keep the accumulated residual dynamics finite and non-degenerate as the number of blocks changes.

A Clean Derivation of the Depth Exponents

Here is a derivation that does not use tensor programs. It is not a complete proof for real transformers, but it isolates the same exponent constraints using only residual sums, operator norms, and the feature-learning desideratum.

Part I: keep the forward residual stream stable

First isolate one elementary fact about sums. For one scalar coordinate, write:

S_L = X_1 + X_2 + ... + X_L

If the terms are centered and weakly correlated,

E[X_l] = 0 Var(X_l) = O(1) Cov(X_l, X_m) is negligible for l != m

then variances add:

Var(S_L) = sum_l Var(X_l) + small cross terms = O(L) std(S_L) = O(sqrt(L))

This is the sqrt(L) or random-walk case. Equivalently, for vector residual writes:

||sum_l X_l||^2 = sum_l ||X_l||^2 + 2 sum_{l < m} <X_l, X_m>

If the cross inner products average away, the squared norm is O(L), so the norm is O(sqrt(L)). If the terms instead share an O(1) aligned component, the sum is coherent:

If X_l = mu + centered_noise_l with mu = O(1): S_L = L * mu + O(sqrt(L)) so S_L = O(L)

Now apply that fact to a width-normalized residual stack at a fixed training step:

h_l = h_{l-1} + a_L F_l(h_{l-1}; theta_l) a_L = L^(-alpha)

Assume the branch output has elementwise O(1) scale after LayerNorm/RMSNorm and width scaling:

||F_l(h)||_2 / sqrt(n) = O(1)

At initialization, if residual branch outputs are centered and weakly correlated across layers, the random-walk estimate gives:

h_L - h_0 ~= L^(-alpha) * sum_{l=1}^L centered_O(1)_l typical size ~= L^(-alpha) * sqrt(L) = L^(1/2 - alpha)

Forward stability asks that feature coordinates stay O(1). Therefore:

L^(1/2 - alpha) <= O(1) so alpha >= 1/2

If the branch outputs have coherent nonzero drift, use the L case instead:

h_L - h_0 ~= L^(-alpha) * L = L^(1 - alpha) stability would require alpha >= 1

This is why centering, normalization, zero-mean projections, and bias handling matter. The depth-muP paper uses mean subtraction in its clean model; transformers rely on normalization and approximately centered residual projections. If that centering fails, alpha = 1/2 can be too aggressive.

Part II: preserve feature learning over optimizer steps

At this point we have solved only the forward-scale problem: keep h O(1) as depth grows. The spectral feature-learning condition has a second half: parameter updates should induce an O(1) change in hidden features. We now ask how the feature change caused by one optimizer step should scale when the same model family is made deeper. That second desideratum is still unsatisfied.

To see the remaining problem, suppose we used the residual multiplier L^(-alpha) but made each block's branch output change by Theta(1) RMS per coordinate after one optimizer step. In the coherent accumulation case analyzed below, the output-feature update would scale like:

RMS size of Delta_train h_L ~= L * L^(-alpha) * Theta(1) = Theta(L^(1 - alpha))

For alpha = 1/2, this blows up like sqrt(L). For alpha = 1, it is O(1). For alpha > 1, it vanishes. So unless we choose the ODE endpoint alpha = 1, the optimizer update scale must also depend on depth. This is the problem that motivates learning-rate depth scaling.

Do not call it "learning rate" yet; first introduce an unknown exponent for the effective per-block branch-function update:

s_l(L) := ||Delta F_l(h)||_2 / sqrt(n) assume s_l(L) = Theta(L^(-gamma))

Here gamma is not an additional architecture parameter and not a result imported from Complete(d)P. It parameterizes the unknown depth dependence of the branch-function update so that we can solve for it. Using Theta, rather than only O, states both an upper and a lower scale; the later nontriviality argument needs the update not to vanish faster than this. After deriving gamma, we will ask how an optimizer should implement the resulting effective update scale.

What the Jacobian is doing in the update recurrence

Start from one residual block, suppressing normalization and attention details:

h_{l+1} = h_l + a_L F_l(h_l; theta_l), a_L = L^(-alpha)

After one optimizer step, both the block parameters and the block input have changed. Write Delta h_l for the training-induced change in the residual stream at depth l, and Delta theta_l for the parameter update in block l. First-order Taylor expansion gives:

Delta h_{l+1} = Delta h_l + a_L J_l Delta h_l + a_L Delta F_l + higher_order_terms

Here J_l means the hidden-state Jacobian of the branch function at the current input:

J_l = d F_l(h; theta_l) / d h, evaluated at h = h_l

It is not the parameter-update effect. It describes how a perturbation already present in the residual stream entering block l is transformed by that block before continuing upward. The direct parameter-update effect is instead:

Delta F_l = [d F_l(h_l; theta) / d theta_l] Delta theta_l

So we need both terms. Delta F_l is the new feature-write injected by block l because its own weights changed, holding its input fixed. J_l Delta h_l is the way block l responds because all earlier blocks changed its input. In words: each layer injects a local update, and later layers transport every earlier local update.

Iterating the recurrence gives the useful mental model:

Delta h_L ~= sum_{k=0}^{L-1} [product over j = k+1..L-1 of (I + a_L J_j)] a_L Delta F_k

The product is the transport operator from depth k to the output. If these transport products have O(1) operator norm along the relevant feature-update directions, then the size of Delta h_L is controlled by summing the injected terms a_L Delta F_k. If the transport products explode, depth scaling has failed. If they strongly contract or rotate the injected updates into cancelling directions, the model may be stable but the learned feature update can vanish.

Assumption being made. The clean L-sum derivation assumes bounded, non-degenerate transport: local update writes remain O(1) after propagation through later layers, and their deterministic descent component is not reduced to a pure random walk by cancellations. This is weaker than assuming every term points in exactly the same direction, but stronger than assuming independent centered update noise. It is the assumption that lets a depth stack use all layers' parameter updates as a coherent learned representation change.

This assumption can fail in both directions. If the products of I + a_L J_l have growing singular values, update perturbations amplify as they move upward and the depth limit is unstable. If the products are strongly contractive, or if transported update directions cancel like centered noise, the learned update may be only sqrt(L)-sized or smaller rather than L-sized. The Complete(d)P depth rule is therefore best read as preserving the coherent feature-learning component, not as a guarantee that every architecture and optimizer implementation has such a component.

The direct contribution of block l to the residual stream after one training step is therefore a vector a_L Delta F_l. Its width-normalized size is:

||a_L Delta F_l||_2 / sqrt(n) = |a_L| * ||Delta F_l||_2 / sqrt(n) = L^(-alpha) * Theta(L^(-gamma)) = Theta(L^(-(alpha + gamma)))

For a vector v in R^n, ||v||_2 / sqrt(n) equals sqrt((1 / n) * sum_i v_i^2): the root-mean-square coordinate size. When the norm is not dominated by a small number of exceptional coordinates, this is also the scale of a typical element. It is not a claim that every coordinate has exactly that magnitude, nor is it a maximum-coordinate bound.

Unlike random initialization noise, training updates are produced by the same loss and are strongly correlated through the backward pass, then transported through the later residual stack. Under bounded, non-degenerate transport, the relevant deterministic feature-learning component has coherent-sum scaling:

RMS size of the coherent component of Delta h_L ~= L * Theta(L^(-(alpha + gamma))) = Theta(L^(1 - alpha - gamma))

A depth-aware version of the spectral feature-learning condition asks for feature updates at a fixed normalized depth to be O(1) per coordinate: not exploding, and not vanishing. Therefore:

stability: alpha + gamma >= 1 nontriviality: alpha + gamma <= 1 so alpha + gamma = 1

Combine this with the initialization condition alpha >= 1/2. Also require the effective per-branch optimizer update not to grow with depth. Since gamma = 1 - alpha, this gives gamma >= 0, hence alpha <= 1. The resulting interval is:

1/2 <= alpha <= 1 gamma = 1 - alpha

This is the depth-scaling interval used by Complete(d)P. It also says what the effective per-block update scale must be:

RMS coordinate size of Delta F_l = Theta(L^(-gamma)) = Theta(L^(alpha - 1))

Now connect this to the optimizer. If the parameter-to-branch-output Jacobian has O(1) scale under the width parameterization, and AdamW is kept in the same normalized-update regime, then the simplest way to make Delta F_l scale like L^(alpha - 1) is to scale the hidden learning rate by that factor:

eta_hidden(L) = eta_hidden(base) * L^(alpha - 1)

This is where the Complete(d)P table's hidden-weight and hidden-bias/norm learning-rate depth factors come from. They are not assumed at the start of the derivation; they are the implementation of the update-size condition.

The key distinction is signal accumulation versus noise accumulation. Let:

z_l = transported contribution from block l = T_{l->L} a_L Delta F_l

Throughout this guide, the size of a width-n vector means its per-coordinate RMS norm, ||z||_2 / sqrt(n). Raw l2 norm is fine when width is fixed, but ||z||_2 / sqrt(n) is the scale that makes "O(1)" mean O(1) per coordinate.

E ||sum_l z_l||_2^2 = sum_l E ||z_l||_2^2 + 2 sum_{l<k} E[z_l dot z_k]

If the transported updates are independent and centered, the cross terms vanish:

E[z_l] = 0 and E[z_l dot z_k] = 0 size(sum_l z_l) ~= sqrt(L) * size(z_l)

That is the right model for initialization noise, but it is the wrong object to preserve if the goal is learned feature motion. A learned update should contain a descent-aligned component shared across depth:

z_l = signal_l + noise_l

The centered noise part accumulates like sqrt(L). The aligned signal part accumulates like L. Equivalently, if every z_l has per-coordinate size s, and the average pairwise correlation is rho, then:

size(sum_l z_l) ~= s * sqrt(L + rho * L * (L - 1))

With rho = 0, the sum is sqrt(L) * s. With constant positive rho, it is O(L * s). Thus the coherent learned-update assumption is really an assumption about non-vanishing positive cross terms among transported update contributions. If one scaled to preserve only independent centered noise, one would get:

sqrt(L) * L^(-alpha) * L^(-gamma) = O(1) so alpha + gamma = 1/2

But then any coherent signal component would scale as L * L^(-1/2) = sqrt(L) and explode. Depth-muP and Complete(d)P instead preserve the deterministic learned component:

L * L^(-alpha) * L^(-gamma) = O(1) so alpha + gamma = 1

Arguments for and against the transport assumption

The assumption is not a free theorem for transformers. The defensible arguments are structural and empirical, and each has a clear failure mode.

Operation or property Why it helps What can still fail
Identity residual path Perturbations are copied forward before branch modification; transport is I + small, not a plain Jacobian chain. Branch Jacobians can still amplify, contract, or rotate update directions.
Residual multiplier L^(-alpha) Keeps each Jacobian perturbation small. For alpha = 1, this is ODE-like; for alpha = 1/2, it relies on centering/randomness. Worst-case operator-norm products can still be too large for alpha = 1/2.
Pre-norm Keeps the skip path close to identity and feeds scale-controlled inputs into the branch. Post-norm can make the main transport path less identity-like.
Centering or near-centering Prevents coherent positive drift in the forward residual writes; TP VI uses mean subtraction. RMSNorm controls scale but does not center, so it does not by itself remove mean drift.
QK norm and stable attention logits Reduces dangerous attention-Jacobian growth from saturated or high-variance logits. Attention can still create sharp, data-dependent transport directions.
Shallow residual branches, or separately scaled residual writes Keeps the theory close to the one-write-per-block residual model. TP VI finds block-depth-2 cases can break clean transfer; transformers have multiple nonlinear suboperations per layer.
Moderate stochastic regularization Avoids turning learned update transport into pure random cancellations. Heavy dropout, stochastic depth, hard gates, or saturated nonlinearities can erase coherent signal.

Tensor Programs VI gives empirical support for the scaling, but not a direct measurement of the transport products above. In simple residual networks, Depth-muP preserves the optimal hidden learning-rate constant across depth, while block-only scaling without LR scaling and standard parameterization show large shifts. TP VI also reports a LayerNorm variant where Depth-muP preserves LR transfer, and feature-diversity experiments supporting the non-degenerate path story. The negative evidence is equally important: ODE-like (alpha, gamma) = (1, 0) can be a feature-learning limit but still shows LR shift, block-depth-2 experiments show failures, and their Megatron transformer study describes the practical scaling as useful but brittle. Complete(d)P supplies more direct modern-transformer evidence, but it should be read as empirical validation of the recipe, not a theorem that every LLM stack satisfies bounded coherent transport.

What Else Needs Depth Scaling?

Learning rate is not the only depth-scaled quantity. The Complete(d)P table uses depth factors in three different places, each solving a different problem.

Quantity Depth factor Why it is needed
Residual branch write L^(-alpha) Keeps the forward residual stream O(1) as more blocks are summed.
Target branch-function update L^(alpha - 1) Makes the accumulated update-induced feature change O(1): L * L^(-alpha) * L^(alpha - 1) = O(1).
AdamW hidden learning rate L^(alpha - 1) When epsilon tracks the gradient, Adam's normalized preconditioned update is O(1), so LR directly sets the branch-function update.
SGD hidden learning rate L^(2 * alpha - 1) The raw hidden gradient already contains one residual factor L^(-alpha); SGD LR must compensate for it.
Muon hidden-matrix learning rate L^(alpha - 1) / kappa_W(L) After the rectangular spectral adjustment, LR times the measured polar-update action kappa_W sets the branch-function update. This reduces to L^(alpha - 1) only when kappa_W=Theta(1) across depth.
AdamW epsilon for hidden parameters and QK norms L^(-alpha) Matches epsilon to the hidden-gradient scale so Adam remains in the same normalized-update regime.
Weight decay no separate depth factor in the table In PyTorch AdamW, decay is multiplied by LR, so the hidden LR depth factor already scales its per-step effect.
Initialization variance no explicit depth factor in the table Forward depth scale is handled by the residual branch multiplier, not by shrinking every hidden weight initialization.
Adam betas no depth factor in the table The paper scales betas for batch/duration, not depth; depth is treated as architecture composition rather than optimizer time.

The SGD row follows directly under an O(1) parameter-to-branch-output Jacobian. The residual multiplier enters the raw gradient once:

raw_gradient_hidden ~= L^(-alpha) Delta F_SGD ~= eta_SGD * L^(-alpha) require Delta F_SGD ~= L^(alpha - 1) therefore eta_SGD ~= L^(2 * alpha - 1)

Adam divides by a matching gradient scale when epsilon is scaled with it, so its preconditioned update is O(1) and Delta F_Adam ~= eta_Adam. This gives eta_Adam ~= L^(alpha - 1), the factor printed in Complete(d)P. Thus the target feature update is optimizer-independent, but the scalar learning rate that realizes it is not.

Muon realization: orthogonalize, then apply the shape scale

Ideal spectral Muon provides a third realization, but its update is easier to understand if direction, shape normalization, and step size are introduced separately. Let W in R^(p x q), so an input has q coordinates and an output has p. Let M_W be the momentum matrix that Muon will turn into an update direction. This is the matrix being factorized; it is not the weight matrix W.

1. Orthogonalization chooses the direction. Write the reduced singular-value decomposition and its polar factor as

M_W = U Sigma V^T P_W = Polar(M_W) = U V^T

P_W keeps the singular-vector directions of the momentum while replacing every nonzero singular value by one. Thus ||P_W||op=1 whenever M_W is nonzero.

Where the first-order model comes from. Hold every other model parameter fixed and regard the scalar loss as a function of this matrix W. Let G_W=grad_W loss(W), a matrix with the same shape as W. For a candidate displacement Delta W, restrict the multivariable loss to the one-dimensional path

phi(t) = loss(W + t Delta W)

Ordinary one-variable differentiation and the chain rule give

phi'(0) = sum_(i,j) (partial loss / partial W_ij) * Delta W_ij = trace(G_W^T Delta W) = <G_W, Delta W>F

The subscript F means Frobenius. On angle brackets it denotes the matrix inner product; on a norm it denotes the associated Euclidean length of all matrix entries. It is not another function or random variable:

<A, B>F = trace(A^T B) = sum_(i,j) A_ij B_ij ||A||F = sqrt(<A, A>F) = sqrt(sum_(i,j) A_ij^2)

Entry by entry, the derivative says how sensitive the loss is to that entry of W; the Frobenius inner product adds sensitivity times displacement over all entries. The fundamental theorem of calculus integrates this directional derivative along the path:

loss(W + Delta W) - loss(W) = integral_(0 to 1) phi'(t) dt = <G_W, Delta W>F + R(Delta W) R(Delta W) = integral_(0 to 1) <G(W + t Delta W) - G_W, Delta W>F dt

If the gradient is Lipschitz in Frobenius norm, meaning

||G(X) - G(Y)||F <= L_taylor * ||X - Y||F

then Frobenius Cauchy-Schwarz, |<A,B>F| <= ||A||F ||B||F, bounds the remainder at every point on the path:

|R(Delta W)| <= integral_(0 to 1) L_taylor * t * ||Delta W||F^2 dt = (L_taylor / 2) * ||Delta W||F^2

Thus the omitted curvature is second order in a sufficiently small displacement. The LMO separates the actual displacement into a scalar step size and a norm-bounded direction, Delta W=eta_M D. Replacing the current gradient by its momentum estimate gives the exact error bookkeeping behind the shorthand first-order model:

loss(W + eta_M D) = loss(W) + eta_M <M_W, D>F + eta_M <G_W - M_W, D>F + R(eta_M D) first-order momentum model: loss(W + eta_M D) approx loss(W) + eta_M <M_W, D>F

The approximation suppresses two different errors:

  • Curvature error: R(eta_M D), which grows quadratically with the step under a smoothness assumption.
  • Gradient-estimation error: eta_M <G_W-M_W,D>F. Momentum is a lagged, noisy estimate and need not equal or be unbiased for the current gradient.

What the linear minimization oracle asks. For a fixed positive eta_M, only the direction-dependent linear term can be optimized. In the ordinary spectral unit ball, the LMO problem is

D_LMO in argmin_D <M_W, D>F subject to ||D||op <= 1

"Locally best" therefore has a precise and limited meaning: among directions with the same allowed operator-norm size, choose the one predicting the largest first-order loss decrease. It does not mean the displacement is globally optimal, or that a finite stochastic step must lower the actual loss.

What operator/nuclear norm duality means. The dual of any norm is defined by the largest inner product attainable in its unit ball:

||M||dual = sup_(||D|| <= 1) <M, D>F because a norm ball is symmetric: min_(||D|| <= 1) <M, D>F = -||M||dual

For matrices, the norm dual to operator norm is nuclear norm. Their definitions are

||D||op = sup_(v != 0) ||D v||2 / ||v||2 ||M_W||nuc = sum_i sigma_i

where sigma_i are the nonzero singular values of M_W=U Sigma V^T. The duality can be proved directly from this SVD rather than taken as a black box:

<M_W, D>F = trace(V Sigma U^T D) = sum_i sigma_i * (u_i^T D v_i) |u_i^T D v_i| <= ||D||op therefore <M_W, D>F >= -sum_i sigma_i * ||D||op = -||M_W||nuc * ||D||op

The middle inequality follows because u_i and v_i are unit vectors and operator norm is the largest possible Euclidean amplification of any unit input. Under ||D||op <= 1, no singular-direction contribution can be smaller than -sigma_i. The polar direction reaches every one of those lower bounds simultaneously:

D = -U V^T = -P_W ||D||op = 1 D v_i = -u_i u_i^T D v_i = -1 therefore <M_W, D>F = -sum_i sigma_i = -||M_W||nuc

This proves that -P_W solves the spectral LMO. If M_W is rectangular or rank deficient, its action on singular null spaces does not affect the linear objective, so the minimizer need not be unique; the reduced polar factor is the canonical partial-isometry solution. The same calculation with D=+P_W attains +||M_W||nuc, proving the supremum side of the dual-norm identity as well.

A two-dimensional check. If M_W=diag(9,1), then P_W=I and the spectral LMO chooses D=-I. Its predicted first-order change is <M_W,D>F=-9-1=-10. No matrix with ||D||op <= 1 can do better: it cannot contribute less than -9 along the first singular pair or less than -1 along the second.

The LMO paper's overall interpretation. The norm ball declares what counts as one unit of parameter movement; the LMO spends that unit where the local linear model predicts the most decrease. In fact, the same oracle template produces different familiar normalized optimizers solely by changing that geometry:

Frobenius unit ball: D_LMO = -M_W / ||M_W||F entrywise-max unit ball: D_LMO = -sign(M_W) spectral unit ball: D_LMO = -Polar(M_W)

Operator norm measures worst-case action on a vector, so the spectral choice budgets how strongly the matrix update can act on any input direction rather than budgeting total entrywise energy. It discards the momentum's singular-value magnitudes and retains its singular subspaces:

momentum-gradient step: Delta W = -eta_M M_W spectral-LMO step: Delta W = -eta_M Polar(M_W)

Hence the ideal spectral LMO is scale-invariant: LMO(c M_W)=LMO(M_W) for c > 0. Momentum averages noisy gradients to produce M_W; the LMO maps that estimate to a norm-controlled direction; and eta_M restores the separately chosen amount of movement. The unconstrained algorithm in Pethick et al. repeatedly adds these scaled LMO directions even though the norm ball constrains each direction rather than constraining W itself.

What this argument does not establish. It proves optimality for the local linear model inside the selected norm ball. Actual descent additionally requires a small enough step, a useful momentum estimate, and an accurate enough realization of the polar direction. Practical Muon may use Nesterov momentum and a finite Newton-Schulz approximation, so it is not literally the exact LMO analyzed above.

2. RMS coordinates determine the rectangular shape factor. Euclidean operator norm compares Euclidean input and output lengths. Feature-learning arguments instead compare typical coordinate sizes, so define

rms_input(h) = ||h||2 / sqrt(q) rms_output(D h) = ||D h||2 / sqrt(p) ||D||_(RMS -> RMS) = sup_(h != 0) rms_output(D h) / rms_input(h) = sqrt(q/p) * ||D||op

Therefore a unit RMS-to-RMS update budget is the spectral constraint ||D||op <= sqrt(p/q). Solving the same linear minimization problem in this rescaled ball gives

D_star = argmin_D <M_W, D>F subject to ||D||_(RMS -> RMS) <= 1 = -sqrt(p/q) * P_W
Orthogonalize, then rescale. Muon first produces the orthogonalized direction P_W=Polar(M_W). We then apply sqrt(p/q) to that direction and finally apply the scalar learning rate: Delta W=-eta_M [sqrt(p/q) P_W]. The polar operation does not produce sqrt(p/q). This is the unclamped RMS-to-RMS spectral convention; other Muon implementations may use a clamped or RMS-matching adjustment and must be analyzed as different update rules. For example, PyTorch documents these separately under adjust_lr_fn.

The factor disappears only from the worst-case normalized magnitude, because it exactly converts between Euclidean and RMS coordinates:

||Delta W||_(RMS -> RMS) = sqrt(q/p) * ||Delta W||op = sqrt(q/p) * eta_M * sqrt(p/q) * ||P_W||op = eta_M

3. The polar direction remains in the realized activation action. Let H in R^(N x q) contain representative branch inputs as rows. Holding those inputs fixed while applying the direct matrix update gives

kappa_W(H) = ||H P_W^T||F / ||H||F R_in = rms_in(H) = ||H||F / sqrt(N q) R_out = rms_out(H Delta W^T) = ||H Delta W^T||F / sqrt(N p) R_out / R_in = eta_M * kappa_W(H)

For full-column P_W when p >= q, P_W^T P_W=I_q and kappa_W(H)=1. For full-row P_W when p < q, P_W^T P_W is a rank-p projection. Then kappa_W depends on how the activations align with that projection; with many isotropically oriented activation samples, kappa_W(H)^2 concentrates near p/q. Thus sqrt(p/q) fixes the worst-case RMS-to-RMS operator scale, not the average action on every activation distribution.

4. Only now impose the depth target. The preceding depth argument requires each learned branch-function change to have typical-element size L^(alpha - 1). If this matrix action is the relevant realization of that branch change, its learning rate must satisfy

eta_M(L) * kappa_W(L) ~= L^(alpha - 1) therefore eta_M(L) ~= L^(alpha - 1) / kappa_W(L)

The familiar Muon depth factor L^(alpha - 1) follows only after measuring that kappa_W=Theta(1) across the depth family. In a nonlinear multi-parameter branch, this matrix probe is not by itself a proof about the complete Delta F_l; the branch-output update and its transport still need to be measured. Unlike Adam, ideal Muon has no second-moment state or Adam epsilon to scale. Its finite Newton-Schulz approximation adds a different obligation: momentum singular values and orthogonalization error must remain in the regime where the nominal polar update is actually realized. The full batch/duration extension is derived in Section 4.9.

So the claim is not “LR is the only other thing necessary.” Once residual scaling fixes forward feature size, the spectral update-size condition forces an effective hidden-update scale. The optimizer determines how LR maps to that scale, and AdamW epsilon must also scale so that Adam remains in the assumed normalized regime.

Where this comes from. Complete(d)P states these AdamW depth factors operationally in its parameterization table: residual writes get m_L^(-alpha), hidden learning rates get m_L^(alpha - 1), and hidden/QK AdamW epsilon gets m_L^(-alpha). The depth alpha/gamma classification is inherited from Tensor Programs VI: Feature Learning in Infinite-Depth Neural Networks, which studies block multiplier and effective learning-rate exponents. TP VI does not phrase the argument as the transport assumption above; it proves or heuristically justifies the same scaling in its residual-network model, including the claim that feature updates involve at most L terms of size L^(-alpha-gamma). The derivation above is my non-Tensor-Programs reconstruction using the spectral-condition desideratum: O(1) hidden features and O(1) update-induced hidden-feature changes.
Two sums determine the depth exponents Initialization sum centered independent branch outputs L^(-alpha) * sqrt(L) must not blow up alpha >= 1/2 Training-update sum coherent gradient-driven contributions L * L^(-alpha) * L^(-gamma) must be O(1), not o(1) alpha + gamma = 1 Therefore 1/2 <= alpha <= 1 and gamma = 1 - alpha.
The lower endpoint comes from random-walk initialization stability. The learning-rate exponent comes from making one optimizer step produce an O(1) representation change after summing over depth.

How AdamW Epsilon and Weight Decay Fit the Same Derivation

For a residual block, the raw gradient of an internal hidden weight contains the residual multiplier L^(-alpha). Ignoring width factors:

raw_gradient_hidden_weight ~= L^(-alpha)

AdamW epsilon should be on the same scale as the gradient entering Adam's denominator; otherwise, changing depth changes whether Adam behaves like normalized gradient descent or epsilon-damped small-step descent. This gives the depth factor:

Adam update = eta * m / (sqrt(v) + epsilon)

If the gradient scale is multiplied by c, then Adam's first and second moment scales become:

m -> c * m sqrt(v) -> c * sqrt(v)

To preserve the same optimizer regime, epsilon must be multiplied by the same factor:

(c * m) / (c * sqrt(v) + c * epsilon) = m / (sqrt(v) + epsilon)

Thus epsilon follows the gradient scale, not the learning-rate scale. Since the hidden-gradient depth scale is L^(-alpha):

epsilon_hidden *= L^(-alpha)

If epsilon is left fixed while gradients shrink with depth, epsilon eventually dominates the denominator:

m / (sqrt(v) + epsilon_fixed) ~= L^(-alpha) / epsilon_fixed

Then the hidden update is smaller than the intended normalized Adam update. For alpha = 1/2, the intended branch-function update is L^(-1/2), but epsilon domination can push it toward L^(-1), making the accumulated feature update vanish.

With epsilon scaled this way, Adam's normalized update direction is O(1). Then the learning-rate factor L^(alpha - 1) makes:

RMS coordinate size of Delta F_l ~= L^(alpha - 1) RMS local residual update ~= L^(-alpha) * L^(alpha - 1) = L^(-1) coherent sum over L blocks ~= O(1)

Weight decay: from parameter shrinkage to residual-stream change

Weight decay needs no separate depth multiplier in the table because it is already multiplied by the learning rate in PyTorch AdamW. Its direct parameter-space update is:

Delta W_l^decay = -eta * lambda * W_l

This is not yet a hidden-state change. Let K_l^W be the parameter-to-branch-output Jacobian, so K_l^W[W_l] is its directional action along W_l:

K_l^W = d F_l(h_l; W_l) / d W_l Delta F_l^decay ~= K_l^W[Delta W_l^decay] = -eta * lambda * K_l^W[W_l]

The factor L^(-alpha) appears only when this branch-output change is written into the residual stream, because h_(l+1) = h_l + L^(-alpha) F_l. For the linear example F_l(h) = W_l h, K_l^W[W_l] = W_l h = F_l(h). More generally, assume its RMS coordinate size is Theta(1). Then:

RMS local decay injection into Delta h_(l+1) = Theta( L^(-alpha) * eta * lambda ) = Theta( L^(-alpha) * L^(alpha - 1) * lambda ) = Theta(lambda / L)

The 1 / L scale guarantees that the accumulated decay effect cannot explode under bounded transport, even if all blocks add coherently. It does not guarantee coherent representation-space drift:

bounded-transport upper bound: L * O(lambda / L) = O(lambda) coherent component: Theta(lambda) centered weakly correlated: O(lambda / sqrt(L))

Thus a depth-independent lambda needs no additional depth factor for per-step stability. A nonvanishing Theta(1) feature effect still requires alignment after the different blocks' Jacobians; weight shrinkage is coherent in parameter space but need not be coherent in representation space. This is a one-optimizer-step statement. Full-run decay also depends on the number of steps and is handled by the later batch/duration rules.

Connections to a Spectral Feature-Learning Condition

If your mental model is spectral rather than Tensor-Programs-based, the connection is: a good parameterization keeps the update-induced change to representations at a controlled scale. In width, that means weight updates should not create exploding singular-value shifts or vanish into an NTK-like lazy regime. In depth, it means the product/sum of many residual Jacobian perturbations should remain stable as more blocks are inserted.

Complete(d)P can be seen as adding optimizer-scale bookkeeping to that feature-learning condition. It does not merely scale forward activations. It also scales learning rates, AdamW epsilon, and weight decay so the optimizer's update to each tensor has the intended magnitude relative to that tensor's role in the forward pass.

The subtle point is that the spectral condition's Delta h is a training-step update, not the adjacent-depth increment h_l - h_{l-1}. With depth tending to infinity, adjacent residual increments must shrink. Otherwise the residual stack would explode. The desideratum is instead:

for a fixed depth fraction lambda: h_{floor(lambda L)} has O(1) coordinates Delta_train h_{floor(lambda L)} has O(1) coordinates

The condition alpha + gamma = 1 is exactly the depth version of making Delta_train h O(1). The condition alpha >= 1/2 is the depth version of making h O(1) at initialization. Thus the depth interval is not an extra ad hoc rule; it is what the spectral desiderata become after accounting for the fact that a depth-L residual stream is a sum of L small operators.

There is another important qualifier: this is an update-size condition for a fixed optimizer-step scale. If the training horizon changes, the meaning of one discrete step changes too. For longer horizons, the condition should not be read as "make every additional micro-step move features by O(1)." It should be read as "over a fixed macroscopic unit of training time, the feature motion is O(1)." The batch/duration SDE rules later in the guide are exactly the correction that turns a one-step spectral condition into a training-path condition.

What the Endpoints Mean

Choice Residual scale Hidden LR scale Limit behavior Practical interpretation
alpha = 1/2 1 / sqrt(L) 1 / sqrt(L) Brownian/random-walk-like depth path; maximal feature diversity. Most aggressive stable use of depth, but most dependent on centered residual branches.
1/2 < alpha < 1 1 / L^alpha 1 / L^(1-alpha) Stable and nontrivial, but hidden-layer initialization randomness vanishes in the infinite-depth limit. Interpolates between rough depth and ODE-like depth.
alpha = 1 1 / L 1 ODE-like smooth depth path; stable but more redundant. Conservative and familiar from neural-ODE/residual-network scaling.

Depth-muP argues that alpha = 1/2 is uniquely optimal if the objective is maximal feature diversity. Complete(d)P is more empirical and transformer-focused: it verifies transfer for both alpha = 1/2 and alpha = 1, and treats the whole interval as theoretically justified for stable, nontrivial, faithful depth scaling. Those are compatible claims, not the same claim.

Specific Fixes Relative to CompleteP

These are not cosmetic table edits. Each changes the optimizer coordinates used by CompleteP. The paper's appendix argues from the muP entry scales: hidden activations are Theta(1), hidden activation gradients are Theta(1 / N), and Adam epsilon should track the raw gradient scale seen by the optimizer.

Fix 1: QK-norm parameters are shared across the scaled head axis

In the implementation analyzed by the paper, a QK norm is applied separately inside each attention head, but its affine multiplier vector is shared across heads. Let i index the H heads and let j be a fixed coordinate within a head. The same scalar m_j therefore appears in every operation q_hat_(i,j) = m_j * q_(i,j) + b_j. When model width is N = H * d_head and d_head remains fixed,

H = c * N, where c := H / N = 1 / d_head

More generally, c denotes any positive width-independent limit of H / N. Autograd adds the gradient contribution from every use of the shared parameter. Suppressing batch and token indices, which do not change this width count, define delta_(i,j) := dL / dq_hat_(i,j). The chain rule gives:

g_j := dL / dm_j = sum_(i=1)^H delta_(i,j) * q_(i,j) q_(i,j) = Theta(1) delta_(i,j) = Theta(1 / N)

Thus one head contributes only Theta(1 / N), but there are Theta(N) uses of the same parameter. Rescale one contribution to order one:

X_i := N * delta_(i,j) * q_(i,j) = Theta(1) g_j = (1 / N) * sum_(i=1)^H X_i = c * (1 / H) * sum_(i=1)^H X_i

The “empirical average” is therefore the average across heads within this forward/backward pass; it appears because the QK-norm parameter is shared across the axis whose size grows with width. Suppose the X_i are approximately iid across heads and converge to a distribution with finite variance and mean mu. The law of large numbers plus the usual fluctuation scale gives:

(1 / H) * sum_(i=1)^H X_i = mu + O_p(H^(-1/2)) therefore g_j = c * mu + O_p(N^(-1/2))

The notation Y_N = O_p(N^(-1/2)) means that sqrt(N) * Y_N is bounded in probability. Explicitly: for every epsilon_prob > 0, there is a finite constant M such that, for all sufficiently large N,

P(|Y_N| > M / sqrt(N)) < epsilon_prob

Informally, this says the typical random fluctuation is no larger than constant times 1 / sqrt(N); it is not a deterministic bound for every realization. The probability refers to the random ensemble underlying the width limit, such as initialization and sampled data.

The conclusion is conditional on activation-gradient alignment. Here mu = E[N * delta_(i,j) * q_(i,j)] measures a systematic signed alignment between the query activation and its backpropagated gradient. If mu != 0, then g_j = Theta(1), so the paper assigns QK-norm AdamW epsilon no width factor. If mu = 0 and the head contributions are weakly correlated with nonzero variance, then Var(g_j) = Theta(1 / N) and its typical scale is 1 / sqrt(N). Approximate iid structure justifies convergence to mu; it does not prove that mu is nonzero. Strong cross-head correlations can produce still another scale. In every case, the separate depth factor m_L^(-alpha) remains because the QK norm lives inside a residual branch.

Fix 2: input-embedding epsilon follows the active-row gradient

A token lookup does not sum over width: the input index is width independent, and the gradient of an active embedding row is the backpropagated gradient of the embedding output. Under the paper's hidden-gradient scale,

gradient of active embedding coordinate = Theta(1 / N) therefore epsilon_input_embedding = Theta(1 / N)

This changes CompleteP's width-independent input-embedding epsilon to m_N^(-1). It is a statement about active coordinates. Sparse token visitation, untouched rows, tied embeddings, and optimizer state initialization can make the distribution across the entire table less clean. The authors report that omitting this correction broke their coordinate checks.

Fix 3: remove the explicit unembedding multiplier by changing coordinates

CompleteP used an explicit forward multiplier a = m_N^(-1):

logits = a * W_old * h

Define the actual unembedding matrix W_new = a * W_old. Then logits = W_new * h with no special forward multiplier. The initialization transformation is exact:

Var(W_new) = a^2 * Var(W_old) therefore unembedding initialization variance *= m_N^(-2)

The learning-rate transformation depends on the optimizer. For Adam, let Q(g; epsilon) = m_hat / (sqrt(v_hat) + epsilon). Scaling every gradient in its history by positive a gives Q(a * g; epsilon) = Q(g; epsilon / a). Hence

g_old = a * g_new Delta W_new = a * Delta W_old = -a * eta_old * Q(g_new; epsilon_old / a)

Ignoring epsilon or transforming it exactly, direct Adam on W_new therefore uses eta_new = a * eta_old, which gives the table's unembedding LR factor m_N^(-1). Exact coordinate equivalence would also use epsilon_new = epsilon_old / a. Complete(d)P intentionally does not preserve CompleteP's epsilon rule: it argues instead that gradients in the new raw unembedding coordinates are Theta(1), so output-layer epsilon should remain Theta(1).

For SGD the coordinate transformation is different because its update is proportional to the raw gradient:

Delta W_new = -a^2 * eta_old * g_new so exact SGD coordinate folding uses eta_new = a^2 * eta_old

Do not reuse the Adam folding rule for SGD. Instead, for an actual unembedding matrix with d_out = vocabulary_size and d_in = model_width, the spectral-condition SGD realization gives eta_SGD = Theta(d_out / d_in). With fixed vocabulary size this scales as 1 / d_in, though it follows from the SGD spectral argument rather than Adam scale invariance.

How this relates to the initialization formula above. With fixed vocabulary size and model width taken asymptotically past it, the iid spectral initializer also reaches variance Theta(1 / d_in^2). At practical widths where vocabulary size is still much larger than model width, the shape-general random-matrix formula is closer to Theta(1 / d_in). Complete(d)P's m_N^(-2) rule is justified primarily as removal of the old output multiplier, not as a uniform finite-shape consequence of random-matrix spectral initialization.

Removing the multiplier is operationally useful because memory-efficient losses such as cut cross-entropy can consume the ordinary unembedding matrix directly without materializing or specially rescaling full logits.

4. Batch-Size Transfer via SDEs

The batch-size part of the paper uses stochastic differential equations: continuous-time approximations to noisy optimizer recurrences. The optimizer-specific scaling argument is only as good as the moment matching and limiting assumptions that lead to its SDE.

Prerequisite: Brownian motion and SDEs. This section uses only selected pieces of the foundations page: section 7 for why a random increment is G * sqrt(h) * z; section 8 for matching a discrete update's mean/covariance to an SDE; and section 9 for the conditional assumption behind sigma ~= 1 / sqrt(B). Ito's rule is not used below.

Roadmap and Claim Boundary

There are two different claims in this section. Keeping them separate is essential: only the first is an attempt at SDE invariance.

StageWhat is held fixedStatus
Batch-only transfer: B_new = kappa * BThe adaptive RMSPropW/AdamW SDE coefficients and its integration horizon.Derived under the stated noise-dominated, small-step assumptions.
Duration composition: B_new = m_B * B, D_new = m_D * DThe integration horizon and moment time scales.Empirical iso-horizon prescription; it intentionally changes the noise coefficient when m_D != 1.

The narrative is: batch covariance gives sigma ~= B^(-1/2); the adaptive recurrence reveals an effective step h = eta^2; preserving the coefficients of that SDE gives the batch rules; only then do we compose with a longer or shorter token horizon.

The One SDE Fact Used Repeatedly

The local bridge from an optimizer update to Brownian motion is derived in foundations section 7. Over a short interval h, an SDE has the Euler-Maruyama form

Delta theta ~= drift * h + diffusion * sqrt(h) * z z ~ N(0, I)

Its noise covariance is diffusion * diffusion^T * h. Everything below is the algebra needed to rewrite the discrete adaptive update into this shape and identify which hyperparameter combinations appear in its drift, diffusion, and state dynamics.

Discrete optimizer finite steps with minibatch noise zoom out Continuous approximation drift plus diffusion envelope
The transfer rule tries to keep the continuous approximation unchanged when batch size changes. This only works while the discrete optimizer is a good approximation to that continuous process.

1. Set Up the Adaptive Approximation

This has two layers. The paper's noise-dominated RMSPropW calculation makes the learning-rate, iteration-count, and PyTorch-style weight-decay factors explicit. Keeping the coupled moment recurrences then forces the beta and epsilon factors. That second layer is what makes this an adaptive-optimizer result.

SymbolRole in this derivation
B, KBatch size and number of optimizer updates.
eta, lambdaLearning rate and decoupled weight-decay coefficient.
sigmaScale of raw minibatch-gradient noise; approximately B^(-1/2).
beta_1, beta_2, epsilonAdam/RMSProp moment rates and denominator stabilizer.
hEffective SDE time elapsed by one adaptive optimizer update; derived below as eta^2.

1a. What changes when batch changes?

Hold the current parameters theta_k fixed for one moment. A minibatch gradient is the true population gradient plus a random estimation error:

g_k = grad_L(theta_k) + sigma * Sigma(theta_k)^(1/2) * z_k E[z_k | F_k] = 0 Cov(z_k | F_k) = I

Read this from right to left. z_k is standardized fresh noise. The matrix Sigma^(1/2) chooses its parameter-space directions and correlations. The scalar sigma says how large the whole noise term is. Under the conditional batch-covariance law from foundations section 9, sigma ~= 1 / sqrt(B): a larger batch makes the random error smaller.

This is the only place where batch size enters the derivation. The rest asks: after the optimizer normalizes, averages, and decays this noisy gradient, which combinations of hyperparameters must stay unchanged when sigma changes?

1b. What RMSPropW actually computes

RMSPropW has two jobs. First, it builds v, an exponential moving average of squared gradients. Second, it divides the next gradient by sqrt(v) + epsilon, so a coordinate with consistently large gradients receives a smaller normalized update:

v_(k+1) = beta_2 * v_k + (1 - beta_2) * g_k^2 theta_(k+1) = (1 - eta * lambda) * theta_k - eta * (sqrt(v_k) + epsilon)^(-1) * g_k

All operations are coordinate-wise. beta_2 controls how long v remembers past squared gradients. epsilon prevents a small denominator. The first term in the parameter line is PyTorch-style decoupled weight decay; the second is the adaptive gradient step. We start with RMSPropW because it isolates the adaptive denominator. Adam will add a first-moment average later.

Nothing has been rescaled yet. The next stage chooses a continuous-time unit and introduces only the rescaled variables needed to express these two discrete lines as an SDE.

1c. Where sqrt(v) ~= sigma comes from

Freeze theta temporarily and abbreviate mu = grad_L(theta) and xi_k = Sigma(theta)^(1/2) * z_k. Thus g_k = mu + sigma * xi_k. Write the second-moment state as v_k = sigma^2 * u_k. Substitution into the RMSPropW recurrence gives

u_(k+1) = beta_2 * u_k + (1 - beta_2) * (mu / sigma + xi_k)^2

The square is elementwise. If mu is O(1), the noise covariance is O(1), and mu / sigma -> 0, then the right-hand side is O(1) whenever u_k is O(1). Starting from v_0 / sigma^2 = u_0 = O(1), the recurrence therefore keeps u_k = O(1) on a fixed SDE-time interval. Consequently, coordinate by coordinate,

sqrt(v_(k,i)) = sigma * sqrt(u_(k,i)) so sqrt(v_(k,i)) is of order sigma

The shorthand sqrt(v) ~= sigma hides the direction-dependent O(1) factor sqrt(u_i); it does not say every coordinate has the same denominator. If the parameters are nearly stationary for long enough that the EMA equilibrates, then

E[g_(k,i)^2] = mu_i^2 + sigma^2 * Sigma_(ii) so E[v_(k,i)] ~= sigma^2 * Sigma_(ii) and sqrt(v_(k,i)) ~= sigma * sqrt(Sigma_(ii))

The first argument establishes the scale without assuming equilibrium; the second gives a familiar stationary picture. This scaling can fail in a nearly noiseless coordinate, when epsilon dominates, or when the moving average has not been initialized on the corresponding scale.

2. Derive the Effective Time Step

Ignore weight decay for one moment and use sqrt(v_k) = sigma * sqrt(u_k). The adaptive gradient update can be written exactly as

Delta theta_gradient = -eta * (mu + sigma * xi_k) / (sigma * sqrt(u_k) + epsilon) = -eta * (mu / sigma + xi_k) / (sqrt(u_k) + epsilon / sigma)

In the noise-dominated regime, the random term xi_k is O(1), so its parameter displacement is O(eta), provided epsilon / sigma stays finite rather than dominating the denominator. The rescaling in section 2a enforces precisely that condition. A Brownian increment has size sqrt(h); matching these sizes gives

sqrt(h) = eta therefore h = eta^2

This is why adaptive methods use eta^2 as effective SDE time in this calculation. It is not an arbitrary convention and it differs from the usual SGD gradient-flow coordinate h = eta. But an SDE needs a deterministic displacement of order h as well. The mean-gradient term in the display above has size eta / sigma. Requiring it to be O(h = eta^2) gives

eta / sigma ~= eta^2 equivalently eta * sigma ~= 1

More precisely, we keep eta * sigma -> sigma_0 with finite nonzero sigma_0. Then eta / sigma = h / (eta * sigma) ~= h / sigma_0: the mean contributes finite drift, while the standardized noise contributes finite Brownian diffusion. Because eta -> 0 and the product stays nonzero, sigma -> infinity follows. It is not an independent physical claim.

Why choose this regime? Batch size enters the model through sigma. To derive a batch-transfer rule, we want a limiting process in which that stochastic effect remains visible, rather than averaging away. If instead sigma stayed O(1), both the signal and noise parts of an adaptive update would be O(eta). On the time scale h = eta, the signal has a finite deterministic limit but the accumulated noise variance goes to zero: an ODE, not a batch-sensitive diffusion. On the faster time scale h = eta^2, the noise survives but the O(eta) signal would accumulate without bound. The noise-dominated balance makes the signal O(h) and the noise O(sqrt(h)) at the same time, yielding a nontrivial drift-plus-Brownian process whose coefficients can be matched across batches.

This is a selected asymptotic regime, not a universal description of AdamW. It is most relevant when the noise scale materially controls the RMS denominator. If |mu_i| is comparable to or larger than sigma * sqrt(Sigma_(ii)) in the important coordinates, the simple square-root batch rule is an approximation with no guarantee from this limit.
The asymptotic microscope, now motivated. This SDE argument studies a sequence of hypothetical optimizers indexed by n:
eta_n -> 0 eta_n * sigma_n -> sigma_0, where 0 < sigma_0 < infinity therefore sigma_n -> infinity
It is an idealized extension of sigma ~= B^(-1/2) toward a highly noisy small-batch regime; literal batch sizes do not go below one. Its purpose is to identify a nondegenerate stochastic limit and the hyperparameter combinations that leave that limit unchanged, not to assert that every LLM update is noise dominated.

Alternative clocks and noise scalings

The conclusions above are about total movement over a fixed finite SDE interval t in [0, T], not about one discrete update. A compact way to audit the alternatives is to suppose sigma ~= eta^(-a). For a > 0, this uses the noise-dominated denominator scale derived above; for the fixed-noise case a = 0, the denominator is simply O(1). Suppressing those O(1) denominator factors, the normalized parameter noise is O(eta) and the mean-gradient increment is O(eta / sigma) = O(eta^(1 + a)).

On the diffusion clock h = eta^2: number of updates by time T ~= T / eta^2 noise RMS by time T ~= sqrt(T / eta^2) * eta = O(1) coherent mean movement by time T ~= (T / eta^2) * eta^(1 + a) = T * eta^(a - 1)
Noise scalingMean movement over fixed T on h = eta^2Limit on that clock
a < 1: sigma grows slower than 1 / eta (including fixed sigma)T * eta^(a - 1) -> infinityDrift blows up over finite SDE time.
a = 1: sigma ~= 1 / etaO(1)Finite nonzero drift and finite Brownian noise.
a > 1: sigma grows faster than 1 / etaT * eta^(a - 1) -> 0The learning drift vanishes; the limit is pure diffusion.

So yes: for a < 1, the apparent problem is a genuine blow-up accumulated over a fixed finite interval of the h = eta^2 clock. One can instead use the mean-preserving clock h = eta^(1 + a). When a < 1, its total noise RMS is eta^((1 - a) / 2) -> 0, giving a deterministic ODE. In the important fixed-noise case a = 0, this is simply h = eta: finite drift and vanishing accumulated noise. When a > 1, that mean-preserving clock instead makes the total noise diverge. Thus a = 1 is the boundary at which this simple scaling gives both effects finite on one common time axis.

2a. Rescale only what would otherwise diverge

With h = eta^2, introduce the following quantities. Each is chosen to stay finite or to become a coefficient of the limiting SDE:

DefinitionWhy introduce it?
u_k = v_k / sigma^2v_k tracks squared noisy gradients and is therefore O(sigma^2); u_k is O(1).
sigma_0 = eta * sigmaIt is the coefficient multiplying the Brownian increment after the rewrite below.
epsilon_0 = eta * epsilonIt keeps epsilon in the same scaled denominator as sigma_0 * sqrt(u).
c_2 = (1 - beta_2) / hIt is the rate at which the second-moment EMA changes per unit SDE time.

Bundle the scaled denominator into

P_k = sigma_0 * diag(u_k)^(1/2) + epsilon_0 * I = eta * (diag(v_k)^(1/2) + epsilon * I)

The second equality is just sqrt(v_k) = sigma * sqrt(u_k), multiplied by eta. It is why epsilon appears as eta * epsilon in the SDE coefficients.

The complete RMSPropW limiting family. Now that every symbol has been introduced, the full statement is: as n -> infinity, choose hyperparameters and initial state so that
eta_n -> 0 [small discrete updates] sigma_n -> infinity [noise-dominated gradients] h_n = eta_n^2 eta_n * sigma_n -> sigma_0 in (0, infinity) [finite diffusion scale] eta_n * epsilon_n -> epsilon_0 in [0, infinity) [finite denominator offset] (1 - beta_(2,n)) / h_n -> c_2 in (0, infinity) [finite second-moment rate] lambda_n / eta_n -> lambda_0 in [0, infinity) [finite PyTorch-decay drift] v_(0,n) / sigma_n^2 -> u_0 [finite initial denominator state]
We also assume the population gradient and covariance remain O(1) and regular along the time interval under study. When Adam's first moment is added, impose the analogous condition (1 - beta_(1,n)) / h_n -> c_1 in (0, infinity) and use a compatible finite initial first-moment state. Here r_n = o(h_n), if it appears in a more formal version, means r_n / h_n -> 0: an error smaller than one SDE-time increment.

The limiting trajectory is the interpolation Theta^(n)(t) = theta_(floor(t / h_n),n) (and similarly for u). Thus a fixed interval of continuous optimization time contains about 1 / h_n increasingly small optimizer updates. The point of holding each displayed combination finite is not that those raw hyperparameters should be numerically constant. It is that no part of the limiting dynamics should accidentally freeze, blow up, or disappear merely because we changed the discretization. A zero decay or zero epsilon limit can still be a deliberate modeling choice.

2b. Rewrite each part of one update

Use P_k = eta * (sqrt(v_k) + epsilon), h = eta^2, and sqrt(h) = eta. The three pieces of the parameter update become

First distinguish a noisy gradient component from the resulting noisy parameter increment:

raw gradient-noise component: delta_g_noise = sigma * Sigma^(1/2) * z_k parameter increment caused by that component: delta_theta_noise = -eta * (sqrt(v_k) + epsilon)^(-1) * delta_g_noise

The next display does not introduce any new noise. It only rewrites that same parameter increment so the Brownian-sized factor sqrt(h) * z_k is visible:

gradient drift: -eta * (sqrt(v_k) + epsilon)^(-1) * grad_L = -P_k^(-1) * grad_L * h parameter noise from the gradient-noise component: -eta * (sqrt(v_k) + epsilon)^(-1) * sigma * Sigma^(1/2) * z_k = -P_k^(-1) * sigma_0 * Sigma^(1/2) * [sqrt(h) * z_k] PyTorch decay: -eta * lambda * theta_k = -(lambda / eta) * theta_k * h

Adding these three identities gives

Delta theta_k = -P_k^(-1) * [grad_L(theta_k) * h + sigma_0 * Sigma(theta_k)^(1/2) * (sqrt(h) * z_k)] - (lambda / eta) * theta_k * h

The bracketed random variable sqrt(h) * z_k has covariance h * I, so it becomes dW_t in the Brownian limit. Matching conditional mean and covariance gives the RMSPropW SDE

d Theta_t = -P_t^(-1) * [grad_L(Theta_t) * dt + sigma_0 * Sigma(Theta_t)^(1/2) * dW_t] - (lambda / eta) * Theta_t * dt

Geometry over a finite SDE horizon

To understand the shape of this process, temporarily freeze the drift and diffusion near one point and write the local SDE as d Theta_t = b * dt + G * dW_t, with D = G * G^T. This constant-coefficient approximation has the exact distribution

Theta_t - Theta_0 ~ N(b * t, D * t)

The mean moves linearly with t; the covariance ellipse has squared radii proportional to t, hence radii proportional to sqrt(t). Along any unit direction q,

mean displacement along q = q^T * b * t noise standard deviation along q = sqrt(q^T * D * q * t) directional signal-to-noise ratio = |q^T * b| / sqrt(q^T * D * q) * sqrt(t)

Thus, if drift and noise are comparable in a particular direction at t = 1, then one unit of SDE time is indeed a noisy horizon. But one SDE-time unit is a chosen rescaled unit, not an epoch or a universal amount of training. A ratio of 100 at t = 1 is also compatible with this limit; the asymptotic argument requires finite coefficients, not that their ratio be near one.

The raw-gradient noise dominance and the macroscopic SDE signal-to-noise ratio are different statements. In the simplified one-coordinate, stationary, epsilon_0 = 0 case, u ~= Sigma_(ii), the limiting diffusion has approximately

drift magnitude ~= |mu_i| / (sigma_0 * sqrt(Sigma_(ii))) diffusion standard deviation per sqrt(time) ~= 1 raw-gradient signal-to-noise = |mu_i| / (sigma * sqrt(Sigma_(ii))) = eta * |mu_i| / (sigma_0 * sqrt(Sigma_(ii))) -> 0

So the macroscopic SDE drift can be 100 times its diffusion scale over one SDE-time unit while the raw gradient is still noise dominated in the joint limit. For finite training, however, whether that separation is a good approximation remains an empirical question.

Band, cone, or neither? In a two-dimensional constant-coefficient cartoon, the uncertainty ellipse grows like sqrt(t) while the mean travels like t; its width relative to the mean distance shrinks like 1 / sqrt(t). It is therefore broad relative to the mean near the start and increasingly narrow later. This is not a fixed-angle cone. Nor is a one-standard-deviation ellipse a 68% multivariate region: in two dimensions it contains about 39% probability. In a real optimizer, b and D change with Theta_t; the mean path bends and covariance ellipses rotate and stretch. The earlier diagram's band is only a schematic local tube, not a literal confidence band or cone.

We have now exposed the direct parameter-update coefficients: sigma_0, epsilon_0, and lambda / eta. The remaining coefficient c_2 enters through the evolution of the hidden second-moment state u, which we derive next.

Sign check. The Complete(d)P source writes its simplified SDE with a positive deterministic drift immediately after a negative descent recurrence. The SDE above uses the sign implied by that recurrence. Replacing W by -W can change the displayed Brownian sign without changing a distribution; it cannot change the deterministic descent sign.

3. Track the Second-Moment State

The parameter SDE contains P_t, but P_t is not a fixed matrix. It is the adaptive preconditioner built from the evolving second-moment state:

P_t = sigma_0 * diag(u_t)^(1/2) + epsilon_0 * I

A large entry of P_t suppresses both deterministic gradient movement and the Brownian kick in that parameter direction; a small entry amplifies both. To preserve the parameter path, we must preserve the law of u_t, not only the displayed Theta equation.

Start from the elementwise RMSPropW recurrence and the definitions of the rescaled state and rate:

v_(k+1) = beta_2 * v_k + (1 - beta_2) * g_k^2 u_k = v_k / sigma^2 1 - beta_2 = c_2 * h

Subtract v_k from the first line, then divide by sigma^2:

u_(k+1) - u_k = [v_(k+1) - v_k] / sigma^2 = (1 - beta_2) * [g_k^2 / sigma^2 - v_k / sigma^2] = c_2 * h * [(g_k / sigma)^2 - u_k]

Finally, insert g_k = grad_L + sigma * Sigma^(1/2) * z_k, so that g_k / sigma = grad_L / sigma + Sigma^(1/2) * z_k. This gives

u_(k+1) - u_k = c_2 * h * [(grad_L / sigma + Sigma^(1/2) * z_k)^2 - u_k]

Every square in this display is elementwise, as in RMSPropW; it is not a matrix square. Be careful about which quantity is averaged: E[Sigma^(1/2) * z_k] = 0. It is the elementwise square whose expectation is diag(Sigma).

To see this, let A = Sigma^(1/2) and y = A * z_k. The i-th coordinate is y_i = sum_j A_(ij) * z_j. Since E[z_k] = 0 and Cov(z_k) = I, E[z_j * z_m] = delta_(jm), where delta_(jm) is one when j = m and zero otherwise. Therefore

E[y_i^2] = E[(sum_j A_(ij) * z_j) * (sum_m A_(im) * z_m)] = sum_(j,m) A_(ij) * A_(im) * E[z_j * z_m] = sum_j A_(ij)^2 = (A * A^T)_(ii) = Sigma_(ii)

Collecting these coordinates gives E[y^2] = diag(A * A^T) = diag(Sigma). This is why the second-moment state drifts toward diag(Sigma), rather than toward a scalar variance or the full covariance matrix.

In the complete limiting family, grad_L / sigma -> 0. Make the stochastic size explicit by writing Y_k = (grad_L / sigma + Sigma^(1/2) * z_k)^2 and R_k = Y_k - E[Y_k | F_k]. Then

Delta u_k = c_2 * h * [E[Y_k | F_k] - u_k] + c_2 * h * R_k E[R_k | F_k] = 0 Var(R_k | F_k) = O(1)

Assuming the standardized gradient noise has bounded conditional fourth moments, Var(R_k | F_k) = O(1). The second line is therefore a centered O(h) random kick with conditional variance O(h^2) per optimizer step. Over a fixed SDE interval of length T, there are about T / h such conditionally centered kicks. Their accumulated variance is therefore

(T / h) * O(h^2) = O(T * h) accumulated standard deviation = O(sqrt(h)) = O(eta) -> 0

Yes: the accumulated variance is O(h), and it vanishes because h = eta^2 -> 0. This is a conditional-variance or martingale calculation; it does not require the whole sequence of increments to be unconditionally independent. Thus u has the deterministic limit

d u_t = c_2 * [diag(Sigma(Theta_t)) - u_t] * dt

This is not an arbitrary omission of noise: the mean squared-gradient update survives at order dt, while its centered fluctuation is too small to survive as Brownian noise. The parameter update still has Brownian noise because its normalized gradient fluctuation is order sqrt(h).

The limiting state is therefore the joint process X_t = (Theta_t, u_t). Its drift and Brownian diffusion can be written schematically as

d X_t = [ -P(u_t)^(-1) * grad_L(Theta_t) - (lambda / eta) * Theta_t c_2 * (diag(Sigma(Theta_t)) - u_t) ] * dt + [ -P(u_t)^(-1) * sigma_0 * Sigma(Theta_t)^(1/2) 0 ] * dW_t

This makes c_2 load-bearing: it is the speed at which the denominator adapts relative to Brownian/SDE time. Change c_2, and u_t follows a different path; then P(u_t) differs; then both the drift arrow and covariance ellipse of every later parameter update differ.

Why matching coefficients means matching the continuous process

Imagine a point moving through parameter space. During an interval dt, the drift term gives its mean displacement, while the Brownian term gives a small random kick with a state-dependent covariance ellipse. The matrix P(u_t)^(-1) bends and rescales both: it is the optimizer's local geometry. The u_t dynamics determine how that geometry changes along the path.

If two configurations start from the same joint state and have the same joint drift and diffusion functions, then every sufficiently short interval has the same conditional mean and covariance. Chaining those local steps produces the same limiting path distribution, subject to the usual SDE existence assumptions. If any coefficient changes, the continuous process itself changes; transferred hyperparameters then need not mean the same optimization behavior.

4. Hold the Batch-Only SDE Fixed

Increase batch size by kappa, so sigma_new = sigma / sqrt(kappa). Keeping the coefficients of the same RMSPropW SDE fixed gives:

Quantity held fixedWhyResult
sigma_0 = eta * sigmaBrownian-kick magnitude after adaptive normalization.eta_new = sqrt(kappa) * eta
epsilon_0 = eta * epsilonThe same preconditioner function P(u).epsilon_new = epsilon / sqrt(kappa)
c_2 = (1 - beta_2) / eta^2The same rate of denominator adaptation in SDE time.1 - beta_2_new = kappa * (1 - beta_2)
lambda / etaThe same PyTorch decoupled-decay drift.lambda_new = sqrt(kappa) * lambda
K * eta^2The same amount of continuous optimization time.K_new = K / kappa

The last line is why larger-batch training uses fewer iterations at fixed token count. The paper source's displayed k' = kappa * k conflicts with the time-scale equation; the invariant K * eta^2 gives K_new = K / kappa.

Batch-only conclusion. If only batch changes, stop here: the five rows above are the complete SDE-invariance argument. The next two stages add Adam's first moment and then make a separate duration prescription.

5. Add Adam's First-Moment State

m_(k+1) = beta_1 * m_k + (1 - beta_1) * g_k c_1 = (1 - beta_1) / eta^2

Its increment becomes

m_(k+1) - m_k = c_1 * [grad_L(theta_k) - m_k] * h + c_1 * sigma_0 * Sigma(theta_k)^(1/2) * sqrt(h) * z_k

Thus its limiting SDE is

d M_t = c_1 * [grad_L(Theta_t) - M_t] * dt + c_1 * sigma_0 * Sigma(Theta_t)^(1/2) * dW_t

The same Brownian increment drives Theta and M, because both receive the same noisy gradient. Adam's bias corrections become gamma_i(t) = 1 - exp(-c_i * t). Away from the initial boundary layer, the parameter drift is

d Theta_t = -[sqrt(gamma_2(t)) / gamma_1(t)] * [sigma_0 * diag(u_t)^(1/2) + epsilon_0 * sqrt(gamma_2(t)) * I]^(-1) * M_t * dt - (lambda / eta) * Theta_t * dt

Equivalent conventions move a sqrt(gamma_2) factor into the denominator, depending on epsilon placement. The scale invariants are unchanged. Holding c_1 = (1 - beta_1) / eta^2 fixed forces

1 - beta_1_new = kappa * (1 - beta_1)

Malladi et al.'s formal Adam result begins after a positive SDE time t_0, rather than uniformly from the first update. This is a real warm-up limitation: bias-correction factors change rapidly near zero, and the theorem assumes matched states after that boundary layer.

6. Compose Batch and Duration

New claim, not another consequence of batch invariance. The batch-only derivation held every adaptive SDE coefficient fixed. Duration scaling instead chooses to preserve the integration horizon while allowing the noise coefficient to change. The paper motivates and tests this choice empirically.

Let batch and token horizon change by m_B and m_D. The new number of updates is K_new = (m_D / m_B) * K. Requiring the same integration horizon gives

K_new * eta_new^2 = K * eta^2 therefore eta_new = eta * sqrt(m_B / m_D)

The same invariant bookkeeping yields the table's optimizer factors:

epsilon_new = epsilon * sqrt(m_D / m_B) (1 - beta_i)_new = (1 - beta_i) * (m_B / m_D) lambda_new = lambda * sqrt(m_B / m_D) [PyTorch AdamW] steps_new = steps * (m_D / m_B)

For pure batch scaling (m_D = 1), this preserves the full adaptive SDE: sigma_0, epsilon_0, c_1, c_2, decay drift, and horizon. For duration scaling it preserves the horizon and moment/denominator time scales, but not the identical SDE:

sigma_0_new / sigma_0 = 1 / sqrt(m_D)

Longer-duration scaling therefore intentionally changes effective noise. It is the paper's iso-horizon hypothesis and empirical rule, not a deduction from batch-only SDE invariance. This is why token-horizon transfer deserves more skepticism than the batch-only square-root rule.

7. Choose the Correct Weight-Decay Semantics

The weight-decay factor is determined by the decay term's SDE drift, so optimizer semantics matter. In PyTorch AdamW the decay increment is -eta * lambda * theta, which becomes -(lambda / eta) * theta * dt when dt = eta^2. The invariant is therefore lambda / eta.

PyTorch AdamW: lambda_new = lambda * sqrt(m_B / m_D)

In the original Loshchilov-Hutter convention, called AdamLH in the paper, the decay increment is instead -lambda * theta. In SDE time this is -(lambda / eta^2) * theta * dt, so it preserves a different quantity:

AdamLH: lambda_new = lambda * (m_B / m_D)

For batch-only scaling, this reads sqrt(kappa) for PyTorch AdamW and kappa for AdamLH. Switching optimizer semantics without changing this factor creates a real drift mismatch.

8. Where This Approximation Can Fail

The SDE argument is a limit argument. It is most credible when the optimizer step is small enough that many discrete steps approximate a smooth noisy path. It becomes less credible when:

  • Batch is too large. You take too few optimizer steps; the discrete path no longer approximates the same SDE.
  • Learning rate is too large. Euler-Maruyama discretization error becomes a real training effect.
  • Gradient noise is not close to batch-averaging noise. Correlated data, packing, dedup artifacts, curriculum, or repeated data can change the noise law.
  • Gradient clipping is active. Clipping changes both drift and noise in a state-dependent way not represented by the simple SDE.
  • Adam epsilon is numerically irrelevant or numerically dominant. If epsilon is far below optimizer precision, scaling it may not matter. If it dominates the denominator, scaling can matter too much.
  • Fused optimizers differ subtly. Bias correction, epsilon placement, decoupled decay semantics, FP32 master weights, and BF16/FP8 optimizer state can all change the effective rule.
  • Beta scaling leaves the legal range. If kappa * (1 - beta) is not small, beta can become invalid or qualitatively different. This is a warning that you are outside the asymptotic regime.

9. Muon Batch and Duration: A Finite-Budget Argument

conditional LMO extension, not part of Complete(d)P

The question is how Muon's learning rate and momentum should change when batch size B or total sample budget T changes. The AdamW SDE argument above cannot simply be relabeled Muon. Ideal Muon applies a polar factor to a momentum matrix, and Polar(c M)=Polar(M) for every positive scalar c. Batch noise changes the singular directions of the update, not merely its magnitude.

What this section does and does not prove. It studies an idealized spectral linear-minimization-oracle optimizer at fixed model size. The proof bounds stationarity averaged along a finite trajectory; minimizing that bound is a certificate-based tuning heuristic. It is not an SDE limit, a path-invariance result, or a theorem about endpoint loss.
inside one optimizer step: choose the direction with the largest predicted first-order decrease across a K-step training budget: choose hyperparameters that minimize a bound on trajectory-average stationarity

The idealized update and its geometry

Use the theorem's indexing convention: first construct m_(k+1), then use it for update k. An implementation that calls this state m_k differs only by an index shift.

g_k = grad f(theta_k) population gradient g_hat_(B,k) = g_k + xi_k minibatch gradient alpha = 1 - beta_mu momentum complement m_(k+1) = (1 - alpha) m_k + alpha g_hat_(B,k) D_k = argmin_(||D||op <= 1) <m_(k+1), D>F theta_(k+1) = theta_k + eta D_k

This section follows the source and calls the momentum complement alpha. The assembled rule cards call the same quantity delta_mu to distinguish it from the residual-depth exponent.

Here <A,B>F=trace(A^T B) is the Frobenius inner product. If m_(k+1)=U Sigma V^T, one minimizer is D_k=-U V^T: the negative polar factor. Operator/nuclear duality gives

min_(||D||op <= 1) <M,D>F = -||M||nuc

The earlier Muon depth realization derives this direction and then applies architecture-dependent shape and depth scales. This section isolates the dimensionless budget multiplier.

What the finite-budget criterion measures

For spectral updates, ||g_k||nuc is the largest first-order loss decrease available per unit operator-norm displacement. Three related summaries are

S_avg = (1/K) sum_(k=0)^(K-1) E[||g_k||nuc] S_minE = min_(0 <= k < K) E[||g_k||nuc] S_Emin = E[min_(0 <= k < K) ||g_k||nuc] S_Emin <= S_minE <= S_avg R sampled uniformly from {0,...,K-1}, independently after the run: E[||g_R||nuc] = S_avg

The summed descent calculation naturally controls S_avg. This is an ergodic or random-iterate statement: if an iterate is selected uniformly after the run, its expected available first-order descent is S_avg. The two minima are weaker corollaries, not new descriptions of the proof. The parent theorem reports S_Emin; the scaling-law paper displays S_minE.

Thus a small bound certifies that the run can reach and spend steps in low-slope regions. It does not bound E[||g_K||nuc], final loss, held-out loss, or generalization. Those require additional arguments or direct measurement.

Derive the one-step descent inequality

Define the ideal direction selected using the true gradient:

D_(g,k) = argmin_(||D||op <= 1) <g_k,D>F <g_k,D_(g,k)>F = -||g_k||nuc

Because D_k minimizes the momentum inner product,

<m_(k+1),D_k>F <= <m_(k+1),D_(g,k)>F

Add and subtract the momentum in the true-gradient inner product:

<g_k,D_k>F = <m_(k+1),D_k>F + <g_k-m_(k+1),D_k>F <= <m_(k+1),D_(g,k)>F + <g_k-m_(k+1),D_k>F = <g_k,D_(g,k)>F + <m_(k+1)-g_k,D_(g,k)>F + <g_k-m_(k+1),D_k>F

Operator/nuclear Holder duality says |<A,D>F| <= ||A||nuc ||D||op. Both candidate directions have operator norm at most one, so

<g_k,D_k>F <= -||g_k||nuc + 2 ||m_(k+1)-g_k||nuc

The factor two has a concrete origin. One error comes from evaluating the chosen direction with the true gradient; the other comes from momentum choosing a different direction than the true gradient would choose.

Now assume f is L_smooth-smooth in operator/nuclear geometry:

f(theta + U) <= f(theta) + <grad f(theta),U>F + (L_smooth/2) ||U||op^2
?

What a gradient difference means. Let

G_X = grad f(X) G_Y = grad f(Y)

For a candidate matrix direction D, the two directional slopes are

directional slope at X = <G_X, D>F directional slope at Y = <G_Y, D>F their difference = <G_Y - G_X, D>F

Consequently, in Muon's operator/nuclear geometry,

||G_Y - G_X||nuc = sup_(||D||op <= 1) |<G_Y - G_X, D>F|

This is the largest possible change, between X and Y, in the directional slope along any operator-norm-unit direction. Thus

||G_Y - G_X||nuc <= L_smooth * ||Y - X||op

says that moving an operator-norm distance r changes no allowed unit direction's predicted loss slope by more than L_smooth*r. This is a curvature bound. In one dimension it is |f'(y)-f'(x)| <= L_smooth |y-x|.

How this bounds the Taylor remainder. More generally, assume

||grad f(x+s) - grad f(x)||dual <= L_smooth * ||s||

The fundamental theorem of calculus along the line from x to x+s gives

f(x+s) - f(x) = integral_(0 to 1) <grad f(x+t s),s> dt

Subtract the first-order prediction made using the gradient frozen at x:

f(x+s) - f(x) - <grad f(x),s> = integral_(0 to 1) <grad f(x+t s)-grad f(x),s> dt

Dual-norm Holder inequality and smoothness bound each integrand:

|<grad f(x+t s)-grad f(x),s>| <= ||grad f(x+t s)-grad f(x)||dual * ||s|| <= L_smooth * t * ||s||^2

Since the integral of t from zero to one is one half,

f(x+s) <= f(x) + <grad f(x),s> + (L_smooth/2) ||s||^2

The gradient norm measures the descent currently available. The gradient-difference norm measures how quickly that local prediction can become inaccurate as the parameters move.

Set U=eta D_k, use ||D_k||op <= 1, and insert the direction inequality:

f(theta_(k+1)) <= f(theta_k) - eta ||g_k||nuc + 2 eta ||m_(k+1)-g_k||nuc + (L_smooth/2) eta^2 therefore eta ||g_k||nuc <= f(theta_k)-f(theta_(k+1)) + 2 eta ||m_(k+1)-g_k||nuc + (L_smooth/2) eta^2
Two different optimizations. At each state, Muon chooses the direction with the best linearized decrease. Hyperparameter tuning instead minimizes a bound on average stationarity over the resulting trajectory. The smoothness remainder prevents the local step radius eta from growing without limit.

Unroll and bound the momentum error

The argument now needs four explicit assumptions:

  • E[xi_k | history_k]=0: each minibatch gradient is conditionally unbiased.
  • E[||xi_k||F^2 | history_k] <= sigma^2/B: effective batch averaging follows a finite-variance 1/B law.
  • ||g_i-g_(i+1)||nuc <= L_smooth ||theta_i-theta_(i+1)||op: gradients are Lipschitz in the optimizer's geometry.
  • ||A||nuc <= rho ||A||F: Euclidean/Frobenius noise can be converted to the dual norm. For a p x q matrix, the worst-case rho is sqrt(min(p,q)).

Initialize m_0 with a batch-gradient estimate obeying the same variance bound, so E[||m_0-g_0||F^2] <= sigma^2/B.

Let r=1-alpha and e_k=m_(k+1)-g_k. Recursing through the exponential average gives

e_k = r^(k+1) (m_0-g_0) + sum_(i=0)^(k-1) r^(k-i) (g_i-g_(i+1)) + alpha sum_(i=0)^k r^(k-i) xi_i = decaying initialization + stale-gradient accumulation + averaged minibatch noise

Each component has a different scaling:

initialization: E[||r^(k+1)(m_0-g_0)||nuc] <= r^(k+1) rho sigma / sqrt(B) staleness: sum_j r^j L_smooth eta <= L_smooth eta / alpha persistent noise variance: E[||alpha sum_j r^j xi_(k-j)||F^2] <= (sigma^2/B) alpha^2 sum_j r^(2j) <= alpha sigma^2 / B persistent noise size in the dual norm: <= rho sigma sqrt(alpha/B)

Combining them yields the per-step momentum mismatch bound

E[||e_k||nuc] <= r^(k+1) rho sigma / sqrt(B) + L_smooth eta / alpha + rho sigma sqrt(alpha/B)

Averaging the initialization term over the run uses (1/K) sum_k r^(k+1) <= 1/(alpha K). The factor two in the one-step direction inequality then doubles every momentum-error contribution.

Telescope the loss and assemble the bound

Sum the one-step inequality over k=0,...,K-1. Consecutive losses cancel, and f(theta_K) >= f_inf, so f(theta_0)-f(theta_K) <= Delta_0, where Delta_0=f(theta_0)-f_inf. The left side is eta sum_k E[||g_k||nuc], not a terminal-gradient term. Dividing by eta K therefore gives the trajectory average in the elementary smooth, unregularized result

S_avg <= Delta_0 / (eta K) + 2 rho sigma / (alpha sqrt(B) K) + 2 rho sigma sqrt(alpha/B) + (1/2) L_smooth eta + 2 L_smooth eta / alpha

The cited parent theorem is slightly more general: it allows a convex regularizer R, measures generalized stationarity at the new iterate, and uses F=f+R. Its proof has the same summed-loss backbone, but the theorem reports the weaker best-iterate consequence. As adapted to batch variance sigma^2/B, write that published form as

S_parent,Emin = E[min_(1 <= k <= K) generalized_stationarity(theta_k)] S_parent,Emin <= upper_K(eta,alpha,B) upper_K = Delta_0 / (eta K) + 2 rho sigma / (alpha sqrt(B) K) + 2 rho sigma sqrt(alpha/B) + (7/2) L_smooth eta + 2 L_smooth eta / alpha
?

Why the elementary derivation had one half.

smoothness remainder per step = (L_smooth/2) eta^2 divide the summed inequality by eta K -> (L_smooth/2) eta

Why the parent theorem has seven halves.

Its generalized descent lemma evaluates stationarity at theta_(k+1) and includes R. Replacing the old gradient by the new gradient costs another L_smooth eta^2, so that lemma carries (3/2)L_smooth eta^2 per step.

The proof then rewrites the momentum mismatch at theta_(k+1) in terms of the mismatch at theta_k. The gradient shift is at most L_smooth eta; because mismatch already has coefficient two, this contributes another 2L_smooth eta after normalization.

3/2 + 2 = 7/2

There is no contradiction. The clean R=0, old-iterate derivation has the tighter constant; the published theorem pays for a more general stationarity statement. Either coefficient produces the same scaling exponents.

TermWhat makes it largeInterpretation
Delta_0/(eta K)Small step or short runInsufficient deterministic progress
2 rho sigma/(alpha sqrt(B) K)Short momentum historyInitialization or burn-in
2 rho sigma sqrt(alpha/B)Noisy batches or short averaging windowPersistent direction noise
(7/2)L_smooth etaLarge trust-region radiusFinite-step curvature
2L_smooth eta/alphaLarge step or stale momentumMomentum tracking error

Optimize learning rate at fixed momentum

Fix a total sample budget T=B K, so K=T/B. This substitution is exact inside the proxy:

upper_T(eta,alpha,B) = Delta_0 B / (eta T) + 2 rho sigma sqrt(B) / (alpha T) + 2 rho sigma sqrt(alpha) / sqrt(B) + L_smooth eta (7/2 + 2/alpha)

With alpha, B, and T fixed, only the first and last terms depend on eta. Define positive constants

A = Delta_0 B / T C = L_smooth (7/2 + 2/alpha) U_eta = A/eta + C eta

Here A/eta is a finite-horizon reach term: steps that are too small cannot spend the initial loss gap within K updates. The term C eta is the certificate's finite-step neighborhood: large steps pay curvature and momentum-staleness costs. Minimizing their sum gives the best guarantee from this proof. It need not minimize measured average stationarity, endpoint stationarity, or loss unless the bound is sufficiently tight and order-preserving for the problem being trained.

U_eta - 2 sqrt(A C) = (sqrt(A/eta) - sqrt(C eta))^2 >= 0 equivalently: d U_eta / d eta = -A/eta^2 + C d^2 U_eta / d eta^2 = 2A/eta^3 > 0

Since U_eta also diverges as eta approaches either zero or infinity, its sole derivative-zero point is the unique global minimum:

eta_star^2 = A/C = [Delta_0 / (L_smooth (7/2 + 2/alpha))] * B/T at fixed alpha and fixed problem constants: eta_mu,star ~ sqrt(B/T) = 1/sqrt(K)

For m_B=B_new/B and m_D=T_new/T, calibrating the unknown prefactor at one base point gives the candidate

eta_mu,new = eta_mu * sqrt(m_B/m_D) beta_mu,new = beta_mu K_new = K * m_D/m_B

This scalar factor happens to match Complete(d)P's AdamW factor, but the reasons differ. Adam preserves coefficients in an adaptive SDE approximation; this Muon rule minimizes a finite-horizon convergence-bound certificate. It is therefore a sweep prior for optimal retuning, not a path-invariance law.

If batch size is also a decision variable

Substituting eta_star back into the full fixed-momentum proxy retains burn-in and gives

min_eta upper_T = D_alpha sqrt(B/T) + H_alpha sqrt(B)/T + N_alpha/sqrt(B) D_alpha = 2 sqrt(Delta_0 L_smooth (7/2 + 2/alpha)) H_alpha = 2 rho sigma/alpha N_alpha = 2 rho sigma sqrt(alpha)

At fixed total budget, increasing B gives cleaner gradients but leaves only K=T/B optimizer steps. Let x=sqrt(B) and a_T=D_alpha/sqrt(T)+H_alpha/T. The batch-dependent proxy is

F(x) = a_T x + N_alpha/x F(x) - 2 sqrt(a_T N_alpha) = (sqrt(a_T x) - sqrt(N_alpha/x))^2 >= 0 therefore, at the interior optimum: a_T x = N_alpha/x B_star = x^2 = N_alpha/a_T

This is why the increasing deterministic/burn-in side is balanced against the decreasing noise side. The equality is not an extra heuristic; it characterizes the global minimum of this positive a x+c/x proxy. At long horizons, H_alpha/T is lower order than D_alpha/sqrt(T), so

fixed momentum, token-optimal allocation: B_star ~ sqrt(T) eta_star(B_star) ~ T^(-1/4) upper_star ~ T^(-1/4)

This interior optimum depends on holding T fixed. At fixed K, increasing batch size does not remove optimizer steps, and this proxy improves monotonically with cleaner gradients. In practice B is integer and hardware-constrained; if the continuous optimum lies outside the feasible interval, the constrained optimum is at a boundary.

Optional alternative: tune the momentum horizon

Derive the prescribed-batch joint learning-rate and momentum family

Let alpha=1-beta_mu shrink as the horizon grows while treating B as prescribed. In the long-horizon, small-alpha regime, retain the progress term, persistent noise, and the momentum-amplified staleness term:

U_leading = A/eta + C sqrt(alpha) + D eta/alpha A = Delta_0 B/T C = 2 rho sigma/sqrt(B) D = 2 L_smooth

The simultaneous first-order conditions are

d U/d eta = 0: eta^2 = A alpha/D d U/d alpha = 0: C alpha = 2 sqrt(A D)

Hence, with problem constants fixed,

alpha_star ~ B T^(-1/2) eta_star ~ B T^(-3/4) transfer at prescribed B and T: alpha_new = alpha * m_B/sqrt(m_D) eta_mu,new = eta_mu * m_B/m_D^(3/4)

At fixed B, all three retained terms are order T^(-1/4); burn-in is T^(-1/2) and the additive (7/2)L_smooth eta term is T^(-3/4). If B grows, those comparisons must be redone along the chosen path. The rule is feasible only while 0 < alpha <= 1.

If eta, alpha, and B are all optimized using the full proxy, the cited analysis instead obtains

B_star ~ T^(1/6) eta_star ~ T^(-7/12) alpha_star ~ T^(-1/3)

This is not the fixed-momentum B_star~sqrt(T) family. The 1/6 exponent is selected by lower-order burn-in structure; the paper notes that several batch-growth paths are equivalent at leading order after retuning eta and alpha.

Optional bookkeeping: decoupled weight decay

Preserve cumulative first-order shrink in each family

For W <- (1-eta_mu lambda)W, first-order cumulative shrink is controlled by K eta_mu lambda. Preserving it gives

fixed-momentum family: lambda_new = lambda * sqrt(m_B/m_D) prescribed-batch, tuned-momentum family: lambda_new = lambda * m_D^(-1/4)

These are bookkeeping invariants, not results from the LMO theorem, which omits weight decay. They do not prove that the regularization optimum transfers.

What must be measured for practical Muon

Inspect spectral gradient noise and polar-direction fidelity

Euclidean gradient variance does not fully describe noise in a spectral update. For matrix population gradient G, define the row-aggregated example-gradient covariance

C_row = E[(G_example-G)(G_example-G)^T]

A geometry-matched diagnostic is

GNS_spectral = ||C_row^(1/2)||nuc^2 / ||G||nuc^2 E[||G_B-G||nuc] <= ||C_row^(1/2)||nuc/sqrt(B)

Below this scale, minibatch noise can dominate singular subspaces and rotate the polar direction away from the population-gradient direction. Measure nuclear GNS, minibatch-to-reference polar alignment, momentum spectra, and orthogonalization fidelity. A distributed estimator that treats data-parallel rank gradients as samples is biased by correlated rank partitions or repeated packed sequences. The published GNS result is rigorous for stateless spectral descent; extending it through Muon's EMA remains open.

Decision familyCandidate scalingStatus
Given B,T; fixed momentumeta ~ sqrt(B/T)Certificate-derived sweep prior
Choose B; fixed momentumB_star ~ T^(1/2), eta_star ~ T^(-1/4)Token-allocation consequence
Given B,T; tune momentumalpha ~ B T^(-1/2), eta ~ B T^(-3/4)Asymptotic alternative
Jointly choose B,alpha,etaB ~ T^(1/6), alpha ~ T^(-1/3), eta ~ T^(-7/12)Full-proxy optimum; lower-order sensitive
Preserve the same stochastic trajectoryNot derivedNo Muon SDE-invariance theorem here
Claim boundary. The analysis holds model size fixed, assumes constant learning rate, matched initialization, an effective 1/B noise law, and a population objective. It omits warmup, annealing, finite-data generalization, and weight decay. Practical Muon may use Nesterov-style momentum and a finite Newton-Schulz approximation. Width, depth, and matrix shape can also change Delta_0, L_smooth, rho, and sigma. Compose the dimensionless budget multiplier with the separately validated architecture scale, and treat every rule here as a falsifiable sweep prior rather than completed transfer.

5. Token-Horizon Transfer

Token horizon is the least settled part of the paper and probably the most important for scaling-law practice. Width and batch transfer try to preserve a training behavior. But increasing total tokens is supposed to improve the model. So what should be invariant?

Two Ways to Train on More Tokens

Suppose you want four times as many tokens. There are two extreme paths:

  • More iterations at same batch: optimizer runs four times longer.
  • Larger batch at same iterations: optimizer sees four times as much data per step but takes the same number of steps.
Base run B tokens per step, S steps More iterations same B, more steps LR tends to fall as 1/sqrt(kappa) Larger batch larger B, same steps same HPs under iso-horizon rule Same token count increase, different optimizer dynamics The paper's rule chooses what to preserve.
Increasing token count through more steps changes the optimizer integration horizon. Increasing it through batch size mostly improves the gradient signal-to-noise ratio at the same horizon.

The Paper's Observation

Holding batch size fixed and increasing the number of training iterations, the optimal learning rate decays roughly like:

eta_opt(new_duration) ~= eta_opt(base_duration) / sqrt(kappa)

where kappa is the factor by which the training horizon increases. This resembles empirical horizon-scaling results in related work, though reported exponents vary by model size and setup.

The Iso-Horizon Hypothesis

The paper then proposes a stronger interpretation. Rather than saying "longer training simply needs lower LR," they propose an SDE-coordinate prescription for scaling token count:

increase tokens by increasing batch size, keep the number of optimizer iterations fixed, preserve the SDE integration horizon, improve gradient signal-to-noise.

In table form, this is the case m_B = m_D. Learning rate, epsilon, weight decay, and betas do not change from the batch/duration rule. The model improves because each step sees a cleaner gradient, not because the optimizer travels for longer in continuous time. This keeps the integration horizon K * eta^2 fixed, but does not preserve the identical adaptive SDE: the effective noise coefficient sigma_0 = eta * sigma falls as batch grows. That changed noise level is the intended effect and an empirical hypothesis, not an invariance theorem.

Connection Back to Delta h from Updates

The spectral feature-learning condition says that, at the model-scale coordinate system being considered, a training update should produce an O(1) change in hidden features. That statement is clean when the number of optimizer steps is fixed. It becomes incomplete when we scale the number of steps.

In the Adam/RMSProp SDE picture used by the paper, the effective continuous-time step size scales like the square of the learning rate:

dt_effective ~= eta^2

If we increase the number of iterations by kappa at fixed batch size, preserving the same SDE integration horizon asks for:

number_of_steps_new = kappa * number_of_steps_old eta_new^2 = eta_old^2 / kappa so eta_new = eta_old / sqrt(kappa)

Since the hidden-feature update from one optimizer step is proportional to the effective optimizer update, the per-step feature change also shrinks:

Delta_step h_new ~= Delta_step h_old / sqrt(kappa)

But the accumulated stochastic motion over the whole run remains O(1) in quadratic variation:

kappa steps * (1 / sqrt(kappa))^2 = O(1)

This is a horizon analogue of the spectral condition, but only for the SDE integration scale and simplified noise quadratic variation. It does not show that every feature direction, deterministic drift component, or full parameter distribution is invariant after the time grid is refined.

If instead we scale tokens by increasing batch size with the same number of optimizer steps, then m_B = m_D, the table leaves the learning rate unchanged, and per-step Delta h remains comparable. The improvement comes from lower gradient noise, not from a longer optimizer path.

Why Schedule Shape Matters

The paper runs an additional learning-rate schedule enumeration: 4,842 non-increasing piecewise-constant schedules for a 121M model, across five token horizons from 155M to 1.24B tokens. The best short-horizon schedule was not a prefix of the best long-horizon schedule.

That matters because it says there is no simple greedy rule like: find the best schedule for 155M tokens, then continue it for 310M, then continue again. The final LR creates an optimization bias, but high early LR is needed for progress. The right tradeoff changes with horizon.

Most speculative part. The token-horizon rule is useful and plausible, but it is less theoretically settled than width/depth parameterization and less direct than batch-size SDE scaling. The paper itself notes it may be specific to the fixed cosine schedule used throughout, and may break at large batch sizes where the optimizer no longer approximates the SDE.

6. Per-Module Hyperparameters

The paper's most practically interesting claim is that per-module hyperparameter tuning can produce real gains and still transfer. This is not obvious. Per-module tuning creates a high-dimensional and unstable search problem.

Why Global Hyperparameters Are Suspicious

A transformer contains parameter groups with very different jobs:

  • input embeddings map sparse token IDs into representation space;
  • Q, K, V matrices control attention geometry and value transport;
  • output projections mix heads back into the residual stream;
  • MLP matrices control most parameter count and nonlinear feature expansion;
  • norm and QK-norm multipliers act more like gates/scales than ordinary matrices;
  • unembedding weights translate hidden states into vocabulary logits.

There is no strong reason these should share one learning rate, one weight decay, one Adam epsilon, or one initialization multiplier. Standard training recipes do so largely because the search problem is too large, not because the equality is theoretically justified.

The Depth-Type Kronecker Factorization

Fully independent per-layer, per-module, per-hyperparameter values are too many. The paper uses a factorized parameterization:

log hyperparameter(module_type, layer) = log type_multiplier(module_type) + log depth_multiplier(layer / L) + log Complete(d)P_scale(module_type, N, L) + log SDE_scale(B, D)

Read it as a known base scale times a learned outer product

Exponentiating the displayed equation separates what the transfer theory supplies from what the search must learn. For one hyperparameter family, write H_(m,l) for the value assigned to module type m in residual block l. Then

H_(m,l) = Complete(d)P_scale(m, N, L) * SDE_scale(B, D) * a_m * b_l a_m = type_multiplier(m) b_l = depth_multiplier(l / L)

The first two factors are deterministic transformations prescribed by the model-scale and batch/duration rules. The search only learns the dimensionless corrections a_m and b_l. This matters: the factorization is not claiming that, say, QKV and MLP weights literally need the same learning rate. It says that, after dividing out their known parameterization scale, their remaining deviations can be described by one type effect and one depth effect.

Why it is called a Kronecker factorization

Remove the known scale factors and arrange the learned multipliers as a matrix with module types as rows and residual-block positions as columns:

M_(m,l) = H_(m,l) / [Complete(d)P_scale(m, N, L) * SDE_scale(B, D)] = a_m * b_l M = a * b^T vec(M) = b kron a [up to the chosen vectorization order]

Thus M is a rank-one outer product. Calling it a Kronecker factorization refers to the vectorized form: a type vector and a depth vector are combined into one vector over every type-by-depth pair. The log form in the paper is useful because products become sums: log M_(m,l) = log a_m + log b_l. Strictly, that additive log matrix is a no-interaction two-way-effects model; the original multiplier matrix M is the rank-one object.

With |M_types| repeated module types and L residual blocks, an unconstrained table has |M_types| * L learned entries. The factorization uses |M_types| + L stored numbers, or |M_types| + L - 1 effective degrees of freedom: multiplying every a_m by a constant c and every b_l by 1 / c leaves every product unchanged. A practical implementation can remove this redundant gauge by, for example, fixing the geometric mean of the depth multipliers to one.

A concrete three-type, four-layer example

Suppose that, after known scale corrections, the learned type and depth factors are

a = [2, 1/2, 1] [QKV, MLP, norm] b = [0.8, 1.0, 1.2, 0.9] [layers 1 through 4] M = a * b^T = [ 1.6, 2.0, 2.4, 1.8 0.4, 0.5, 0.6, 0.45 0.8, 1.0, 1.2, 0.9 ]

QKV receives twice the base correction at every depth, MLP receives half, and all repeated module types share the same relative depth profile: layer 3 is 20% higher and layer 4 is 10% lower than the middle reference. The factorization lets the search discover both facts without separately tuning all twelve cells.

What it assumes, and what it rules out

The factorization asserts that relative type effects do not change with depth, and relative depth effects do not change with type:

M_(m,l) / M_(m',l) = a_m / a_(m') [independent of l] M_(m,l) / M_(m,l') = b_l / b_(l') [independent of m]

It therefore cannot represent a genuine type-by-depth interaction, such as “QKV should be especially hot only in early layers, while MLP should be especially hot only in late layers.” Such a pattern needs a full table, a low-rank sum of several outer products, or another interaction model. Singleton modules such as an input embedding or unembedding do not have a repeated residual-block depth coordinate, so in practice they naturally use their type and known scale factors without this repeated-block depth profile.

Why normalized depth is used for transfer

At source depth L, the values b_l are samples of an assumed continuous profile b(t) at normalized positions t = l / L. At target depth L_new, the paper samples the linearly interpolated profile at t_new = l_new / L_new. For example, a source layer at the halfway point is meant to correspond to a target layer at the halfway point, not to a target layer with the same absolute index. This is a smoothness assumption about hyperparameters across depth, motivated by the depth ODE/SDE picture; it is not a consequence of that picture alone.

Interpolation detail worth auditing. The paper says it linearly interpolates the learned depth multipliers while also optimizing multipliers in log-space. Interpolating multiplier values and interpolating their logs are different operations: the latter is geometric interpolation. An implementation should state which representation it interpolates, especially when neighboring multipliers differ materially.
Per-module HP = type factor + depth factor + scale rules Module type factors QKV attn out MLP in/out norms emb/unemb + Depth factors layer 1 layer L interpolate when depth changes + Scale rules width/depth table batch SDE rule duration rule Optimization happens in log-space over the dimensionless multipliers.
The factorization is a strong structural assumption. It says module identity and normalized depth location explain most useful hyperparameter variation.

The paper tests both sides of this structural assumption for learning rates. Removing depth multipliers but retaining type-specific rates is worse than the full factorization, so depth position adds useful signal. Starting a more difficult fully uncoupled per-layer search from the factorized optimum produced virtually no further improvement in their experiment. That is encouraging but not a proof of exact factorization: the unconstrained search has many more dimensions and may have missed a better solution.

The Search Problem

The paper reports that the per-module loss landscape has sharp instability cliffs. Different modules become unstable at different learning-rate scales, and module interactions make the stability boundary hard to model. Random search either samples too many divergent runs or misses the optimum if the bounds are too conservative. Standard Gaussian-process Bayesian optimization can struggle because the landscape is non-stationary.

Their practical solution is a trust-region random search:

  • optimize in log2 hyperparameter space;
  • sample around the best known point inside an infinity-norm box;
  • start with radius 1, meaning each sampled multiplier can vary by up to 2x;
  • if no improvement happens for 100 trials, shrink the radius by 0.7;
  • run asynchronously with up to 100 simultaneous trials.

In the main per-module experiment, they optimize 79 hyperparameters: per-module multipliers for learning rate, weight decay, AdamW epsilon, 1 - beta1, 1 - beta2, initialization standard deviation, and per-depth residual block multipliers.

Cost matters. The headline per-module search used 5000 trials and 6730 A100 GPU-hours at 50M parameters and 1.64B tokens. The authors report that 99% of the gain over the global baseline appeared within the first 3168 A100 GPU-hours. This is a demonstration that per-module HP transfer can work, not a cheap default procedure for every lab.

7. Assembled Transfer Rules

We can now assemble the operational recipe. The preceding sections supplied its ingredients: width/depth parameterization and depth learning-rate/epsilon scaling; the batch SDE rule; duration scaling; and the reason that different module groups need different base hyperparameters. The paper's operational recipe is for PyTorch-style AdamW. The spectral target itself is optimizer independent, so this atlas separately marks the SGD and broader Adam realizations, plus a later conditional Muon extension, rather than presenting every exponent as one theorem.

The learning-rate lens

Optimizer realizationHidden-matrix width factorDepth factorBatch/duration factor
SGD spectral-paper realization (d_out / d_in)_new / (d_out / d_in)_base m_L^(2 * alpha - 1) m_B / m_D for the analogous plain-SGD diffusion clock
Adam geometry-aware spectral rule [sqrt(r_new / q_new) / d_in_new] / [sqrt(r_base / q_base) / d_in_base] m_L^(alpha - 1) when normalized-update geometry is preserved sqrt(m_B / m_D) in the paper's adaptive SDE regime
Complete(d)P AdamW endpoint m_N^(-1): assumes q = Theta(1), r = Theta(1) m_L^(alpha - 1) sqrt(m_B / m_D)
Muon fixed-momentum LMO candidate orthogonalize the momentum, then multiply that direction by sqrt(d_out/d_in); correct the exposed LR once by measured kappa_base/kappa_new m_L^(alpha - 1), conditional on constant-order polar-update action sqrt(m_B / m_D), with Muon momentum fixed

The SGD batch factor follows from dt = eta: its diffusion coefficient squared is eta * sigma^2. Since sigma^2 falls by m_B and the step count grows by m_D / m_B, eta *= m_B / m_D preserves the integration horizon and gives the pure-batch linear rule. This guide does not derive SGD momentum, epsilon, or weight-decay transfer; the remaining optimizer-state cards are specifically AdamW.

For Muon, the jointly measured action correction must be applied only once after all width, depth, and rank changes. A combined fixed-momentum candidate is eta_new/eta = m_L^(alpha-1) * sqrt(m_B/m_D) * kappa_base/kappa_new. Muon's square-root batch/duration factor comes from a separate LMO proxy, not from the adaptive SDE.

Architecture and initialization

Optimizer independent

Residual writes

MHA and MLP residual multiplier *= m_L^(-alpha)
Width
none
Batch/duration
none
Status
depth-limit model plus transformer transfer evidence

Shrinks each of the L residual writes while retaining a finite residual path.

Spectral initialization

Hidden matrix variance

shape-general: Var(W_ij) = Theta([1 / d_in] * min(1, d_out / d_in)) fixed hidden aspect ratio: variance *= m_N^(-1)
Depth
none; residual multiplier handles it
Batch/duration
none
Other tensors
input embedding, hidden bias/norm, unembedding LN: no paper width factor
Adam coordinate change

Unembedding initialization

forward multiplier removed unembedding variance *= m_N^(-2)
Old coordinate
logits = m_N^(-1) * W_old * h
New coordinate
W_new = m_N^(-1) * W_old
Finite-shape caveat
not a universal iid rectangular-init exponent

Learning rates

Paper recipe: AdamW

Hidden matrix LR

eta *= m_N^(-1) * m_L^(alpha - 1) * sqrt(m_B / m_D)
Width assumption
q_t = Theta(1), r_t = Theta(1)
Broader rule
replace m_N^(-1) with the measured sqrt(r/q) / d_in ratio
Risk
diffuse Adam updates move the exponent toward -1/2
Companion result: SGD

Hidden matrix LR

eta *= [(d_out / d_in)_new / (d_out / d_in)_base] * m_L^(2 * alpha - 1) * (m_B / m_D)
Square hidden width
no width factor
Depth source
raw gradient already scales as L^(-alpha)
Batch source
plain-SGD dt = eta diffusion, without momentum
Conditional extension: spectral Muon

Hidden matrix LR

eta_mu *= m_L^(alpha - 1) * sqrt(m_B / m_D) * (kappa_base / kappa_new)
Shape adjustment
orthogonalize first, then apply sqrt(d_out/d_in) to the resulting direction
Momentum
held fixed in this candidate
Action
kappa is measured after all shape/model changes and corrected once
Paper recipe: AdamW

Nonmatrix and output LR groups

hidden biases/norms: m_L^(alpha - 1) * sqrt(m_B / m_D) input embedding and unembedding LN: sqrt(m_B / m_D) unembedding weights: m_N^(-1) * sqrt(m_B / m_D)
Unembedding
Adam multiplier folding, not optimizer-independent
Per-module base
multiply these factors after the learned type/depth multiplier

AdamW state, regularization, and schedule

Paper recipe: AdamW

Epsilon map

all groups also *= sqrt(m_D / m_B) hidden weights / biases / norms: m_N^(-1) * m_L^(-alpha) QK-norm multipliers: m_L^(-alpha) input embedding: m_N^(-1) output weights / biases / norms: 1
Purpose
preserve epsilon relative to raw gradient scale
Convention
outside-the-root epsilon in the optimizer coordinates named here
Paper recipe: PyTorch AdamW

Weight decay

hidden and unembedding weights: lambda *= m_N * sqrt(m_B / m_D) all other groups: lambda *= sqrt(m_B / m_D)
Semantics
decay increment is -eta * lambda * W
Not AdamLH
AdamLH uses a different batch/duration exponent
Whole run
per-step spectral safety does not by itself preserve cumulative shrinkage
Adaptive SDE state

Moment complements

(1 - beta1) *= m_B / m_D (1 - beta2) *= m_B / m_D
Width/depth
none in the paper table
Purpose
preserve EMA rates per unit adaptive SDE time
Validity
scaled beta must remain in its legal, asymptotic regime

Conditional Muon state, regularization, and schedule

Recommended first transfer test

Fixed Muon momentum

eta_mu *= sqrt(m_B / m_D) beta_mu unchanged steps *= m_D / m_B lambda *= sqrt(m_B / m_D)
Source
large-horizon LMO convergence proxy
Not present
no beta2 or Adam epsilon rule
Decay status
preserves K eta lambda; not in the proxy theorem
Alternative asymptotic family

Jointly tuned Muon momentum

delta_mu *= m_B / sqrt(m_D) eta_mu *= m_B / m_D^(3/4) lambda *= m_D^(-1/4) steps *= m_D / m_B
Coordinate
delta_mu=1-beta_mu
Do not combine
replaces the fixed-momentum square-root LR rule
Validity
momentum complement must stay in (0,1]
Schedule
derived for constant LR, not cosine or warmup
Required Muon diagnostics

Direction and oracle fidelity

measure nuclear GNS compare polar directions across batch splits track momentum singular quantiles track Newton-Schulz residuals measure held-out kappa_W
Why
batch changes singular subspaces, not just gradient magnitude
Stateful gap
nuclear-GNS theory does not yet cover Muon's EMA
Failure
the nominal transfer rule no longer describes the realized update
Do not silently mix rows from different optimizer realizations. Complete(d)P's epsilon, beta, weight-decay, and square-root batch rules form one AdamW coordinate system. Replacing only its hidden width LR with the SGD value, or with the diffuse-Adam endpoint, generally changes the relative effects of epsilon and decay too. The geometry-aware Adam rule is best treated as a diagnostic and possible refinement: measure q_t, r_t, activation action, epsilon occupancy, and eta * lambda before changing the paper recipe. A hybrid LLM optimizer must transform its Muon matrix groups with one complete Muon regime and its AdamW boundary groups with the AdamW regime; the shared square-root LR factor does not make their state transformations interchangeable.

Four AdamW Examples

Increase batch 4x, same tokens

m_B = 4, m_D = 1 learning_rate *= 2 epsilon *= 1/2 weight_decay *= 2 1 - beta_i *= 4 steps *= 1/4

This is the square-root batch rule plus shorter training in step count.

Increase tokens 4x, same batch

m_B = 1, m_D = 4 learning_rate *= 1/2 epsilon *= 2 weight_decay *= 1/2 1 - beta_i *= 1/4 steps *= 4

This is the fixed-batch duration rule. The optimal peak LR decays with horizon.

Increase tokens 4x by batch 4x

m_B = 4, m_D = 4 learning_rate unchanged epsilon unchanged weight_decay unchanged 1 - beta_i unchanged steps unchanged

This is their "iso-horizon" interpretation: same number of optimizer updates, better gradient SNR.

Scale model and train longer

apply module-specific width/depth factors then multiply optimizer HPs by the batch/duration factors above

The atlas factors compose multiplicatively.

8. Empirical Evidence

The paper's empirical case has several layers.

Width/Depth Global Learning Rate Transfer

Complete(d)P is tested for global learning-rate transfer across width and depth. The paper reports transfer for both alpha = 0.5 and alpha = 1, including in a modern transformer variant with QK norms. It also reports that removing QK norms does not reproduce a breakdown observed in CompleteP.

Batch-Size Transfer

The paper compares learning-rate transfer with and without the SDE batch-size rule. With the square-root rule, learning-rate optima align across batch sizes. Without the adjustment, transfer fails. A similar story is shown for weight decay: unadjusted weight decay drifts, while the effective rescaled decay transfers.

Token-Horizon Transfer

Holding batch fixed and increasing training iterations shifts the optimal learning rate downward roughly as 1 / sqrt(kappa). Increasing token count by increasing batch size while holding iteration count fixed gives much cleaner transfer. The paper also fits a scaling-law comparison claiming the full SDE token-horizon rule improves large-scale performance compared with width/depth-only transfer.

Per-Module Transfer

The main result: per-module hyperparameters improve small-scale training and the gains persist after transfer. The paper's figure caption reports:

  • search at 50M parameters and 1.6B tokens;
  • global HPs require 2.3x longer training to match the small-scale per-module result;
  • direct transfer to a roughly 600x larger FLOP budget;
  • 1.32x speed-up at large scale plus improved downstream benchmarks.

The body text separately describes transfer to a 1.3B parameter, 26B token scale, about 420x compute, where per-module HPs give a 27% speed-up to reach the global-HP baseline loss. The appendix also describes downstream benchmark comparisons for 7.2B parameter, 143B token runs.

Reading note on reported scales. The public paper/source reports several related large-scale numbers: roughly 600x FLOPs in the main figure caption, 420x compute for the 1.3B/26B transfer in the text, and 7.2B/143B benchmark runs in the appendix. They are not all the same experiment. Treat the speed-up magnitudes as experiment-specific, not universal constants.

Proxy Scale Matters

The appendix shows that transferring a global learning rate from a very small 58M model to a 483M model incurs a small penalty. Optimizing at 136M or larger seems to remove that penalty for the tested setting. This is exactly what the asymptotic story predicts: too-small proxies may not yet be close enough to the limiting regime for transfer to be clean.

9. Assumptions and Failure Modes

The useful way to read this paper is as a set of invariance assumptions. Each assumption makes predictions, and each has practical ways to fail.

Assumption Prediction What violates it Practical correction
Finite models are close enough to the same width/depth limit. Global and per-module optima transfer across model size. Proxy too small, architecture components not covered, unstable residual spectrum, different head-scaling regime. Use an intermediate proxy; run coordinate checks; test a small target sweep over LR/WD.
Residual depth multipliers vary smoothly over normalized depth. Depth multipliers can be interpolated from small to large depth. Layer roles are non-smooth, e.g. special early/late layers, tied layers, shared recurrent blocks, or architecture changes. Use role-aware grouping; inspect learned multipliers; avoid blind interpolation across changed block types.
Batch gradient noise scales approximately as 1 / sqrt(B). LR and WD scale as sqrt(B); epsilon scales inversely; beta complements scale linearly. Correlated packed samples, data repeats, curriculum, non-iid shards, aggressive dedup, active clipping. Measure gradient noise or run a small batch sweep; avoid applying the rule through a clipping boundary.
Discrete AdamW approximates the intended SDE. SDE-preserving hyperparameter transformations transfer. Large LR, very large batch, too few steps, beta values outside asymptotic regime. Use the rule locally; do not extrapolate across orders of magnitude without intermediate validation.
Optimizer implementation matches the assumed AdamW. Weight decay and epsilon rules apply as stated. AdamLH semantics, different epsilon placement, fused optimizer quirks, BF16/FP8 state, missing per-group epsilon support. Audit optimizer equations. Log effective per-group LR, WD, epsilon, and betas after transformation.
Fixed schedule family is acceptable. Token-horizon scaling can be expressed through peak LR and SDE factors. Different schedule shapes, warmup changes, restart schedules, adaptive schedules, horizon-dependent annealing. Treat the duration rule as schedule-family-specific. Search schedule shape separately if budget allows.
Per-module landscape is locally navigable. Trust-region random search can find a useful point. Many instability cliffs, unlucky initialization, high-dimensional interactions, bad starting point. Start from a tuned global baseline; use locality; shrink search radius; classify divergence separately from bad loss.
Validation loss tracks desired downstream performance. Transferred HPs improve practical model quality. Data/task mismatch, over-regularization, different benchmark sensitivity, safety/alignment objectives. Use validation loss for search but verify target benchmarks and post-training behavior.

Things I Would Not Expect to Transfer Cleanly Without New Work

  • Large architecture changes: dense to MoE, attention to SSM/hybrid, large context-extension changes, or major tokenizer/vocab changes.
  • Different optimizer families: Lion, Adafactor, Shampoo, sign-based updates, or schedule-free optimizers need their own coordinate rules. Section 4.9 gives conditional Muon candidates, but not a completed replacement for the AdamW SDE result.
  • Heavy regularization changes: dropout, stochastic depth, strong data augmentation, RL objectives, or preference-optimization losses.
  • Regimes dominated by numerical precision: FP8 optimizer state, quantized training, extreme epsilon sensitivity, or loss-scaling artifacts.
  • Very large batch near the critical-batch limit: the SDE/local-noise picture and the hardware-efficiency objective can pull in different directions.

10. Adjacent Work

Complete(d)P is best seen as part of a developing family of coordinate systems for training recipes. Several adjacent papers prevent overclaiming.

CompleteP

CompleteP is the direct predecessor. It focuses on width/depth transfer in transformers and argues that some parameterizations may transfer hyperparameters while still being too lazy to exploit depth. Complete(d)P inherits that narrative but modifies the table for QK norms, embedding epsilon, output projection handling, batch size, duration, and per-module tuning.

Spectral Condition for Feature Learning

The spectral-condition paper gives the cleanest non-Tensor-Programs route into muP-style reasoning: features should have O(1) coordinates, and their training-step changes should also have O(1) coordinates. Its formal statement is width-focused and hides depth in constants. When depth is also scaled, the same desideratum must be applied to the full residual stack, not to each adjacent residual increment. That is what produces the alpha >= 1/2 and alpha + gamma = 1 constraints derived above.

Tensor Programs VI / Depth-muP

The infinite-depth paper provides the sharper classification: stable initialization requires alpha >= 1/2; stable and nontrivial training requires alpha + gamma = 1; faithfulness gives alpha in [1/2, 1]; and maximal feature diversity singles out alpha = gamma = 1/2. Complete(d)P inherits this depth story but tests it in a modern transformer setting.

Malladi-Style SDE Scaling

The batch-size rules are not invented from scratch. They inherit the square-root Adam/RMSProp scaling logic from SDE approximations to adaptive optimizers. Complete(d)P's main extension here is adding AdamW weight decay and composing the batch rule with model-size and duration rules.

Muon LMO Scaling and Spectral Noise Geometry

A later optimization-theory analysis treats Muon as a spectral-norm linear-minimization-oracle method. Its fixed-momentum proxy predicts eta_mu ~ sqrt(B/T); jointly tuning momentum instead predicts 1-beta_mu ~ B T^(-1/2) and eta_mu ~ B T^(-3/4). This supplies candidate transfer coordinates but holds model size fixed and omits practical schedule and decay effects. Complementary work derives a nuclear-norm gradient-noise scale for spectral descent and shows why Euclidean variance is the wrong diagnostic for polar directions, while explicitly leaving stateful Muon as an open extension. Approximate Newton-Schulz work adds a further scale dependence because momentum singular spectra vary by layer and model size. These results motivate the Muon atlas in Section 4.9 without making it part of the original Complete(d)P claim.

u-muP

u-muP combines maximal-update parameterization with unit scaling. It is a more implementation-oriented route toward stable low-precision training dynamics. It does not try to cover as many axes as Complete(d)P, but it is a reminder that "good transfer" and "good numeric scale" are both necessary in real training.

Scaling Exponents Across Parameterizations and Optimizers

This line of work challenges a simplistic reading of muP uniqueness. It finds that multiple parameterizations can transfer if one allows the right layerwise learning-rate exponents and optimizer details, and it stresses that Adam epsilon can be a first-order issue. This supports one of Complete(d)P's themes: the optimizer coordinate system matters as much as the forward parameterization.

Weight Decay May Matter More Than muP

This critique argues that weight decay can strongly control learning-rate transfer in practice. That does not refute Complete(d)P; it makes the paper's inclusion of weight-decay transfer more important. It does warn against evaluating parameterization schemes while leaving weight decay undertuned or inconsistently scaled.

Scaling Optimal LR Across Token Horizons

This work supports the empirical fact that optimal learning rate changes with token horizon, but fitted exponents vary. Complete(d)P proposes a cleaner SDE-inspired rule; whether that rule dominates under other schedule families remains open.

11. Connection to Scaling Laws

Your earlier concern about Kaplan/Chinchilla-style scaling laws fits naturally here. A scaling law fitted under a fixed or heuristic training recipe estimates the performance of that recipe, not the globally optimized loss over all hyperparameters. If the recipe becomes more or less suboptimal with scale, the fitted law absorbs that drift.

Complete(d)P is partly a way to reduce that confound. If hyperparameters are transferred in a coordinate system where optima are stable, then a scaling experiment is less likely to confuse "larger models need different optimizer settings" with "larger models intrinsically scale this way."

But it does not eliminate the issue. It still fixes:

  • a model family;
  • a dataset and data order;
  • an optimizer family;
  • a schedule family, mostly cosine in this paper;
  • a set of module groupings;
  • a transfer rule for token horizon that is still empirical.

So the right conclusion is: this paper gives a better recipe for measuring scaling under a strong training family. It does not produce architecture-, optimizer-, and data-universal scaling laws.

12. Practical Recipe

A conservative implementation workflow would look like this.

Step 1: Define the Base and Target Exactly

  • Use architectural width ratios, not just parameter-count ratios.
  • Record whether width scales through head count, head dimension, MLP dimension, or all of them.
  • Record depth, batch tokens, total tokens, sequence length, data packing, and accumulation.

Step 2: Audit Optimizer Semantics

  • Confirm PyTorch AdamW vs AdamLH-style decay.
  • Confirm epsilon placement and whether per-group epsilon is supported.
  • For Muon groups, record momentum/Nesterov semantics, rectangular LR adjustment, Newton-Schulz coefficients and iterations, normalization epsilon, and fallback policy.
  • Confirm which parameters receive weight decay.
  • Confirm gradient clipping behavior and whether it is active in normal runs.
  • Log transformed per-group values, not just base values.

Step 3: Tune a Strong Global Baseline

Do not start with 79 per-module variables before the global recipe is credible. Tune global LR, WD, epsilon, betas, initialization scale, residual multiplier, and schedule family at the proxy scale. The paper's baseline global random search used 2048 trials at 50M parameters, which is far more than many informal "baseline" searches.

Step 4: Add Per-Module Multipliers Locally

  • Optimize in log-space.
  • Start near the global optimum.
  • Use trust-region or other locality-biased search.
  • Separate divergent trials from merely high-loss trials.
  • Prefer a factorized type x depth parameterization before fully uncoupled layer-by-layer values.

Step 5: Transfer, Then Validate at an Intermediate Scale

Even if the final goal is no retuning, a production recipe should include at least one intermediate-scale validation. The paper itself shows that too-small proxy scales can incur a penalty, while a somewhat larger proxy can stabilize the transferred LR.

Step 6: Treat Target Validation as a Guardrail, Not a New Sweep

A practical compromise is to run a very small target-scale guardrail sweep: perhaps a narrow global LR/WD multiplier check around the transferred recipe. If the transferred recipe is outside that narrow optimum region, the transfer assumptions probably failed.

What I would trust most. The batch-size LR/WD square-root direction, the need to scale Adam beta complements, the practical value of per-module LR multipliers, and the warning that token-horizon LR does not transfer naively.
What I would trust least without replication. Exact speed-up factors, exact token-horizon exponents outside cosine schedules, transfer through very large batch changes, and transfer to substantially different architectures or post-training objectives.

13. Sources

  1. Bruno Mlodozeniec, Pierre Ablin, Louis Bethune, Dan Busbridge, Michal Klein, Jason Ramapuram, Marco Cuturi. Completed Hyperparameter Transfer across Modules, Width, Depth, Batch & Duration. arxiv abs, arxiv HTML.
  2. Greg Yang et al. Tensor Programs V: Tuning Large Neural Networks via Zero-Shot Hyperparameter Transfer. NeurIPS PDF.
  3. Greg Yang, James B. Simon, Jeremy Bernstein. A Spectral Condition for Feature Learning. arxiv abs, arxiv PDF.
  4. Greg Yang, Dingli Yu, Chen Zhu, Soufiane Hayou. Tensor Programs VI: Feature Learning in Infinite-Depth Neural Networks. arxiv abs, arxiv PDF.
  5. Dey et al. CompleteP / complete parameterization for width-depth hyperparameter transfer. arxiv abs, arxiv HTML.
  6. Sadhika Malladi, Kaifeng Lyu, Abhishek Panigrahi, Sanjeev Arora. On the SDEs and Scaling Rules for Adaptive Gradient Algorithms. arxiv abs.
  7. Charlie Blake et al. u-muP: The Unit-Scaled Maximal Update Parametrization. arxiv abs, arxiv HTML.
  8. Katie Everett et al. Scaling Exponents Across Parameterizations and Optimizers. arxiv abs.
  9. Kosson, Welborn, Liu, Jaggi, Chen. Weight Decay may matter more than muP for Learning Rate Transfer in Practice. arxiv abs, arxiv HTML.
  10. Scaling Optimal LR Across Token Horizons. arxiv abs, arxiv HTML.
  11. Thomas Pethick, Wanyun Xie, Kimon Antonakopoulos, Zhenyu Zhu, Antonio Silveti-Falls, Volkan Cevher. Training Deep Learning Models with Norm-Constrained LMOs. arxiv abs, arxiv HTML.
  12. Egor Shulgin, Dimitri von Rutte, Tianyue H. Zhang, Niccolo Ajroldi, Bernhard Scholkopf, Antonio Orvieto. Deriving Hyperparameter Scaling Laws via Modern Optimization Theory. arxiv abs, arxiv HTML.
  13. Hiroki Naganuma et al. Adaptive Batch Sizes Using Non-Euclidean Gradient Noise Scales for Stochastic Sign and Spectral Descent. arxiv abs, arxiv HTML.
  14. Gagik Magakyan, Pablo Parrilo, Asuman Ozdaglar. Spectral Scaling Laws of Muon. arxiv abs.
  15. Hoffmann et al. Training Compute-Optimal Large Language Models. arxiv abs.
  16. Kaplan et al. Scaling Laws for Neural Language Models. arxiv abs.