Translator's note (Opus 4.7): This is an English translation of 为什么官方版Muon比MuP版多出一个max(1, ⋅)? by Jianlin Su (苏剑林), originally published on June 3, 2026 on Scientific Spaces (科学空间). The translation preserves the author's first-person voice.
In the post Muon Optimizer Guide: Quick Start and Key Details, we listed several versions of Muon. They differ only in the matrix-shape-dependent scaling factor of the learning rate, where the "official version (KellerJordan version)" is just the "MuP version" plus an extra max(1,⋅) truncation. This post discusses where that truncation actually comes from.
The Variants
The Muon update rule can be written uniformly as
Mt=Wt=βMt−1+GtWt−1−ηt(αmsign(Mt)+λWt−1)(1)
The different versions differ in the choice of α:
α=⎩⎨⎧1max(1,dout/din)dout/din0.2×max(dout,din)(naı¨ve version)(KellerJordan version)(MuP version)(Moonlight version)(2)
Here the matrix W∈Rdin×dout represents the trainable parameters of a linear layer y=xW, where the input x∈Rdin is a row vector.
For simplicity, in what follows we drop the subscript t. Without loss of generality, we assume the momentum M is full rank, so that the singular values of Φ=msign(M) are all 1. Then when din≤dout, ΦΦ⊤=Idin, and when din>dout, Φ⊤Φ=Idout.
Let ΔW=ηαΦ. What we want is to find the relationship between α and din,dout. From Why Do We Prefer Isotropy? An Understanding from Steepest Descent we know that parameters are really just a by-product of the model — the changes at the feature level may be more fundamental. Translating ΔW to the feature level gives Δy=xΔW=ηαxΦ, so ∥Δy∥RMS=α∥xΦ∥RMS.
We need to consider two cases. First, when din≤dout, Φ can be written in the form U[Idin,0din×(dout−din)]V⊤, where U∈Rdin×din and V∈Rdout×dout are both orthogonal matrices. Then
∥Δy∥RMS=====ηαxU[Idin,0din×(dout−din)]V⊤RMSηαxU[Idin,0din×(dout−din)]RMSηα[xU,0dout−din]RMSηαdoutdin∥xU∥RMSηαdoutdin∥x∥RMS(3)
Note that every step is an equality, so we only need to set α=dout/din to make the RMS of "every" Δy equal to η∥x∥RMS — i.e., the relative update magnitude is the same for all tokens.
The Isotropic Case
Unfortunately, in the second case din>dout, the goal of "complete uniformity" cannot be achieved. Specifically, in this case the SVD of Φ takes the form U[Idout0(din−dout)×dout]V⊤, so
∥Δy∥RMS===ηαxU[Idout0(din−dout)×dout]V⊤RMSηαxU[Idout0(din−dout)×dout]RMSηα(xU)[:dout]RMS(4)
Here xU is a din-dimensional vector, and since din>dout, (xU)[:dout] just takes the first dout components of xU before computing the RMS. Its RMS is then indeterminate: at most it can reach din/dout∥x∥RMS (the worst case), and at least it can be 0.
We know that orthogonal matrices do not change the RMS, so ∥xU∥RMS=∥x∥RMS. When the distribution of x is sufficiently isotropic, we may take this to mean that each component of xU has average scale ∥x∥RMS. Then taking the first dout components and computing the RMS, on average it is also approximately ∥x∥RMS, i.e. ∥Δy∥RMS≈α∥x∥RMS. Therefore we only need to take α=1 to achieve an effect similar to the previous section.
The Anisotropic Case
Combining the results of the previous two sections, we obtain
α=max(1,dindout)(5)
which is exactly the max(1,⋅) appearing in the KellerJordan version of Muon.
However, the conclusion of the previous section relied on the assumption that the input x is sufficiently isotropic. This may approximately hold early in training, but as training progresses, the feature distribution gradually becomes anisotropic and concentrates in the directions that maximize ∥Δy∥RMS — the "worst case" — at which point the average approximation ∥Δy∥RMS≈ηα∥x∥RMS is no longer accurate. Instead, the maximum ηαdin/dout∥x∥RMS becomes the more accurate estimate.
In this case, the α that makes ∥Δy∥RMS≈η∥x∥RMS is dout/din, which agrees with the conclusion in the din≤dout case and recovers the MuP version. In other words, in the middle and later stages of training, the MuP version of Muon is more principled. To address this inconsistency, we have two strategies. The first is to always use the MuP version of Muon: this slightly slows down convergence in the early stage, but after all the middle and later stages are the "main act" of training. The second is to change the scaling factor to
α=max(τt,dindout)(6)
where τt decays monotonically from 1 to 0. This produces a smooth transition from the KellerJordan version to the MuP version, at the cost of one more schedule to tune.
Summary
This post mainly explains the origin of the max(1,⋅) in the KellerJordan version from the perspective of uniformity of "feature increments".
Citation: Su, J. (2026, June 3). 为什么官方版Muon比MuP版多出一个max(1, ⋅)? [Why Does the Official Muon Have an Extra max(1, ·) Compared to the MuP Version?]. Scientific Spaces. https://kexue.fm/archives/11772
Original content licensed under CC BY-NC-SA 4.0. This translation is shared under the same license.