Muon 优化器:它怎么做、为什么有效,以及哪些大模型在用

Muon 是给神经网络隐藏层用的优化器。它的做法分两步:先像带动量的随机梯度下降那样累积更新,再把得到的更新矩阵做一次"正交化",然后用它去更新权重。正交化的意思是:保留更新里所有的方向信息,但把每个方向的步长拉成一样大。可以证明,这恰好等价于"在谱范数意义下做最速下降"。

  • 它只用在二维权重矩阵(隐藏层)上;嵌入层、输出层,以及各种向量 / 标量参数仍然用 AdamW。
  • 它只需要保存动量一项,优化器占用的显存大约是 AdamW 的一半(AdamW 要同时存动量和二阶矩两项)。
  • 在大模型预训练上,达到同样效果所需的计算量约为 AdamW 的一半;而它本身引入的额外计算不到训练总量的 1%。

概览

  • 提出者:Keller Jordan,合作者 Yuchen Jin、Vlado Boza、You Jiacheng、Franz Cesista、Laker Newhouse、Jeremy Bernstein。
  • 时间线:2024-10-04 随 NanoGPT 训练加速记录首次公布并命名;2024-12-08 发布系统性博客。没有独立的 arXiv 论文,原始出处是博客加 GitHub 仓库
  • 名字由来:MomentUm Orthogonalized by Newton-schulz——「用 Newton–Schulz 迭代把动量正交化」。
  • 已规模化采用的基座模型:Moonlight 16B(首个验证)、Kimi K2 1T(MuonClip)、GLM-4.5 / GLM-4.5-Air、INTELLECT-3(在 GLM-4.5-Air 基座上做 SFT+RL)、DeepSeek-V4(最大 1.6T,由 V3 的 AdamW 切换而来)。

一、背景:AdamW 逐元素更新,忽略矩阵结构

过去十年,大模型训练几乎都用 AdamW。它的工作方式是逐个元素地调整:把一个权重张量视为一组互不相关的标量,为每个标量分别记录两个量——梯度的滑动平均(动量,记为 mm)和梯度平方的滑动平均(记为 vv,刻画该元素近期梯度的波动幅度)——再用 m/vm/\sqrt{v} 决定该元素这一步的更新量。某元素梯度波动越大,其更新步长越小。

两个代价:

  1. 完全忽略了矩阵结构。Transformer 里绝大多数参数是一个 m×nm\times n 的矩阵,代表一个线性映射,行与行、列与列之间高度相关。把它拆成一组独立的标量,就丢掉了"这是一个有方向、有强弱结构的线性变换"这一信息。
  2. 显存翻倍mmvv 各自都要存一份和权重一样大的数组,于是优化器状态是参数量的两倍。

Muon 的思路正好相反:把权重当作矩阵,直接利用其结构设计更新。两者的差别可以这样对照:

维度 AdamW Muon
更新的粒度 逐个元素 整块矩阵一起
需要保存的状态 动量 mm + 二阶矩 vv(约 2 倍权重) 只有动量(约 1 倍权重)
利用了什么结构 无,逐元素处理 矩阵的奇异值结构(见下文)
核心操作 按梯度二阶矩自适应缩放步长 把更新矩阵正交化(各方向步长拉齐)
用在哪些参数 所有参数 只有二维隐藏层;嵌入 / 输出层 / 标量仍用 AdamW

二、Muon 怎么做:累积动量,再把更新矩阵正交化

对某个二维权重 WW(梯度记作 GtG_t,动量系数 μ\mu 默认取 0.95),一步更新就两个动作:

Mt=μMt1+Gt(1) 累积动量,Ot=正交化(Gt+μMt)(2) 把更新矩阵正交化,Wt=Wt1ηOt\underbrace{M_t = \mu\,M_{t-1} + G_t}_{\text{(1) 累积动量}},\qquad \underbrace{O_t = \text{正交化}\big(G_t + \mu M_t\big)}_{\text{(2) 把更新矩阵正交化}},\qquad W_t = W_{t-1} - \eta\,O_t

