← 返回书架人工智能 · 交互式 Wiki
模型工程/优化与训练稳定性资料与边界
训练目标与优化进阶计算演示

TRAINING ENGINEERING / OPTIMIZATION

优化与稳定性:梯度怎样变成更新

梯度回答损失对参数的局部敏感度,优化器还要结合历史状态、学习率和正则决定实际位移。把这几步拆开,才能解释为什么梯度很大却没走远,或当前梯度为零,参数仍在变化。

01 / UPDATE RULE

AdamW 的每个状态在做什么?

gt=∇θLt,mt=β1mt−1+(1−β1)gt,vt=β2vt−1+(1−β2)gt2,m^t=mt1−β1t,v^t=vt1−β2t,θt=θt−1−ηtm^tv^t+ϵ−ηtλθt−1.\begin{aligned} g_t&=\nabla_\theta\mathcal L_t,\\ m_t&=\beta_1m_{t-1}+(1-\beta_1)g_t,\\ v_t&=\beta_2v_{t-1}+(1-\beta_2)g_t^2,\\ \hat m_t&=\frac{m_t}{1-\beta_1^t},\qquad\hat v_t=\frac{v_t}{1-\beta_2^t},\\ \theta_t&=\theta_{t-1}-\eta_t\frac{\hat m_t}{\sqrt{\hat v_t}+\epsilon}-\eta_t\lambda\theta_{t-1}. \end{aligned}
g 是当前梯度,m/v 是历史矩估计,η 是学习率,λ 是解耦衰减系数。平方、开方和除法均为逐元素运算;这里省略 AMSGrad 等变体。

m 是梯度的指数移动平均;v 对平方梯度做指数移动平均,估计未中心化的二阶矩,用于调整各参数的更新尺度。偏差校正补偿零初始化的早期收缩;ε 避免分母过小,也可能影响极小梯度的行为。最后一项是与梯度自适应缩放解耦的权重衰减。

因此更新未必与当前 −g 同向:历史动量可能还在推旧方向。全局 η、batch、损失尺度、ε、初始化与模型结构仍需要一起调节。把 L2 项直接加到 loss 后进入 Adam 的矩估计,通常不等于解耦权重衰减。

量要观察什么解释时的条件
gradient norm裁剪前/后、unscale 前/后、全局或逐层、有效 token 归一化口径。结合训练阶段和 loss 归一化方式判断梯度大小。
update norm实际 θafter−θbefore,包含优化器与衰减;与参数范数的比例。相同学习率不意味着所有层走相同比例;零初始化张量的相对比值无意义。
m / v 状态是否恢复、极端值是否长期残留、不同参数组的配置。复现下一步更新,还需相同的矩状态、学习率和 step。
验证指标相同数据版本、长度和采样协议下的趋势及方差。随机 minibatch loss 会波动;泛化表现应在固定验证分布上检查。
02 / STATE LEDGER

把同一串梯度交给不同优化器

外部输入梯度序列让每一步都可核算。观察变号、尖峰以及归零后,历史状态怎样影响 θ。

单参数更新账本

人为指定梯度,无模型训练曲线
当前参数 θ
最近一次 Δθ
更新步数
t / gm / v梯度驱动位移衰减位移θafter

θ₀=1,m₀=v₀=0;AdamW β₂=0.99、ε=10⁻⁸。Momentum 用 bₜ=β₁bₜ₋₁+gₜ(无 dampening/Nesterov)。为比较位移,三种模式均显式加入相同解耦衰减;这不等同所有库中 SGD 的 weight_decay 实现。改配置会从 θ₀ 重算当前步数,未把人为梯度当作 loss 导数轨迹。

03 / INITIALIZATION

为什么训练开始前就要关心数值尺度?

打破对称,保持可传播尺度

相同单元若完全对称初始化可能收到相同更新。随机权重需要结合 fan-in/out 与激活设置尺度,避免层层放大或衰减。某些残差分支的零初始化是有意设计,初始化应按各模块的结构分别选择。

残差也会累积方差

pre-norm 给残差主干短路径,但不保证任意深度或学习率稳定。残差缩放、输出投影初始化、Q/K 范数和 logits 动态范围都应随配方检查。

Warmup 是过渡阶段

学习率从小到大,让早期参数、激活和优化器状态逐步适应。标签和 mask 的正确性仍需单独检查;时长应明确以更新步、样本还是 token 计。

小模型调参怎样迁移

μP 按参数类别和宽度缩放初始化/学习率等,让某些超参数更可跨宽度迁移。不同参数类别采用不同的缩放规则;跨深度、数据、序列长度或 optimizer 时,先做坐标/尺度检查和中间规模验证。

