Muon 优化器

← 中文导读 · ← 仓库首页(EN) · ← 演进总览 §3.7 · V4 梗概 · CSA/HCA · mHC · Hash MoE + FP4 论文DeepSeek-V4 arXiv:2606.19348 · Algorithm 1 · §2.4 Muon Optimizer · §3.4.1 Efficient Implementation of Muon


一句话

Muon(Momentum Orthogonalized by Newton–Schulz)在 V4 中替换大部分矩阵参数的 AdamW:对动量矩阵做 Newton–Schulz 正交化得到更新方向 $UV^\top$(极因子),各奇异方向步长归一,从而更快收敛、训练更稳;嵌入、输出头、RMSNorm、mHC 门控等仍用 AdamW


V4 中的位置

方向文档
本专文§1 一步在做什么 · §2 Hybrid Newton–Schulz · §3 参数分组 · §4 训练 infra
版本总览DeepSeek-V4(CSA/HCA、mHC、MoE、训练要点)
演进总览§3.7 DeepSeek-V4
三轴图架构-train 轴上的 Muon(100% 训练侧)

1. Muon 一步在做什么

V3 全系 AdamW:对每个参数做元素级二阶矩估计。V4 对 二维权重矩阵 $W\in\mathbb{R}^{n\times m}$ 改用 Algorithm 1

$$ G_t=\nabla_W\mathcal{L}t,\quad M_t=\mu M{t-1}+G_t,\quad O'_t=\mathrm{HybridNewtonSchulz}(\mu M_t+G_t),\quad O_t=O't\cdot\sqrt{\max(n,m)}\cdot\gamma,\quad W_t=W{t-1}(1-\eta\lambda)-\eta O_t $$

其中 Nesterov 技巧体现在对 $\mu M_t+G_t$ 做正交化(而非仅 $M_t$);$\gamma=0.18$ 用于 复用 AdamW 学习率超参(与 Kimi Muon 做法一致)。

V4 参数 AdamW/Muon 分组;Algorithm 1 流水线;Hybrid Newton-Schulz 两阶段系数

图示详情

1.1 与 AdamW 的几何差异

设梯度(或动量)矩阵 $M=U\Sigma V^\top$(SVD):

AdamWMuon
更新形状保留 $M$ 的各向异性($\Sigma$ 仍在)近似 $UV^\top$,奇异值全压到 1
步长语义逐元素自适应各方向等幅的矩阵步
适用参数向量、标量、矩阵均可矩阵参数为主

直观上:AdamW 沿「梯度自然拉伸」的方向走;Muon 先 去掉 $\Sigma$ 的缩放,只保留方向结构,再在正交方向上统一步长——论文报告在 万亿级 MoE 上收敛更快、对学习率 schedule 更不敏感。

1.2 V4 为何不用 QK-Clip

Kimi Muon 曾配合 QK-Clip 抑制 attention logit 爆炸。V4 在 query 与 KV entry 上直接做 RMSNorm(配合 CSA/HCA 架构),logit 已受控,故 不再使用 QK-Clip(论文 §2.4)。


2. Hybrid Newton–Schulz 正交化

显式 SVD 每步太贵;Muon 用 Newton–Schulz 迭代近似极因子 $UV^\top$。先将 $M$ 按 Frobenius 范数归一化 $M_0=M/|M|_F$,再重复:

$$ M_k=aM_{k-1}+b(M_{k-1}M_{k-1}^\top)M_{k-1}+c(M_{k-1}M_{k-1}^\top)^2M_{k-1} $$

V4 相对 Kimi Muon 的改动混合两阶段、共 10 步——

阶段步数系数 $(a,b,c)$作用
快速逼近1–8$(3.4445,,-4.7750,,2.0315)$奇异值快速靠近 1
精修稳定9–10$(2,,-1.5,,0.5)$将奇异值稳定在 1

下面代码与论文 Algorithm 1 / 式 (28) 对齐,便于对照 HybridNewtonSchulz 与单步 Muon 更新(教学用 NumPy,非 V4 生产实现):

import numpy as np

# V4 Hybrid Newton-Schulz: 8 fast + 2 stable (paper §2.4)
NS_STAGES = [
    (8, (3.4445, -4.7750, 2.0315)),
    (2, (2.0, -1.5, 0.5)),
]


