漫话大模型:训练效率翻倍的秘密——Muon 优化器凭什么干翻 AdamW

2025 年 2 月,Kimi(月之暗面)发了一篇论文,说自家 16B 参数的模型训练时用了一个新优化器------训练算力砍半,效果反超

这个优化器叫 Muon,原作者 Keller Jordan 甚至没发论文,只在 GitHub 上放了个 demo,就被 Kimi 拿去做大规模验证了。之后 GLM、Kimi K3 等模型也纷纷采用。

Muon 不是小修小补。它是十年来第一个真正挑战 AdamW 统治地位的优化器------不是调参,是换了优化的思路。

这篇就把它讲透:AdamW 在干什么,Muon 跟它差在哪,正交化凭什么能翻倍效率。会有数学,但每一步都能跟着走。


一、先回顾:AdamW 到底在干什么

假设权重矩阵 W 的梯度是 G(跟 W 一样大的矩阵)。最朴素的更新就是:

W←W−η GW \leftarrow W - \eta \, GW←W−ηG

η 是学习率。梯度说往哪走就往哪走。

AdamW 在这之上做了两件事:

第一,动量(一阶矩)------把过去几步的梯度做指数加权平均,抹掉 mini-batch 的随机抖动:

Mt=β1Mt−1+GtM_t = \beta_1 M_{t-1} + G_tMt=β1Mt−1+Gt

第二,自适应步长(二阶矩)------对每个参数,看它历史梯度有多大,大的缩步长,小的放步长:

Vt=β2Vt−1+Gt2V_t = \beta_2 V_{t-1} + G_t^2Vt=β2Vt−1+Gt2

W←W−η⋅MtVt+ϵW \leftarrow W - \eta \cdot \frac{M_t}{\sqrt{V_t} + \epsilon}W←W−η⋅Vt +ϵMt

注意:这里的除法是逐元素的。1600 万个参数,就有 1600 万个独立的步长调节。AdamW 把每个参数当成一个独立的标量来调。

AdamW 从来没改过梯度的方向------梯度指向东,AdamW 就往东走,只是走得快一点或慢一点。

这就是 Muon 要突破的地方。


二、梯度的方向天生偏心

要理解 Muon,先得理解梯度的一个结构性缺陷。

权重矩阵 W 是个矩阵(比如 4096×4096)。梯度 G 也是个同样大小的矩阵。对 G 做 SVD 分解:

G=UΣVTG = U \Sigma V^TG=UΣVT

  • V 的每一列:输入空间的一个方向(单位正交向量)
  • U 的每一列:输出空间的一个方向(单位正交向量)
  • Σ 的对角线:每个奇异值 σ_i,表示"这个方向上梯度有多强"

关键事实:大模型里,少数几个 σ_i 特别大,绝大多数接近零。

梯度更新 W -= ηG 的实际效果是什么?展开来看:

W←W−η∑iσi uiviTW \leftarrow W - \eta \sum_i \sigma_i \, u_i v_i^TW←W−ηi∑σiuiviT

每个方向 u_i v_i^T 的更新幅度是 ησ_i。如果 σ_1 = 50,σ_2 = 0.3,σ_3 = 0.01:

  • 方向 1 占了 99.4% 的更新
  • 方向 2 占 0.6%
  • 方向 3 几乎为零

你以为在几千个方向上同时优化,实际只在几个方向上走。 这不是随机噪声,是梯度的结构性偏差------它天生偏心。

为什么会偏心

因为 loss 在不同方向的曲率不同。曲率大的方向,偏导数大,梯度自然大;曲率小的方向,偏导数小。

但"曲率大"不等于"最重要"------那个方向可能只是一个局部陡坡,走两步就到底了。真正通往更优解的路,可能在曲率小的方向上。

梯度天然推荐最陡的方向,不管那个方向是不是通往目的地。

AdamW 能解决这个吗

部分解决。二阶矩 V 把大梯度的步长缩一缩、小梯度的步长放一放。但它是逐元素操作------把 50 降到 5,把 0.01 升到 0.1,方向 1 仍然占 98%。