04 / DIAGNOSIS

看到不稳定,先把可能原因分开

现象优先证据可区分原因的实验
突然 loss spike该 batch 的来源、长度、有效标签、per-token loss、logit/grad 范数。固定 checkpoint 回放 spike batch 与普通 batch,检查数据异常或数值溢出,根据回放结果再决定是否调整 LR。
loss 正常,参数不动参数是否在 optimizer 内、实际 Δθ、scaler 是否跳步、学习率、冻结和 detach。对一个应可训练张量记录前后差;确认是零梯度、未更新、舍入还是跳步。
恢复后走势改变权重、m/v、step、scheduler、scaler、RNG、数据游标。对比不中断基线与恢复分支的相同后续样本;同时比较参数变化和优化器状态。
裁剪长期触发全局/逐层梯度分布、阈值和 loss 缩放口径。先确认归一化;裁剪可能掩盖异常,阈值效果需要结合训练趋势验证。

梯度裁剪约束聚合梯度的大小;参数范数约束和 AdamW 衰减作用于参数,三者的作用位置不同。FP16 loss scaling 场景通常先完成有效 batch 累积、unscale、检查/同步有效梯度,再裁剪与 optimizer step;BF16 通常不需传统 loss scaling,但仍可能有溢出或舍入问题。若更新因非有限值被跳过,调度器和计数应遵守所用框架的跳步语义。

增大 batch 通常减少单次梯度的抽样噪声,却不意味着按比例放大学习率永远成立。训练 token 相同也可能有不同更新次数;warmup/decay 用 step 还是 token 计都会改变轨迹。是否值得改 batch,需要同预算验证,同时比较验证质量、更新次数和计算成本。

05 / MATRIX GEOMETRY

Muon 怎样利用更新矩阵的结构?

AdamW 用逐元素历史矩调整更新尺度;Muon 对选定矩阵的梯度动量作近似正交化,再配合更新尺度和权重衰减。要理解这种差别,可以先看一个满秩方阵的精确极分解方向,再回到实际算法。

M=UΣV⊤,Q=UV⊤,Wt+1=(1−ηtλ)Wt−ηtctQt.\begin{aligned}M&=U\Sigma V^\top,\qquad Q=UV^\top,\\W_{t+1}&=(1-\eta_t\lambda)W_t-\eta_t c_t Q_t.\end{aligned}
M 代表待处理的更新矩阵,常来自梯度动量;Q 为精确极分解方向,ct 表示实现中的尺度调整。实际 Muon 通常用有限次 Newton–Schulz 型迭代近似处理,而非每步计算精确 SVD;动量与缩放按版本核对。

同一个 2×2 矩阵的三种方向

已知 SVD · 全部归一到相同 Frobenius 范数

M=R(30°)·diag(σ₁,1)·R(20°)ᵀ,旋转保持不变。逐元素一列使用首步、零历史 AdamW 梯度项 M/(|M|+10⁻⁸),未计衰减。

位置原始 MM 归一方向逐元素方向极分解方向

每个方向都除以自身 Frobenius 范数,显示数值未乘下降方向的负号。极分解原始 Q 的奇异值为 1;归一显示后为 1/√2。本例只比较方向,不代表训练速度或长期优化轨迹。

矩阵方向与坐标尺度

改变 σ₁/σ₂ 会改变原始更新在不同奇异方向的强度。保持 U/V 不变时精确 Q 不变;逐元素缩放依赖坐标中的元素值,通常得到另一方向。

尺度仍需匹配

不同形状的矩阵正交化后,每元素更新 RMS 不同。学习率、矩阵形状、权重衰减与更新缩放一起影响实际位移;把方向归一只是本例的比较约定。

参数组需要分别指定

报告和实现常把适用的隐藏层矩阵交给 Muon,其他参数由 AdamW 等方式更新。向量、embedding、输出头、共享权重与张量 reshape 的处理需查看具体版本。

分布式结构也有影响

任意把矩阵切成几块后分别正交化,通常不同于整矩阵处理。检查分片维度、通信、重组、精度和状态恢复,再比较端到端成本。

《Muon is Scalable for LLM Training》(2025)报告了权重衰减、更新尺度与分布式实现的实验。其效率结论依赖模型、数据、预算与调参协议;评估替换时同时看质量曲线、step time、显存、通信和数值稳定性。

CASE / MATRIX UPDATE RECIPES

矩阵优化器:按头处理与大表更新,分别改变了什么?

V4.1-Flash 报告第 2.5 节将 Query/Key 矩阵按 head 处理,并为 Engram 表、token embedding 与预测头采用动量加 Sinkhorn 均衡。分组方式、参数类型与缩放规则都是算法的一部分,不能只保留“正交化”或“归一化”两个名称。