def newton_schulz_step(m: np.ndarray, abc: tuple[float, float, float]) -> np.ndarray:
    a, b, c = abc
    mm = m @ m.T
    return a * m + b * (mm @ m) + c * (mm @ mm @ m)


def hybrid_newton_schulz(m: np.ndarray) -> np.ndarray:
    """Approximate polar factor UV^T; input M is n×m."""
    m = m.astype(np.float64)
    norm = np.linalg.norm(m, ord="fro")
    if norm == 0:
        return m
    m = m / norm
    for n_steps, coeffs in NS_STAGES:
        for _ in range(n_steps):
            m = newton_schulz_step(m, coeffs)
    return m


def muon_step(
    w: np.ndarray,
    grad: np.ndarray,
    momentum: np.ndarray,
    *,
    lr: float = 2.7e-4,
    mu: float = 0.95,
    weight_decay: float = 0.1,
    gamma: float = 0.18,
) -> tuple[np.ndarray, np.ndarray]:
    """One Muon step for matrix W (Algorithm 1)."""
    momentum = mu * momentum + grad
    nesterov = mu * momentum + grad
    ortho = hybrid_newton_schulz(nesterov)
    scale = np.sqrt(max(w.shape)) * gamma
    update = ortho * scale
    w = w * (1 - lr * weight_decay) - lr * update
    return w, momentum

读法hybrid_newton_schulz 输出近似正交矩阵;sqrt(max(n,m)) * gamma 把更新 RMS 缩放到与 AdamW 超参兼容的量级;最后 decoupled weight decay 与 AdamW 形式相同。


3. 哪些参数用 Muon,哪些仍用 AdamW

优化器模块(论文 Basic Configurations)
AdamWembedding、prediction head、所有 RMSNorm 权重、mHC 静态 bias / 门控因子
Muon其余全部(Attention 投影、FFN、MoE expert 等矩阵权重)

动机:正交化是 矩阵级 操作;embedding / LayerNorm 类 向量或标量 参数不适合 Muon,继续 AdamW 更自然。

V4-Flash / V4-Pro 共用 Muon 超参:momentum 0.95、weight decay 0.1、$\gamma=0.18$;AdamW 侧 $\beta_1=0.9$、$\beta_2=0.95$、$\varepsilon=10^{-20}$、weight decay 0.1(§4 训练设置)。


4. 训练 infra:Muon 与 ZeRO

Muon 需要 完整梯度矩阵 才能做 NS 迭代,与传统 ZeRO 按元素切分 AdamW 状态 冲突。V4 训练框架(§3.4.1)要点:

问题做法
ZeRO vs 整矩阵更新混合 ZeRO bucket 分配:限制 ZeRO 并行度;用 knapsack 把参数矩阵分到各 rank,负载均衡
bucket 对齐各 rank bucket pad 到同大小 以便 reduce-scatter;padding 开销 < 10%
超大 DP超出 ZeRO 上限的 DP 组内 冗余计算 Muon 更新,换更少 bucket 内存
NS 吞吐同 shape 连续参数 合并 batch 跑 NS
精度NS 在 BF16 matmul 下仍稳定;MoE 梯度跨 DP 随机舍入到 BF16 同步,通信量减半
累加reduce-scatter 改为 all-to-all + 本地 FP32 求和,避免低精度树形累加误差

Muon 与 CSA/HCA、mHC、Hash MoE 同期打包进 V4,难以单独 ablation 优化器 vs 架构(见 V4 定位)。


5. 演进链小结

关系
V3 AdamW → V4 Muon训练侧优化器替换;推理权重格式不变(读者侧无「Muon kernel」)
Muon ⊥ CSA/HCA优化器 vs Attention 算子 正交
Muon ⊥ Hash MoE / FP4优化器 vs MoE 路由/量化 正交
Muon ↔ mHCmHC 门控仍 AdamW;主体矩阵 Muon

6. 上下游

方向文档
版本梗概DeepSeek-V4
同代 AttentionCSA / HCA
同代残差mHC
同代 MoEHash MoE + FP4
演进总览§3.7 V4

参考