第二步括号里的 Nesterov 前瞻方向。 注意正交化的对象是 Gt+μMtG_t+\mu M_t,而不是普通动量 MtM_t,这就是 Nesterov 前瞻动量。先看普通(重球)动量:它把累积方向 Mt=μMt1+GtM_t=\mu M_{t-1}+G_t 直接拿去更新,问题在于梯度 GtG_t 是在当前点 Wt1W_{t-1} 测的,可只要动量较大,这一步实际会移动到更靠前的位置,当前点测得的斜率到那里可能已不准确——于是容易过冲、震荡。

Nesterov 的修正是"先探再走":先顺着已有动量探到前瞻点 W~=Wt1ημMt1\tilde W=W_{t-1}-\eta\mu M_{t-1},在那里量梯度再决定怎么走。把这套前瞻等价地整理进动量缓冲(深度学习通用写法,即 PyTorch 的 nesterov=True),更新方向就成了

Mt=μMt1+Gt,更新方向=Gt+μMt.M_t=\mu M_{t-1}+G_t,\qquad \text{更新方向}=G_t+\mu M_t .

展开 Gt+μMt=(1+μ)Gt+μ2Mt1G_t+\mu M_t=(1+\mu)G_t+\mu^2 M_{t-1},对比重球的 Mt=Gt+μMt1M_t=G_t+\mu M_{t-1}:前瞻方向给"最新梯度"更高的权重 (1+μ)(1+\mu)、并把历史动量的系数从 μ\mu 收紧到 μ2\mu^2。几何含义是——若已越过极小点,前瞻点的梯度会更早转向反方向,提前抑制过冲,于是震荡更小、收敛常数更好。Muon 默认开启(μ=0.95\mu=0.95)。

关键全在"正交化"这一步,下面把它讲清楚。

2.1 正交化到底在做什么

先回忆奇异值分解(SVD):任何矩阵 MM 都能写成

M=UΣV.M = U\,\Sigma\,V^\top .

直观上这是把一个线性变换拆成"先旋转 → 沿各坐标轴按不同倍数拉伸 → 再旋转"三步:UUVV 是两次旋转(正交矩阵),中间对角阵 Σ\Sigma 上的数 σ1,σ2,\sigma_1,\sigma_2,\dots 就是各方向的拉伸倍数,叫奇异值

把它写成求和形式更能看清"方向 + 强度"的结构。记 r=rank(M)r=\mathrm{rank}(M)uiu_iviv_i 分别是 UUVV 的第 ii 列(左、右奇异向量),则

M=i=1rσiuivi.M=\sum_{i=1}^{r}\sigma_i\,u_i v_i^\top .

也就是说 MMrr 个秩-1 矩阵 uiviu_i v_i^\top 的加权和:每个 uiviu_i v_i^\top 是一个独立"方向"(把输入沿 viv_i 收、再沿 uiu_i 放),σi\sigma_i 是这个方向上的强度。顺带记下两个后面要用的事实:Frobenius 范数 MF2=iσi2\|M\|_F^2=\sum_i\sigma_i^2,谱范数 M2=σ1=maxiσi\|M\|_2=\sigma_1=\max_i\sigma_i

Muon 的正交化,就是把所有奇异值都改成 1——等价地,在求和式里抹掉权重 σi\sigma_i

正交化(M)=UV=i=1ruivi(把 Σ 换成单位阵).\text{正交化}(M) = U V^\top=\sum_{i=1}^{r} u_i v_i^\top \qquad(\text{把 }\Sigma\text{ 换成单位阵}).

它的含义是:方向信息(U,VU,V)全部保留,但"哪个方向更新得多、哪个少"这件事被抹平,让每个方向都走同样大小的一步。后面第三节会解释,为什么这么做对训练有帮助。