同一个 4×2 矩阵,整矩阵与两个 head 的方向不同

固定 M=[[4,0],[0,1],[1,0],[0,2]],前两行和后两行分别视作两个 head。由于列正交且非零,可以精确计算 Q=M(MᵀM)⁻¹ᐟ²;逐头时分别计算两个 2×2 子矩阵。下表将两种最终方向都归一到单位 Frobenius 范数。

行原始 M整矩阵归一方向逐头归一方向
04.000000 / 0.0000000.685994 / 0.0000000.500000 / 0.000000
10.000000 / 1.0000000.000000 / 0.3162280.000000 / 0.500000
21.000000 / 0.0000000.171499 / 0.0000000.500000 / 0.000000
30.000000 / 2.0000000.000000 / 0.6324560.000000 / 0.500000

方向余弦为 0.903088,因此区别不只是总步长。脚本核对完整矩阵和每个 head 的 QᵀQ=I;这里的精确极分解与显示归一化不是有限 Newton–Schulz、完整 Muon 或作者的更新缩放,也不证明哪种方向质量更好。

此处 Sinkhorn 均衡的是有符号更新的 L2 尺度

Mt=βMt−1+(1−β)Gt,G^t=βMt+(1−β)Gt,U(0)=MaskRows⁡(G^t),Δt=n U(K),Wt+1=Wt−γηtΔt.\begin{aligned} M_t&=\beta M_{t-1}+(1-\beta)G_t,\qquad \widehat G_t=\beta M_t+(1-\beta)G_t,\\ U^{(0)}&=\operatorname{MaskRows}(\widehat G_t),\qquad \Delta_t=\sqrt n\,U^{(K)},\\ W_{t+1}&=W_t-\gamma\eta_t\Delta_t . \end{aligned}
对应 V4.1 v1 算法 1:先按行范数相对均值屏蔽近零行,再做奇数 K 次行/列交替 L2 归一化,每次分母加 ε,最后一次为行归一化。m≥n,n 是列数;该更新不含权重衰减。具体参数组与其他优化器分别声明。

本例 W=[[1,−0.5],[0.2,0.8],[−0.3,0.4],[0.7,−0.1]],当前梯度和上步动量在下表给出;β=0.9、ε=0.001、τ=0.1、K=3、η=0.02、γ=0.7,全是教学输入,不声称是厂商默认值。屏蔽条件为行范数 ≤τ×平均行范数。

行当前梯度上步动量更新 Δ更新后 W
00.200000 / −0.1000000.100000 / −0.2000000.754398 / −1.1941740.989438 / −0.483282
10.000000 / 0.0000000.080000 / 0.0400001.252967 / 0.6519960.182458 / 0.790872
2−0.050000 / 0.300000−0.100000 / 0.050000−0.940168 / 1.054138−0.286838 / 0.385242
30.000000 / 0.0000000.000000 / 0.0000000.000000 / 0.0000000.700000 / −0.100000

第 1 行当前梯度为零,历史动量仍让参数发生更新;第 3 行梯度与动量都为零,才保持不变。稀疏读取、当前梯度的支持集、实际更新范围和状态内存是四个需要分别记录的对象。

三次归一化后的行/列范数,并不会同时精确为 1
步骤归一化轴四行 L2 范数两列 L2 范数
1行0.995405 / 0.986385 / 0.992539 / 0.0000001.238278 / 1.189784
2列0.826188 / 0.802523 / 0.818583 / 0.0000000.999193 / 0.999160
3行0.998791 / 0.998755 / 0.998780 / 0.0000001.229422 / 1.217037

这是乘 √n 之前的 U;ε 和屏蔽行保留在计算中,最终一轮又改变列范数。这里允许负值与矩形矩阵,目标是更新尺度;mHC 则约束非负残差矩阵的行列和,其二范数结论不能移用到本表。脚本另核对全零输入、奇数步数与屏蔽边界。

一手依据为 DeepSeek-V4.1-Flash v1(2026-09-17)第 2.5 节、算法 1。报告区分 Muon、逐头处理、L2 均衡更新和 AdamW 参数组;本站只核验给定小矩阵的方向与一次更新,没有重跑模型训练、复现大表分片或迁移作者的效果结论。

06 / SCHEDULE & READOUT

WSD 与 checkpoint 平均:训练终点怎样读出来?

Warmup–Stable–Decay(WSD)把学习率分成升温、稳定与衰减三段。稳定阶段的单个 checkpoint 可能波动;除直接评估它,还可以按明确窗口与系数平均相邻权重,再独立评估平均结果。学习率日程决定训练轨迹,参数平均决定另一份读出工件,两者分别保存。