它调的是步长,不是方向。


三、Muon 的核心操作:正交化

Muon 干的事更激进:直接把 Σ 里所有奇异值拉成 1。

正交化前后的对比:

奇异值 方向 1 占比 方向 2 方向 3
正交化前 50, 0.3, 0.01 99.4% 0.6% ≈0%
正交化后 1, 1, 1 33.3% 33.3% 33.3%

U 和 V 不变(方向不变),只把每个方向的强度拉平。所有有信息的方向,都得到同样权重的更新。

理想情况下,正交化就是做 SVD 然后扔掉 Σ:

Gorth=UVTG_{\text{orth}} = U V^TGorth=UVT

但 SVD 太贵------4096×4096 的矩阵做一次 SVD,训练里每步都要做,根本扛不住。


四、实际怎么做:Newton-Schulz 迭代

Muon 不做 SVD,用一个迭代方法近似正交化。推导如下。

目标

让每个奇异值 σ 满足 σ² = 1(正交矩阵的奇异值全是 1)。

等价于解方程:

f(σ)=1−1σ2=0f(\sigma) = 1 - \frac{1}{\sigma^2} = 0f(σ)=1−σ21=0

牛顿法求根

对 f(σ) = 0 用牛顿法:

σk+1=σk−f(σk)f′(σk)\sigma_{k+1} = \sigma_k - \frac{f(\sigma_k)}{f'(\sigma_k)}σk+1=σk−f′(σk)f(σk)

求导:f'(σ) = 2/σ³。代入:

σk+1=σk−1−1/σk22/σk3=σk−σk3−σk2=3σk−σk32\sigma_{k+1} = \sigma_k - \frac{1 - 1/\sigma_k^2}{2/\sigma_k^3} = \sigma_k - \frac{\sigma_k^3 - \sigma_k}{2} = \frac{3\sigma_k - \sigma_k^3}{2}σk+1=σk−2/σk31−1/σk2=σk−2σk3−σk=23σk−σk3

化简:

σk+1=12σk(3−σk2)\sigma_{k+1} = \frac{1}{2} \sigma_k (3 - \sigma_k^2)σk+1=21σk(3−σk2)

这就是那个公式的标量版。 验证不动点:σ = 1 时,f(1) = 0.5 × 1 × (3 - 1) = 1。到 1 就停了。

从标量升级到矩阵

关键:σ² 就是 X^T X 的特征值。所以把标量公式里的 σ² 换成 X^T X,σ 换成 X:

Xk+1=12Xk(3I−XkTXk)X_{k+1} = \frac{1}{2} X_k (3I - X_k^T X_k)Xk+1=21Xk(3I−XkTXk)

这不是类比,是数学上严格等价的------矩阵公式同时对所有奇异值做牛顿迭代。

收敛速度

牛顿法是二次收敛------误差每步平方掉:

复制代码
σ₀ = 1.2 → σ₁ = 0.936 → σ₂ = 0.994 → σ₃ = 0.99998 → 基本就是 1 了

5 步足够。每步只做 3 次矩阵乘法(X^T X、X × 中间结果、缩放),bf16 就能跑。比 SVD 快几个数量级。


五、完整更新流程对比

把 AdamW 和 Muon 的一步更新并排放:

AdamW:

复制代码
1. G = ∂L/∂W                          (算梯度)
2. M = β₁M + G                         (一阶动量,抹抖动)
3. V = β₂V + G²                        (二阶动量)
4. W -= η × M / (√V + ε)              (逐元素调步长)

Muon:

复制代码
1. G = ∂L/∂W                          (算梯度)
2. M = βM + G                          (动量,抹抖动------跟 AdamW 一样)
3. M_orth = NewtonSchulz(M, 5步)      (正交化,纠正方向偏差------Muon 独有)
4. M_final = σ_l × M_orth             (层自适应缩放,Kimi 加的)
5. W -= η × M_final                    (更新权重)

唯一区别在第 3 步:AdamW 用"梯度平方的加权平均"做逐元素步长归一化,Muon 用"正交化"做矩阵级方向纠正。其他步骤几乎一样。

一句话总结这个差异:

AdamW 调步长------每个参数走得快一点还是慢一点。Muon 纠方向------整个矩阵往哪些方向走,走多远。


六、效果:为什么能翻倍

算力效率

Kimi 的 Moonlight-16B-A3B(5.7T tokens 训练)实测数据:达到相同 loss 只需 0.519× FLOPs------约一半算力。

为什么?因为正交化让所有方向都得到有效更新,不再浪费在"只走一个方向"上。同样算一步梯度,Muon 一步走的"有效方向"比 AdamW 多得多。

显存

AdamW 维护两个 buffer(M 和 V,各跟参数一样大)。Muon 只维护一个(M),正交化是实时算的,不存中间结果。优化器状态减半------万亿参数模型上省几百 GB 显存。

适用范围

Muon 的正交化操作天然适合矩阵形状的参数(Attention 的 Q/K/V/O、FFN 的两层权重)。1D 参数(LayerNorm、bias)还是用 AdamW。实际实现是"矩阵参数走 Muon、向量参数走 AdamW"的混合策略。


七、谁在用,谁没确认

已确认使用 Muon

  • Kimi K2 / K3 系列(Moonshot AI 自家)
  • Moonlight-16B-A3B(开源验证模型,arXiv:2502.16982)

存疑

有博客提到 GLM、DeepSeek-V4 也采用了 Muon,但我没有找到官方确认的来源。Kimi 是唯一有论文实锤的。各位如果看到确切消息,欢迎补充。

最新变种

  • Newton-Muon(arXiv:2604.01472):用 Newton-Schulz 迭代替代 SVD 的正式化
  • NorMuon(OpenReview 2026):更高效可扩展版本
  • AMO(arXiv:2605.17806):自适应正交化,动态调整

写在最后

如果这篇只记住一件事:

AdamW 调步长,Muon 纠方向。梯度的方向天生偏心(大奇异值吃掉小奇异值),正交化把所有方向拉平------每个有信息的方向都得到公平更新。

动量是"减震器"------路不平,帮你颠簸平滑掉。

二阶矩是"调速器"------陡的地方慢点,平的地方快点。

正交化是"重新规划路线"------不走最陡的那条路,走所有方向都公平的路。

三者不是互斥的------Muon 也有动量,只是把 AdamW 的二阶矩换成了正交化。


参考资料


相关推荐
七牛云行业应用1 小时前
Codex 502怎么办?先判断官方故障,再按网络、登录和日志排查
人工智能·大模型·ai编程
happyness441 小时前
AI编程与下一代软件工程:软件开发正在被重新定义
ai编程
寻道码路2 小时前
大模型工程化实战(八):OTel + LangFuse 全链路 Trace——把网关、护栏、SchemaGate 全部打点串起来,出问题一眼定位到环节
大模型·agent·mlops·rag·ai工程化·langfuse·llm可观测
GEO实战经验分享2 小时前
GEO王涛解码智能核心:详解Transformer与注意力机制的工作原理
人工智能·深度学习·transformer
Raas1003 小时前
MAI Gateway(魔芋企业级AI网关)技术辨析:AI网关和大模型网关区别?选型必读
大数据·人工智能·大模型·gateway·mai gateway·企业级产品
杨杨杨大侠9 小时前
大模型的温度到底是什么?从 token 采样讲到量化
aigc·openai·ai编程
FII工业富联科技服务10 小时前
Omniverse + Isaac Teleop + 合成数据:工业富联机器人大脑训练+执行落地闭环拆解
大数据·人工智能·深度学习·机器学习·机器人·制造·具身智能
LuTshoes11 小时前
ollama 本都部署模型
ai编程
β添砖java12 小时前
深度学习31注意力机制、注意力分数、使用注意力机制的seq2seq、自注意力
人工智能·深度学习