2.2 用 Newton–Schulz 迭代来近似,而不是真的去算 SVD

真的对每个权重做一次 SVD 太慢,而且在 GPU 的低精度下数值不稳。Muon 改用一个只含矩阵乘法的迭代来近似"把奇异值都推到 1"这件事,它能稳定地在 bfloat16 上跑。原作者给的实现是:

1
2
3
4
5
6
7
8
9
10
11
def newtonschulz5(G, steps=5, eps=1e-7):
a, b, c = (3.4445, -4.7750, 2.0315)
X = G.bfloat16()
X /= (X.norm() + eps) # 先归一化,把奇异值缩进迭代能收敛的范围
if G.size(0) > G.size(1): X = X.T # 让较短的一边在前,省计算
for _ in range(steps):
A = X @ X.T
B = b * A + c * A @ A
X = a * X + B @ X # 等价于对每个奇异值反复施加 φ(σ)=aσ+bσ³+cσ⁵
if G.size(0) > G.size(1): X = X.T
return X

这段迭代等价于:对每个奇异值 σ\sigma 反复施加同一个多项式 φ(σ)=aσ+bσ3+cσ5\varphi(\sigma)=a\sigma+b\sigma^3+c\sigma^5。系数 (a,b,c)=(3.4445,4.7750,2.0315)(a,b,c)=(3.4445,-4.7750,2.0315) 是专门挑出来的,使得不管 σ\sigma 原来是大是小(只要落在 0 到 1 之间),迭代几步后都会迅速趋近 1。对 Transformer,5 步就够。

为什么迭代恰好"作用在奇异值上"。 验证一下:代码每步做 A=XXA=XX^\topB=bA+cA2B=bA+cA^2X=aX+BXX=aX+BX,即

X  aX+b(XX)X+c(XX)2X.X\ \leftarrow\ aX+b\,(XX^\top)X+c\,(XX^\top)^2X .

代入 X=UΣVX=U\Sigma V^\top,利用 UU=VV=IU^\top U=V^\top V=I

XX=UΣ2U,(XX)X=UΣ3V,(XX)2X=UΣ5V,XX^\top=U\Sigma^2U^\top,\quad (XX^\top)X=U\Sigma^3V^\top,\quad (XX^\top)^2X=U\Sigma^5V^\top ,

X  U(aΣ+bΣ3+cΣ5)V.\Rightarrow\quad X\ \leftarrow\ U\big(a\Sigma+b\Sigma^3+c\Sigma^5\big)V^\top .

U,VU,V 一字不动(方向不变),只有奇异值按 φ(σ)=aσ+bσ3+cσ5\varphi(\sigma)=a\sigma+b\sigma^3+c\sigma^5 逐个更新。φ\varphi 只含奇数次幂并非巧合:迭代由 XXXXXX^\top 拼成,每乘一次 XXXX^\top 就给 Σ\Sigma 加两次幂。(开头那次 X/XFX/\|X\|_F 归一化把所有 σ\sigma 压进 (0,1](0,1],正好落在下面要说的收敛域里。)

这个多项式从哪来:Newton–Raphson。 最朴素的一条同类迭代是三次式

φ(σ)=12(3σσ3),\varphi(\sigma)=\tfrac{1}{2}\big(3\sigma-\sigma^3\big),