θ‾=∑s∈Wasθs∑s∈Was,as≥0,∑sas>0\overline\theta=\frac{\sum_{s\in\mathcal W}a_s\theta_s}{\sum_{s\in\mathcal W}a_s},\qquad a_s\ge0,\quad\sum_sa_s>0
先固定 checkpoint 集合 W、张量对应关系与非零权重和。参数平均、输出集成与恢复完整训练状态是不同操作;共享权重、非参数 buffer、量化状态等也需要明确处理规则。

同一条二维更新轨迹,保留有利与不利的结果

固定初值 [1,−0.6],每步使用下式梯度;扰动 ξ 在 [0.6,−0.8] 与 [−0.6,0.8] 间交替。诊断函数 F 只用于这组二次函数例子的比较,不是语言模型验证分数。

F(θ)=12(θ12+4θ22),θt=θt−1−ηt(diag⁡(1,4)θt−1+ξt).\begin{aligned}F(\theta)&=\tfrac12(\theta_1^2+4\theta_2^2),\\\theta_t&=\theta_{t-1}-\eta_t\left(\operatorname{diag}(1,4)\theta_{t-1}+\xi_t\right).\end{aligned}
SGD,无动量、权重衰减或自适应状态。第 1–2 步学习率为 0.1、0.2;第 3–8 步为 0.2;第 9–12 步为 0.155、0.11、0.065、0.02。尾段是人为线性日程,不是 NVIDIA 的 minus-sqrt 配方。

在计算结果前就固定读出步 8 与 12,各取包含当前步的最近四份参数;除了等权平均,再检查从旧到新 1:2:3:4 的教学系数。不按结果挑窗口,也不把这组系数称为作者的 decay emulation。

读出阶段方案参数 [θ₁,θ₂]诊断 F
稳定末 · step 8末次参数0.256808 / −0.1333390.068534
稳定末 · step 8窗口等权平均0.274072 / −0.0002060.037558
稳定末 · step 8窗口 1:2:3:40.257250 / −0.0267690.034522
衰减末 · step 12末次参数0.135381 / −0.0001130.009164
衰减末 · step 12窗口等权平均0.140412 / 0.0108880.010095
衰减末 · step 12窗口 1:2:3:40.139595 / 0.0030820.009762

本例稳定末的两种平均都有更低的 F,衰减末则是末次参数更低。这里没有得到“平均总优于最新 checkpoint”的结论。真实实验应预先规定选择集与预算,保留所有窗口结果,避免反复用独立测试挑模型。

为什么不能把参数平均直接叫成集成或原轨迹恢复?

取 fθ(x)=(θx)²、x=1,参数 −1 与 1 都输出 1;先平均参数得到 0,输出却为 0,而两个输出的平均仍为 1。这个反例说明两项操作不能普遍互换,不否定相邻训练 checkpoint 的用途。

想从平均权重继续训练,还要指定学习率步号、优化器状态、随机状态和数据游标。它是新定义的起点;仅有平均参数不能证明恢复了某条原始训练轨迹。本地脚本也比较同一平均参数在“接第 9 步”和“重启第 1 步”下的下一次更新。

来源版本差异:1,000 步与 2,000 步分别记录

Nemotron 3 Super 报告第 2.4–2.5 节使用 WSD,并研究稳定期的权重平均读出。该报告还指出,较长的实际衰减阶段可以追平或超过平均读出;本站不将其特定实验的收益或预算估计外推成通用保证。

一手材料记载的保存间隔按 3072×8192 位置/步换算
Super 报告 · 页首 2026-04-031,000 步25,165,824,000
官方配方 · commit 99a7e452,000 步50,331,648,000

两项分别对应约 25B 与 50B 的名义 token 槽位;平均窗口仍需按实际 checkpoint 的 step/token 坐标选取,并声明端点与系数归一化。仅凭这两份材料无法确定保存间隔差异的原因,本节保留双方原始口径,不把任一数值写成唯一已核实的运行日志。

来源:Super 报告第 2.4–2.5 节、图 11;固定官方配方的 Hyperparameters / Checkpoint Merging。本节只运行公开的教学输入与公式核对,未重跑厂商预训练或平均实验。

适用范围与一手资料

标量、极分解和 WSD 均为给定输入。逐头例使用正交列矩阵的精确极分解;L2 均衡例重算给定超参数、动量、屏蔽与一次更新,不复现厂商配置或质量。与 mHC 行列和约束分别说明;WSD 仍不实现作者 minus-sqrt 配方。

公式与机制的原始依据 · 7 项
知识目录
搜索知识库