它正是 Newton–Raphson 求根法用在 g(x)=x21=0g(x)=x^{-2}-1=0(正根 x=1x=1)上的迭代。推导:Newton 步为 xxg(x)g(x)x\leftarrow x-\dfrac{g(x)}{g'(x)},而 g(x)=2x3g'(x)=-2x^{-3},于是

xx212x3=x+(x21)x32=x+xx32=3xx32.x-\frac{x^{-2}-1}{-2x^{-3}}=x+\frac{(x^{-2}-1)\,x^3}{2}=x+\frac{x-x^3}{2}=\frac{3x-x^3}{2} .

为什么偏偏取 g(x)=x21g(x)=x^{-2}-1?因为正交化要把每个 σ\sigma 拉到 1,而这个 gg 的正根恰是 1,且从 (0,3)(0,\sqrt3) 内任意点出发 Newton 法都收敛到 1(归一化后的 σ(0,1]\sigma\in(0,1] 自然在域内)。验证它确实把 σ\sigma 推向 1:不动点 σ=12(3σσ3)σ3=σσ{0,1}\sigma=\tfrac12(3\sigma-\sigma^3)\Rightarrow\sigma^3=\sigma\Rightarrow\sigma\in\{0,1\};又 φ(σ)=12(33σ2)\varphi'(\sigma)=\tfrac12(3-3\sigma^2)φ(1)=0\varphi'(1)=0——导数在 1 处为零意味着二次收敛(误差每步约平方级缩小)。Muon 用的五次式只是多带一项、收敛更快的同类推广。

Muon 为什么不直接用 Newton 的系数。 三次式虽最终收敛,但在 σ0\sigma\approx0 处增益只有 φ(0)=32\varphi'(0)=\tfrac32:很小的奇异值每步才放大 1.5 倍,要很多步才爬到 1。Muon 只想花 5 步就把所有方向大致拉平,于是改用数值搜索挑出的 (a,b,c)=(3.4445,4.7750,2.0315)(a,b,c)=(3.4445,-4.7750,2.0315),近零增益 φ(0)=a3.44\varphi'(0)=a\approx3.44 翻了一倍多,小奇异值增长极快;代价是它不满足 φ(1)=1\varphi(1)=1,迭代不会精确停在 1,而在 1 附近一条窄带内摆动——对"近似正交"的更新已足够。DeepSeek-V4 则取折中:前 8 步用这套激进系数快速逼近,后 2 步换成满足 φ(1)=1, φ(1)=0\varphi(1)=1,\ \varphi'(1)=0(2,1.5,0.5)(2,-1.5,0.5) 精确收敛(详见 §5)。

2.3 超参数和计算开销

  • 默认超参:动量 0.95、Nesterov 开启、迭代 5 步,基本不用动;真正需要调的只有学习率权重衰减两项。学习率还自带"放大模型时基本不用重调"的缩放(见 5.2)。
  • 额外计算开销:那几步矩阵乘法相对训练总量很小——NanoGPT 规模约 0.7%,Llama-405B 规模约 0.5%,可以忽略。

三、为什么正交化会有效:作者 Keller Jordan 的解释

3.1 更新能量集中在少数方向,正交化放大其余方向

实践中观察到:隐藏层的梯度(以及累积出来的动量)矩阵,能量高度集中在少数几个方向上——也就是少数几个奇异值特别大,其余则大多很小。这意味着普通的梯度下降几乎只沿那几个主方向更新,而大量幅度很小、但对学习同样重要的方向几乎不被更新。

正交化把所有奇异值拉成 1,相当于把幅度很小的方向相对放大,使其也获得更新。换言之,Muon 让每个相互正交的方向都得到等量更新,使原本由少数主方向主导的更新在各方向间均衡分配。

3.2 它和 Shampoo 的关系:一个"不累积历史"的 Shampoo

Shampoo 是一类二阶优化器,会维护并不断累积一个"预条件矩阵"来校正梯度。作者指出:如果把 Shampoo 里那个历史累积去掉,它的更新恰好就退化成 WWηUVW \leftarrow W - \eta\,UV^\top,也就是正交化后的梯度。所以可以把带动量的 Muon 理解成一个**"只看当下、不累积历史"的 Shampoo**:去掉了昂贵的历史预条件累积,只保留"正交化"这一步。

3.3 一条经验规则:只用在隐藏层

Muon 用于二维隐藏权重。嵌入层、输出(分类)层,以及各种增益 / 偏置 / 标量参数,仍然交给 AdamW。作者强调这条来自实验观察:嵌入层、输出层在网络里扮演的角色和中间的线性层不一样,对它们一视同仁地做正交化反而更差。下一节的理论给了这条经验一个解释。


四、更深一层的理由:把优化器看成"在某种范数下的最速下降"

Muon 不是凭空调出来的。在它公布之前,Jeremy Bernstein 等人就在发展一套看待优化器的统一视角,事后正好解释了"为什么答案是 UVUV^\top"。

核心观点(见《Old Optimizer, New Norm》, 2409.20325):先把动量这类滑动平均放一边,那么 SGD、Adam、Shampoo 等方法都可归结为同一形式——“在某个范数下,沿最陡方向走一步”。这里的范数规定了"如何度量一步更新的大小"。取不同的范数,就得到不同的优化器。

形式上,最陡方向是下面这个问题的解:在"步长不超过 1"的所有更新 AA 里,挑一个和梯度 GG 最一致(内积最大)的:

argmax  A1  G,A.\arg\max_{\;\|A\|\le 1}\;\langle G,\,A\rangle .

当范数取谱范数时——谱范数等于矩阵把向量长度最多放大的倍数,即最大奇异值——这个最优解恰好是

argmax  A21  G,A  =  UV(G=UΣV),\arg\max_{\;\|A\|_2\le 1}\;\langle G,\,A\rangle \;=\; U V^\top\qquad(G=U\Sigma V^\top),

也就是 Muon 的正交化方向。可以这样概括这层关系:

Muon = 在谱范数下的最速下降;而 Newton–Schulz 迭代只是计算这个方向的廉价手段(Bernstein–Newhouse 的论文附录里就建议用它)。

后续的《Modular Duality in Deep Learning》(2410.21265)把这件事讲得更彻底:梯度和权重虽然形状一样,但在数学上属于两个不同的空间,直接相减其实不严谨,需要先做一次"换算"(论文称为对偶映射 / dualization),把梯度变成"可以从权重里减掉"的量;而且不同的层因为作用不同,该用的范数也不同。这正好解释了 3.3——为什么嵌入层、输出层该和中间线性层区别对待。


五、怎么放大到大模型:Moonlight 的两个改动

Muon 最初只在 NanoGPT、CIFAR 这种小规模上验证过。Moonshot AI 的《Muon is Scalable for LLM Training》(2502.16982)补上了"不调参就能直接用到大模型"所缺的两项关键改动。

改动一:加权重衰减。 不加权重衰减时,大规模训练中权重范数会持续增大;加入权重衰减(每步让权重略微向零收缩)后即趋于稳定。

改动二:让 Muon 与 Adam 的更新幅度一致。 Muon 把奇异值都设成 1,其产出更新的典型幅度与 Adam 天然不同;若直接沿用 Adam 的学习率便无法匹配。Moonlight 的办法是乘一个缩放系数,把两者的更新幅度对齐——这里用"均方根(RMS,把所有元素平方求平均再开根号,衡量更新的典型幅度)"来度量:

Wt=Wt1η(γOt+λWt1),γ=0.2max(m,n).W_t = W_{t-1} - \eta\big(\gamma\,O_t + \lambda\,W_{t-1}\big),\qquad \gamma = 0.2\,\sqrt{\max(m,n)} .

其中 λ\lambda 是权重衰减,γ\gamma 把 Muon 更新的均方根拉到和 Adam 一致(m,nm,n 是这个权重矩阵的两个边长)。好处是:原来给 Adam 调好的学习率和调度表可以直接拿来用,不必重调

为什么乘 max(m,n)\sqrt{\max(m,n)} 就能对齐 RMS。 把"更新的典型幅度"定义为均方根 RMS(A)=1mnijAij2=AF/mn\mathrm{RMS}(A)=\sqrt{\frac{1}{mn}\sum_{ij}A_{ij}^2}=\|A\|_F/\sqrt{mn}F\|\cdot\|_F 为 Frobenius 范数)。正交化输出 O=UVO=UV^\topmin(m,n)\min(m,n) 个奇异值、且全为 1,由 2.1 节的 MF2=iσi2\|M\|_F^2=\sum_i\sigma_i^2

UVF2=i=1min(m,n)12=min(m,n)    RMS(O)=min(m,n)mn=1max(m,n).\|UV^\top\|_F^2=\sum_{i=1}^{\min(m,n)}1^2=\min(m,n) \;\Rightarrow\; \mathrm{RMS}(O)=\frac{\sqrt{\min(m,n)}}{\sqrt{mn}}=\frac{1}{\sqrt{\max(m,n)}} .

可见正交化更新固有的 RMS 是 1/max(m,n)1/\sqrt{\max(m,n)},会随矩阵变大而变小,与 AdamW 的更新(每元素近似同一尺度、RMS 约为常数)无法匹配。乘上 γmax(m,n)\gamma\sqrt{\max(m,n)} 后,RMS 恰好变成与矩阵尺寸无关的常数 γ\gamma——Moonlight 取 γ=0.2\gamma=0.2。这就是"更新幅度对齐"的全部内容。

DeepSeek-V4 的 RMS 与混合迭代。 V4 沿用同一套 RMS 对齐思路,三处细节不同(详见 DeepSeek-V4 架构笔记 第 2.4 节):

  • 混合 Newton–Schulz(10 步 = 8 + 2):前 8 步用激进系数 (3.4445,4.7750,2.0315)(3.4445,-4.7750,2.0315) 把奇异值快速拉到 1 附近(不满足 φ(1)=1\varphi(1)=1),后 2 步换成 (2,1.5,0.5)(2,-1.5,0.5) 精确锁定(满足 φ(1)=1, φ(1)=0\varphi(1)=1,\ \varphi'(1)=0,二次收敛);
  • Nesterov + RMS 重缩放:正交化前瞻方向 μMt+Gt\mu M_t+G_t,再 ×max(n,m)γ\times\sqrt{\max(n,m)}\cdot\gamma 把每元素 RMS 调到 0.18\approx0.18,从而直接复用 AdamW 的学习率与调度;
  • 不用 QK-Clip:已对注意力的 Q/KV 施加 RMSNorm 以抑制注意力 logit 增长,故无需 Kimi K2 的 QK-Clip(见第六节)。

效果:缩放规律(scaling law)实验显示,要达到同样的损失,Muon 需要的计算量大约是 AdamW 的一半。配套放出了 Moonlight-16B-A3B(总参数 16B、每次只激活 3B 的混合专家模型,训练了 5.7T tokens)。

说明:「混合专家(MoE)」指模型有很多"专家"子网络,每个 token 只激活其中一小部分,所以总参数可以很大、但单次计算量不大。

Essential AI 的《Practical Efficiency of Muon for Pretraining》(2505.02222)从另一个角度做了佐证:当 batch 很大时(大到超过所谓"临界 batch"——超过它之后,再增大 batch 带来的收益会迅速变小),Muon 仍能保持数据效率,而 AdamW 会明显变差;论文还研究了 Muon 配合一种"放大模型时超参不用重调"的参数化方法(muP)。


六、再大一个量级的稳定性:Kimi K2 的 MuonClip

到了 1T(万亿参数)规模,Moonshot 又遇到一个新问题:注意力分数爆炸——注意力里 Query、Key 两个投影矩阵的输出在训练中持续增大,导致 softmax 之前的分数失控、引发损失骤增(loss spike),只能回滚到之前的检查点重新训练,代价极高。

Kimi K2(2507.20534)的解法叫 MuonClip = Muon + QK-Clip:不是在 softmax 之后去裁剪(那样会扭曲学到的注意力分布),而是在每次 Muon 更新完之后,直接按比例把 Query、Key 两个投影矩阵的权重缩小一点,从源头限制注意力分数的尺度。

结果:1T 参数(每次激活 32B)的混合专家模型,在 15.5T tokens 上全程未出现损失尖峰,训练曲线平滑——验证了 Muon 在超大规模下的稳定性。

MuonClip 和 Kimi 整个体系的更多细节,见本博客 Kimi 系列论文清单


七、哪些基座模型用了 Muon

下表只收录有一手技术报告佐证的采用者;arXiv 编号均已逐条核对。

模型 机构 时间 规模 链接 Muon 使用情况
Moonlight-16B-A3B Moonshot AI 2025-02 16B 混合专家(激活 3B),5.7T tokens 2502.16982 首个把 Muon 规模化验证的开源大模型;提出"加权重衰减 + 对齐更新幅度"两个关键改动
Kimi K2 Moonshot AI 2025-07 1T 混合专家(激活 32B),15.5T tokens 2507.20534 MuonClip(Muon + QK-Clip);万亿规模全程无损失尖峰
GLM-4.5 / GLM-4.5-Air Z.ai(智谱) 2025-08 355B/激活 32B;106B/激活 12B,23T tokens 2508.06471 预训练采用 Muon,收敛更快、支持更大 batch
INTELLECT-3 Prime Intellect 2025-12 106B 混合专家(激活 12B) 2512.16144 GLM-4.5-Air 基座上做 SFT + 大规模 RL,后训练继续用 Muon;并指出"基座是用 Muon 预训练的,后训练也用 Muon 效果最好"
DeepSeek-V4(Pro / Flash) DeepSeek-AI 2026-04 Pro 1.6T/激活 49B;Flash 284B/激活 13B,32T+ tokens HF 技术报告 从 V3 的 AdamW 改用 Muon,并把它列为 V4 的三大创新之一(另两项是混合注意力 CSA+HCA、mHC);Muon 更新大部分参数,嵌入 / 预测头 / RMSNorm 仍用 AdamW;还对迭代和更新幅度缩放做了改良,以便直接复用 AdamW 的超参

几点观察:

  • 预训练主力:Moonlight、Kimi K2、GLM-4.5、DeepSeek-V4 都把 Muon 用作预训练优化器,看中的是更省计算、更省显存(只存动量一项),以及对大 batch 更友好。
  • 目前规模最大的一次"切换":DeepSeek 在 V3 还用 AdamW,到 V4(最大 1.6T)就改用了 Muon,并把它当作核心创新。这是迄今参数规模最大的 Muon 预训练案例,说明 Muon 正从"Moonshot / 智谱一系"向更多团队扩散。
  • 后训练 / RL 也能用:INTELLECT-3 展示了 Muon 在微调和强化学习阶段的用法,经验是优化器最好和预训练保持一致
  • 稳定性是放大规模的门槛:从 Moonlight 的"对齐更新幅度 + 权重衰减",到 Kimi K2 的"QK-Clip",再到 DeepSeek-V4 的"改良迭代 + 更新幅度缩放",每上一个数量级都要补新的稳定化手段。
  • 仍有不少模型用 AdamW:比如 Qwen 系列的预训练。是否换用 Muon,目前还看团队的具体取舍。

八、相关论文清单

按主线整理;arXiv 编号均已逐条联网核对。没有 arXiv 的原始出处单列。

A. 原始出处与官方实现

来源 时间 链接 要点
Muon: An optimizer for hidden layers in neural networks(Keller Jordan 博客) 2024-12 kellerjordan.github.io/posts/muon 最原始的定义与解释:累积动量 + Newton–Schulz 正交化,只用于隐藏层
KellerJordan/Muon(官方实现) 2024- GitHub 参考实现与默认超参

B. 理论基础("范数 / 换算"视角)

论文 时间 链接 要点
Old Optimizer, New Norm: An Anthology(Bernstein & Newhouse) 2024-09 2409.20325 把各优化器统一看成"某个范数下的最速下降",并主张不同张量该用不同范数
Modular Duality in Deep Learning(Bernstein & Newhouse) 2024-10 2410.21265 梯度需先"换算"到权重所在的空间再相减;给出对各类层做换算的 GPU 友好算法
Muon Optimizes Under Spectral Norm Constraints 2025-06 2506.15054 把"Muon = 谱范数约束下的优化"说清楚、证严谨

C. 规模化与实践

论文 时间 链接 要点
Muon is Scalable for LLM Training(Moonlight) 2025-02 2502.16982 加权重衰减 + 对齐更新幅度,让 Muon 不调参直接用到大模型;省约一半计算量;放出 Moonlight 16B
Practical Efficiency of Muon for Pretraining(Essential AI) 2025-05 2505.02222 在"计算量 vs 效果"上全面优于 AdamW;大 batch 下仍保数据效率;研究 Muon + muP 的超参迁移

D. 收敛性分析与各种变体

论文 时间 链接 要点
A Note on the Convergence of Muon 2025-02 2502.02900 Muon 在非凸问题上的收敛性分析
Dion: Distributed Orthonormalized Updates(Microsoft) 2025-04 2504.05295 Muon 思路的分布式、低通信变体,适配 FSDP/TP 等大规模并行
Muon Optimizer Accelerates Grokking 2025-04 2504.16041 发现 Muon 能显著加速 grokking(模型训练很久后突然学会泛化的现象)
AdaMuon: Adaptive Muon Optimizer 2025-07 2507.11005 在 Muon 之上再叠加一层 Adam 式的逐元素自适应缩放
Can Muon Fine-tune Adam-Pretrained Models? 2026-05 2605.10468 研究"用 AdamW 预训练、再用 Muon 微调"会不会因优化器不一致而出问题

E. 采用 Muon 的模型报告

模型 时间 链接 要点
Kimi K2: Open Agentic Intelligence 2025-07 2507.20534 1T 混合专家,用 MuonClip 稳定万亿规模训练
GLM-4.5: Agentic, Reasoning, and Coding Foundation Models 2025-08 2508.06471 355B/激活 32B,外加 Air 106B;预训练用 Muon
INTELLECT-3: Technical Report 2025-12 2512.16144 在 GLM-4.5-Air 上做 SFT + RL,后训练继续用 Muon
DeepSeek-V4: Towards Highly Efficient Million-Token Context Intelligence 2026-04 HF 技术报告 Pro 1.6T / Flash 284B;从 V3 的 AdamW 改用 Muon,列为三大创新之一

附注

  • Muon 没有独立的 arXiv 论文。引用时通常一并引它的理论基础(2409.20325 / 2410.21265)和规模化报告(2502.16982)。
  • 只对二维隐藏层生效:嵌入、输出层、归一化里的增益 / 偏置等仍用 AdamW——既是经验规则,也有"不同层该用不同范数"的理论支撑(第四节)。
  • 显存优势:Muon 只存动量一项,优化器状态大约是 AdamW 的一半——在大规模分布式训练中这是显著的节省。
  • DeepSeek-V4 已确认:其 2026-04 技术报告明确预训练主优化器是 Muon(V3 仍是 AdamW),是目前规模最大的 Muon 案例。
  • 仍待确认的采用者:"部分 Qwen 后训练 / Trinity 等转向 Muon"的说法还缺一手技术报告佐证,故未列入正表;待官方确认后再补。
  • 与本博客其他笔记的联系:MuonClip 与 Kimi 体系见 Kimi 系列论文清单;DeepSeek 各代见 DeepSeek 系列论文清单;同样是"先讲原理、再附论文清单"体例的另一篇见 投机采样 / 投机解码