训练动力学(一):认识论

前言

在近来几年,人工智能飞速发展,但大部分的工作均集中于模型内部模块的优化,而训练过程本身却鲜有人关注,相关领域知识长期缺乏系统架构,在大众认识方面,人们对于“训练配方”的调制在多数时以“偏方”流传。在此笔者尝试系统整理并阐述训练过程中的现象、原因、解决方法等等,故形成本专栏《训练动力学》

本专栏的尽量参考20年后的经典论文,而又主要辅以24年后的各大顶会论文(AAAI、ACL、ICCV、ECCV、ICML、ICLR、CVPR)作为参考

本专栏的主要目的不在于系统阐述训练动力学内的各种现象、原因、方法,笔者并没有能力完成这些部分,本专栏的目的主要在于使读者了解相关领域的工作主要有哪些,以及在遇到问题是主要应向哪个方向参考,如表述过于粗陋,敬请见谅!

目录

第一部分 训练动力学为什么被忽视

  • 引子(OPT / GLM-130B / BLOOM 三起公开训练事故)
  • 1.1 方法创新导向下的盲区
    • 1.1.1 什么是训练动力学
    • 1.1.2 激励结构没有给动力学留位置
    • 1.1.3 弱基线问题
    • 1.1.4 Adam 的成分之谜
    • 1.1.5 炼金术之争与本专栏的立场
  • 1.2 研究对象
    • 1.2.1 训练是一个动力系统
    • 1.2.2 记号约定
    • 1.2.3 与损失景观研究的区别
    • 1.2.4 一个最小例子(一维二次碗上 GD 与 Adam 的不同轨迹)
    • 1.2.5 医学类比
    • 1.2.6 三个基本问题(可观测 / 可归因 / 可干预)
  • 1.3 核心范式
    • 1.3.1 观测、归因、干预的闭环
    • 1.3.2 扫参的成本(组合爆炸与代理不可靠)
    • 1.3.3 一个归因样板
    • 1.3.4 干预的对症原则
    • 1.3.5 诊断路线的局限
  • 1.4 正常与异常的界定
    • 1.4.1 没有基准就没有异常
    • 1.4.2 聚合曲线的欺骗性
    • 1.4.3 平台期的欺骗性
    • 1.4.4 正常曲线的可操作定义
    • 1.4.5 训练阶段的划分
    • 1.4.6 异常的分级(告警 / 干预 / 事故)
  • 1.5 本部分小结与阅读地图

第二部分 观测体系

  • 2.0 观测的纪律(观测必须便宜、观测必须先装)
  • 2.1 损失信号
    • 2.1.1 损失曲线的形态学(幂律形态、log-log 分段、内在时间)
    • 2.1.2 loss spike 的解剖(曲率先行与稳定性判据)
    • 2.1.3 聚合曲线会掩盖什么(sigmoid 叠加、按条件拆解、行为阶段)
    • 2.1.4 逐样本损失与输出侧信号(signed entropy、δTCB、溢出能量)
    • 2.1.5 学习曲线的病态率(LCDB 14.9% 与分辨率纪律)
  • 2.2 梯度信号
    • 2.2.1 全局梯度范数
    • 2.2.2 分层梯度范数
    • 2.2.3 梯度信噪比与梯度冗余度(梯度噪声尺度、GRT/GRS、GWA)
    • 2.2.4 梯度方差的解释边界
    • 2.2.5 逐样本梯度与数据归因(CSG、f-INE)
  • 2.3 激活与表征信号
    • 2.3.1 激活率与死单元(稀疏度、死头、γ 指标)
    • 2.3.2 表征秩与有效维度(PR 及其偏差、D_LR、logit 低秩)
    • 2.3.3 表征几何与漂移(NC、各向异性、离散度、漂移率)
    • 2.3.4 注意力观测(聚焦-稀释循环、attention sink)
    • 2.3.5 表征相似度的陷阱(CKA 的适用范围)
    • 2.3.6 表征演化的追踪(crosscoder、RelIE)
    • 2.3.7 探针的可靠性边界(对照任务、分布外失效、可解码≠有功能)
  • 2.4 参数与优化器状态
    • 2.4.1 更新比与权重范数
    • 2.4.2 初始化留下的痕迹(sign lock-in)
    • 2.4.3 训练早期的蝴蝶效应
    • 2.4.4 优化器状态与解的脆弱程度(v_t 就位、TPV、Koopman 外推)
  • 2.5 数值健康
    • 2.5.1 混合精度与 loss scale
    • 2.5.2 低精度训练的误差边界
    • 2.5.3 静默数据损坏
    • 2.5.4 NaN 根因树
  • 2.6 数据侧观测
    • 2.6.1 遗忘事件(Toneva 建档法与后训练四象限)
    • 2.6.2 样本影响的阶段依赖
    • 2.6.3 数据多样性的几何
    • 2.6.4 数据归因的方法选型
  • 2.7 正常形态汇总与观测配置
    • 2.7.1 分阶段正常形态矩阵
    • 2.7.2 最低限度观测配置(零/低/中成本三档)
    • 2.7.3 观测纪律(分辨率 / 联读 / 阶段 / 不干扰)
  • 2.8 本部分小结

第三部分 归因体系

  • 3.0 引言
  • 3.1 鉴别诊断的方法论
    • 3.1.1 把「病因」定义清楚(病因必须能做出可检验的预测)
    • 3.1.2 鉴别实验的设计(单变量 / 极端情形 / 预测先行)
    • 3.1.3 归因工具也有适用域
  • 3.2 异常图谱(每种异常:症状 → 候选病因 → 鉴别实验 → 处方指向)
    • 3.2.1 loss 不降或降得慢
    • 3.2.2 loss 震荡(EoS 与有益/有害震荡的鉴别)
    • 3.2.3 loss spike(四候选归因树)
    • 3.2.4 平台期(grokking 的三个解释方向)
    • 3.2.5 过拟合(良性/恶性相变谱与噪声记忆时序)
    • 3.2.6 表征坍塌(四类坍塌与「是病还是终态」的鉴别)
    • 3.2.7 收敛到坏极小值(轨道先于景观)
    • 3.2.8 捷径学习(相关性挤出与反事实鉴别实验)
    • 3.2.9 能力不涨反降(遗忘 vs 塑性丧失)
    • 3.2.10 常规监控看不见的异常(校准、隐私、路径坍塌)
  • 3.3 归因陷阱(同现即因果 / 机制叙事替代验证 / 症状量化当病因量化 + 七条纪律清单)
  • 3.4 训练的终止判定
    • 3.4.1 什么时候该停
    • 3.4.2 什么时候该回滚
    • 3.4.3 什么时候该重训
  • 3.5 本部分小结

第四部分 干预体系 I:损失函数设计学

  • 4.0 引言:所有人都在改模型,没人教你改损失
  • 4.1 损失函数的本质
    • 4.1.1 损失、梯度与有效梯度:损失函数唯一的产品是梯度场
    • 4.1.2 误差-梯度特性曲线:读损失函数的正确姿势
    • 4.1.3 损失函数的隐式目标:你以为的目标和你写下的目标
  • 4.2 经典损失的梯度分析(模型-策略-算法三段式逐个解剖)
    • 4.2.1 回归族:L2 的线性、L1 的恒定、Huber 的截断
    • 4.2.2 交叉熵族:logit 空间的视角
    • 4.2.3 Focal Loss:衰减曲线的得失(含完整梯度推导)
    • 4.2.4 GHM:梯度密度调和
    • 4.2.5 OHEM:在线难例挖掘
    • 4.2.6 标签平滑:收益、代价与表征副作用
  • 4.3 样本加权与课程
    • 4.3.1 难样本挖掘的统一视角(加权、采样、截断三条路线)
    • 4.3.2 自步学习与课程设计
    • 4.3.3 噪声鲁棒损失(MAE 系、GCE、对称损失)
    • 4.3.4 反例警示:难样本加权不是免费午餐
  • 4.4 蒸馏损失与软目标
    • 4.4.1 KD 损失的结构:硬目标 CE 与软目标 KL 的配比(温度 T 与 T² 因子推导)
    • 4.4.2 温度的动力学:软目标如何调制逐样本梯度
    • 4.4.3 教师偏置的传递:蒸馏不是无损压缩(特征蒸馏负迁移、模态偏置传递)
    • 4.4.4 自蒸馏与 EMA 教师(EMA 教师的坍缩风险)
  • 4.5 对比学习与度量学习损失
    • 4.5.1 InfoNCE 与温度系数动力学
    • 4.5.2 负样本的数量与质量
    • 4.5.3 坍塌预防作为损失设计
  • 4.6 多损失共存(本部分重点章)
    • 4.6.1 尺度匹配:不同损失项的数量级对齐
    • 4.6.2 训练速度差异:哪个损失在主导、何时主导
    • 4.6.3 静态加权与动态加权(不确定性加权、GradNorm)
    • 4.6.4 梯度冲突:PCGrad、CAGrad、纳什议价
    • 4.6.5 损失调度:时间维的配比(何时开、何时关)
  • 4.7 正则项作为损失设计
    • 4.7.1 权重衰减的双重身份(正则与时间尺度控制器)
    • 4.7.2 显式正则与隐式正则
  • 4.8 设计决策树:从第三部分的诊断反推损失修改
  • 4.9 本部分小结

第五部分 干预体系 II:优化器、学习率与初始化

  • 5.1 学习率的本质:步长、梯度噪声与隐式正则的三重身份
  • 5.2 warmup 的机制(二阶矩方差视角与后续修正)
  • 5.3 衰减策略的形态学(step / cosine / linear / WSD;探索到利用的切换)
  • 5.4 Adam 家族解剖
    • 5.4.1 Adam 与 AdamW:解耦的真正含义
    • 5.4.2 失效模式:非收敛、二阶矩失配、ε 暗坑
    • 5.4.3 成分分析时代:哪些零件真的在干活
  • 5.5 大批量训练:梯度噪声尺度、LARS 与 LAMB
  • 5.6 新一代优化器:Shampoo、Muon 等近似二阶方法带来的范式变化
  • 5.7 初始化与 μP
    • 5.7.1 初始化的经典理论(Glorot / He)与深度修正(DeepNorm)
    • 5.7.2 μP:让超参在小模型上调好、向大模型迁移
  • 5.8 归一化的动力学(BN vs LN vs RMSNorm;前置与后置)
  • 5.9 本部分小结

第六部分 干预体系 III:微调学

  • 6.1 微调的本质:在已有表征上改什么、不破坏什么
  • 6.2 三大失败模式:灾难性遗忘、表征扭曲(feature distortion)、小数据过拟合
  • 6.3 全量微调纪律
    • 6.3.1 分层学习率衰减(LLRD)与渐进解冻
    • 6.3.2 短训练、早停与 EMA
  • 6.4 PEFT 全景与动力学对比(本部分重点章)
    • 6.4.1 冻结类:BitFit、分层冻结、部分冻结
    • 6.4.2 适配器类:Adapter、(IA)³、Compacter
    • 6.4.3 低秩类:LoRA 全家桶(QLoRA / DoRA / AdaLoRA / PiSSA / LoRA+ / rsLoRA / VeRA / LoRA-FA);秩选择、alpha 与 lr 缩放、目标模块选择的动力学依据
    • 6.4.4 提示类:Prefix-Tuning、Prompt-Tuning、P-Tuning v2
    • 6.4.5 统一视角:可训练参数子空间的位置与维度如何决定动力学
  • 6.5 数据侧:质量与配比(LIMA 教训、replay 防遗忘)
  • 6.6 持续预训练:领域迁移的配比与遗忘控制
  • 6.7 SFT 动力学
    • 6.7.1 数据质量、多样性与记忆-泛化边界
    • 6.7.2 SFT 作为 RL 起点的意义(KL 约束从哪来)
    • 6.7.3 格式与长度漂移
  • 6.8 蒸馏与微调
    • 6.8.1 蒸馏微调:从大模型到小模型的能力迁移(logit 蒸馏 vs 特征蒸馏 vs 在策略蒸馏)
    • 6.8.2 蒸馏防遗忘:LwF 谱系与软回放(软目标作为 replay 的替代品)
    • 6.8.3 自蒸馏与在线蒸馏(born-again 谱系、互学习)
  • 6.9 模型合并与多任务微调
  • 6.10 微调专属观测点:与预训练不同的「正常曲线」模板
  • 6.11 本部分小结

第七部分 情境专题:各领域的特有病灶与处方

  • 7.1 LLM 大规模预训练
    • 病灶:loss spike 与发散(公开事故复盘)、MoE 路由坍塌与专家饿死、数据配比失调、长上下文扩展期行为突变
    • 观测:梯度范数与更新比长程基线、负载均衡 aux loss、逐领域损失
    • 处方:WSD 调度、数据配比动态调整、稳定性技巧(z-loss、QK-Norm 等)、scaling law 与 μP 的超参迁移
  • 7.2 多视图与多模态训练动力学
    • 病灶:模态懒惰(Modality Laziness)、模态贪婪/主导、模态收敛速度不齐、模态竞争与梯度冲突、对齐-任务失衡、缺失模态、融合点选择(多视图学习与多模态共享同一套病灶图谱)
    • 观测:逐模态探针、梯度幅值比、表征利用度、跨模态 CKA、注意力模态分配熵
    • 处方:平衡技术(梯度调制、动态加权、单模态教师蒸馏)、对齐损失配比与温度调度、vision encoder 冻结策略、多模态 SFT 数据配比
    • 案例锚点:RGB-T / RGB-D 跟踪的双流不平衡
  • 7.3 生成模型
    • 病灶:扩散噪声调度 = 隐式损失加权、训练目标与采样质量脱节、GAN 的模式坍塌与判别器过强、扩散 DPO 的新故障模式
    • 观测:逐噪声层损失曲线、FID 与训练损失背离
    • 处方:损失加权重设计、TTUR 思想、偏好优化在生成场景的移植注意点
  • 7.4 RL 与偏好优化
    • 病灶:reward hacking 的曲线特征、KL 失控、熵坍塌、长度膨胀、参考模型漂移、DPO 家族各自的失效模式
    • 观测:KL、奖励 margin、熵、长度分布、pass@k
    • 处方:PPO 解剖、DPO / SimPO / KTO / ORPO / IPO 动力学差异与选型、GRPO/RLVR 的早停与熵正则
  • 7.5 小数据与低资源
    • 病灶:过拟合的早期识别(与大数据场景形态不同)、评估噪声淹没进步
    • 处方:增广与正则的剂量学、蒸馏、数据高效训练

第八部分 案例研究

  • 8.1 完整诊断流程示范(3-5 个真实病例:从异常曲线到归因到处方)
  • 8.2 经典失败复盘(公开文献中的训练事故再诊断)
  • 8.3 对照实验:同一问题的「扫参解法」与「诊断解法」的成本与效果对比

第九部分 方法论与工具

  • 9.1 最小可行监控仪表板(记录什么、频率、告警阈值)
  • 9.2 实验归因纪律(日志规范、控制变量、可复现性)
  • 9.3 扫参的正确位置(诊断之后的假设驱动局部搜索)
  • 9.4 展望:训练动力学能否从经验集合升级为一门学科

附录(规划)

  • 附录 A:症状 → 病因 → 处方速查表
  • 附录 B:训练健康检查清单(开训前 / 训练中 / 收敛后)
  • 附录 C:关键量经验参考范围汇总(更新比、梯度范数、激活率、有效秩……)
  • 附录 D:术语与符号表

第一部分 训练动力学为什么被忽视

引子

当我们刚开始上手训练一个模型时,我们一般只看一条曲线:loss。它要是下降,我们就放心;它要是不动,我们可能会疑惑;假如它突然向上跳一下又自己回来,我们多数时候应当是当作没看见的。

而围绕这条“曲线”,通常有一套约定俗成的“应急方案”。比如loss 出现尖峰(spike),你去问一圈,得到的回答通常是:“把学习率调小一点”;“加梯度裁剪什么的?”;“查查有没有脏数据”;“从上一个 checkpoint 重启再训一次就好了”。这四条建议实际上对应着四种不同的病因假设,但提建议的人却是在没有看过你的梯度范数、激活分布或优化器状态下说出这些话的,提问的人一般也没有,因为刚开始上手时可能默认的训练日志里只有 loss 和 accuracy。

也就是说,在诸如上述的类似情况下我们在用一个观测量驾驶一个有几千亿参数的系统——这很显然是科学不能接受的。那么此时如何给这个系统装上仪表、读懂仪表、按仪表读数动手修理就显得尤为重要了,就是训练动力学(Training Dynamics)研究的内容,也是本专栏的主题。

在本部分首先处理四个前置问题:为什么长期没人系统做这块(1.1);它的研究对象是什么(1.2);它凭什么比扫参调参更有效(1.3);以及一个容易被忽略的前提,不知道「正常」长什么样,就没有资格指认「异常」(1.4)。1.5 节讨论它与相邻领域的边界。

这不是小题大做。大模型时代的一些大事故,都是训练过程失控的事故,而且都留下了公开记录。OPT-175B(Meta,2022)[1] 的训练日志是最有名的:训练中途反复出现 loss 尖峰,团队的处理手段是回滚到旧 checkpoint、调低学习率、跳过可疑的数据批次,外加硬件故障导致的多次重启,整个训练断断续续拖了数月。GLM-130B(智源与清华,2022)[2] 的技术报告里有一整节讲训练稳定性:他们逐层检查梯度范数,发现尖峰与词嵌入层的梯度异常放大有关,最后靠 DeepNorm 和嵌入梯度收缩等手段才把训练稳住。BLOOM-176B(BigScience,2022)[3] 公开的训练时间线里,同样记满了尖峰、重启与回滚。

这三起事故的主角都是顶级团队,算力、数据、人才都是不缺的,但缺的是对训练过程的事前理解,于是处理手段只剩「回滚、降学习率、跳批次」这三件套。这三件套在 1.2.4 会有一个更准确的评价:它们是退烧药,但是不是抗生素。如果当时有成熟的训练动力学可用,这些事故里应该至少有一部分,本可以在曲线还只是「有点不对」的阶段就可以被拦住。

1.1 方法创新导向下的盲区

1.1.1 什么是训练动力学

训练动力学研究训练过程本身。说得具体一点就是:损失、梯度、激活值、参数、优化器状态这些量,随训练步数 t 如何联合演化;它们正常时是什么形态,异常时是什么形态;出现异常时,如何定位原因、如何干预。

它和「训练方法」并不是相同的。训练方法回答「怎样设计一个更好的训练流程」,训练动力学回答「这个流程跑起来之后,内部在发生什么」。前者是菜谱,后者是烹饪化学。菜谱能教人做出蛋糕;这次蛋糕为什么塌了、下次怎么救,要靠烹饪化学。深度学习过去十五年积累了大量菜谱,烹饪化学方面的工作则零零散散分布在各会议的不同 track,没有形成体系。本节分析这个现象的成因。

1.1.2 激励结构没有给动力学留位置

如果你打开一篇顶会论文,你会发现它们的骨架都是差不多的:提出新模块、新损失或新架构,在基准上超过 baseline,放几组消融实验,收工。训练过程中发生了什么,一般只在附录的「训练细节」里用几行字交代学习率、batch size 和 warmup 步数。

这与审稿激励有关。审稿人要的是新,训练过程分析不新,也难塞进八页正文:曲线分析没有 SOTA 数字好看。一篇只讲「训练时该看什么指标」的论文,投方法 track 嫌它没有新方法,投应用 track 嫌它没有新应用。它天然的归属在会议分类里不存在。

而这样的后果就是,训练知识以偏方(trick)的形式口口相传。Transformer 要 warmup;batch 大了线性放大学习率;混合精度要配 loss scaling;微调大模型用 LoRA。这些说法每一条都对,但你要是一追问一句为什么,回答往往是「大家这么做都有效,他就是work了,就是这样」。偏方通常是很灵的,但问题是没有说明书啊:适用范围、禁忌症、剂量一概欠奉,一问那肯定是没有的。于是同一个偏方,在甲手里是救命药,在乙手里可能是安慰剂,在丙手里那可能就是毒药了。

warmup 是个典型的考据案例。2017 年的 Transformer 论文 [4] 把线性 warmup 接倒数平方根衰减写进了学习率公式,此后它成了 Transformer 训练的出厂设置,但论文没有解释为什么需要它。直到 2019 年,RAdam [5] 才给出机制级的说法:训练初期二阶矩 v_t 的样本太少,方差极大,自适应学习率因此剧烈波动,模型一开始就被大步长带偏;warmup 的本质是在 v_t 的估计稳定之前压住有效学习率。从「大家都用」到「知道为什么」,隔了两年。偏方没有说明书,说明书是有人回头补出来的。本专栏第四到六部分做的,很大程度就是这种补说明书的工作。

1.1.3 弱基线问题

一种常见的辩护是:方法研究不看过程,但结果总是硬的,新优化器论文都报告了加速比。

但实际情况没那么乐观。ICLR 2026 的 Fantastic Pretraining Optimizers and Where to Find Them [6] 把近年声称有 1.4 到 2 倍加速的 11 个预训练优化器,放到了同一套调参协议下重新评测。在公平Protocol下,真实加速的上限约 1.4 倍,且随模型规模增大持续的缩水,大规模时只剩约 1.1 倍。相当一部分漂亮的加速比来自baseline没调好。

弱基线是怎么产生的?调参预算不对称呗。如果你是一位AI炼丹师,在做和其他baseline的实验时你一定会经常问自己一个问题:到底用哪个超参,要不要对齐啊!!!作者们发新方法时,给新方法配足调参预算,基线(通常是 AdamW)则沿用旧论文的超参或只粗扫一遍。新优化器在自己的论文里打的是没调好的 AdamW,到了别人的论文里又成了没调好的新优化器。加速比的通胀就这样一代代复利下去。公平协议做的事无非是给双方同样的预算,挤掉的水分就是 1.4 到 2 和 1.1 之间的距离。

加速比是优化器论文的核心指标,是摘要里会加粗的那种数字。它能系统性虚高多年,原因恰在于没人检查跑道状况:基线的学习率扫没扫够、调度合不合理,这类过程问题不在审稿清单上。只奖励终点成绩、不检查跑道的领域,终点成绩注水只是时间问题。

1.1.4 Adam 的成分之谜

另一个例子来自正面,说明的仍是同一个问题。NeurIPS 2025 的 In Search of Adam's Secret Sauce [7] 做了一件笨功夫:训练 1500 多个语言模型、耗费约一万 A100 小时,只为了回答一个问题:Adam 的诸多组件里,到底哪个在起作用?

结论有两条。一,把 Adam 简化成「符号下降加自适应」的 Signum 变体,能追回 SGD 与 Adam 之间 96% 的性能差距(但仍差 25%,说明逐坐标自适应的幅度本身是有效成分)。二,\beta_1 = \beta_2 这个几乎没人动的设置,接近最优。也就是说,Adam 身上若干被默认供奉了十年的组件可有可无,真正起作用的机制直到 2025 年才被指认清楚。

这两条结论的实践含义是调参空间的收缩。\beta_1 和 \beta_2 并成一个,超参从二维降成一维;「有效成分为符号化加逐坐标自适应」则告诉改进者该在哪个零件上动刀,第五部分讲 Muon、Shampoo 这些新一代优化器时,会反复回到这个指认结果。

Adam 于 2014 年提出,全球每天成千上万人在用,但十年后才有系统的成分分析。这不是哪个学者偷懒了,而是学科的问题:理解训练过程不属于任何一个成熟 track 的 KPI,这件事本来就一直没人做,大伙也没法发paper啊(,直到有人愿意烧一万卡时补上这一课。

1.1.5 炼金术之争与本专栏的立场

2017 年 NeurIPS 的 test-of-time 演讲里,Ali Rahimi [8] 公开称深度学习为「炼金术」(alchemy)。辩护者的主要反驳是,试错本来就是科学的一部分。双方各有道理,但都没说到点子上。炼金术的问题不在「试」,化学家也试错。问题在试完不归因:炼出金子就谢天谢地啦,炼不出就换个配方再来呗,中间没有任何环节把「这次为什么成功」沉淀成知识。试错是科学的发动机,但归因才是科学的记账本。没有记账本,发动机空转一万年,留下的只是一地炉渣。

本专栏不反对扫参,反对的是扫参成为唯一手段。扫参是黑盒搜索,它告诉你哪组配置赢了;诊断是白盒归因,它告诉你为什么赢、换个场景该往哪个方向改。1.3.2 节会算一笔账,说明纯扫参路线连成本有些时候都过不了关。

下表是几组常见症状与流行偏方的对照。同一个症状背后可能有三四种病因,对应完全不同的处方:

症状 流行偏方 偏方对因的情形 误诊的后果
loss spike 调小学习率 步长过大、参数冲出局部盆地 若 spike 源于优化器二阶矩失配(见 1.2.4),调小学习率只是推迟复发
loss 不降 加大学习率 步长过小、困在平台期 若病因是标签错乱或数据没打乱,学习率越大死得越快
过拟合 加 dropout 模型方差过大 若实际是数据泄漏或评估出错,dropout 白加,还拖慢收敛
训练又慢又吵 加大 batch size 梯度噪声大、信噪比低 超过临界 batch size 后纯属烧钱,泛化还可能变差

症状、病因、处方,三段必须齐全,缺一段那不用想就是巫医。

1.2 研究对象

1.2.1 训练是一个动力系统

设参数为 \theta,第 t 步采到批次 B_t,损失为 \mathcal{L}(\theta; B_t),梯度为 g_t = \nabla_\theta \mathcal{L}(\theta_t; B_t)。随机梯度下降(SGD)的更新为

\theta_{t+1} = \theta_t - \eta_t g_t

其中 \eta_t 是第 t 步的学习率。如果用 Adam 这类自适应优化器,系统里还会多出两个内部状态:一阶矩 m_t(梯度的滑动平均)与二阶矩 v_t(梯度平方的滑动平均),更新变为

\begin{aligned} m_t &= \beta_1 m_{t-1} + (1-\beta_1)\, g_t \\ v_t &= \beta_2 v_{t-1} + (1-\beta_2)\, g_t^2 \\ \theta_{t+1} &= \theta_t - \eta_t \frac{m_t}{\sqrt{v_t} + \epsilon} \end{aligned}

这里略去了偏差修正项,不影响本专栏的任何结论,读者可自行补上。

这两组式子定义的不只是「一个算法」,而是一个动力系统。系统的完整状态不是 \theta_t 一个量,而是 (\theta_t, m_t, v_t) 这一整包,外加数据的排列顺序。给定初始状态和随机种子,整条训练轨迹,包括它中途的每一次波动,原则上都是确定的。

数据顺序也是状态的一部分,这一点常被忽略。同样的数据,先喂简单的还是先喂难的,轨迹会不同,这就是课程学习(curriculum learning)存在的理由;同一个 batch 顺序,换个随机种子,小模型上 loss 曲线能分出肉眼可见的叉。把随机种子和数据顺序视作系统状态,很多「玄学复现不出来」的事故就不再神秘了:不是玄学,是初始条件和轨道参数没有对齐而已。

既然训练是动力系统了,那研究它的自然办法就是动力系统的通用办法:边运行边观测状态变量,从演化形态反推系统性质。这就是训练动力学。它的观测对象可按五个家族归口:

家族 代表观测量 类比到体检
损失 训练/验证损失曲线、逐样本损失分布 体温、血压
梯度 全局/分层梯度范数、梯度信噪比、梯度冲突 血液化验
激活与表征 激活率、死神经元比例、有效秩、注意力熵 脑电图
参数 权重范数、更新比 |\Delta\theta|/|\theta| 体重与体脂
优化器状态 m_t、v_t 的演化、loss scale 的抖动 心率变异性

第二部分会逐家族展开。这些量都有各自的正常形态,都能提供信息,前提是把它们记下来了。

表里没有列出第六个家族:数据侧观测量。逐样本的损失值、每个样本被学会又被遗忘的次数(forgetting events)、批次内的难度分布,这些量不属于模型而属于数据,却常常最先暴露问题。标签噪声会在逐样本损失分布上形成双峰;脏数据批次会在逐样本损失序列上留下尖刺;遗忘事件多的样本往往处于决策边界附近。第二部分会把数据侧单列一节,它的观测成本最低,但检出率却常常时最高的。

1.2.2 记号约定

以下记号从第二部分起全程使用:

  • \theta_t:第 t 步的参数;\eta_t:第 t 步的学习率;g_t:该步的批次梯度;
  • m_t, v_t:Adam 系优化器的一阶、二阶矩;
  • \Delta\theta_t = \theta_{t+1} - \theta_t:参数更新量;比值 r_t = \|\Delta\theta_t\| / \|\theta_t\| 称为更新比;
  • h_t^{(l)}:第 l 层在第 t 步的激活;W^{(l)}:第 l 层权重;
  • \|\cdot\| 默认指 L_2 范数。

1.2.3 与损失景观研究的区别

有的读者可能会问:研究损失函数形状的工作早就有了,loss landscape、Hessian 谱、平坦极小值,在会议上一抓一大把,和训练动力学有什么区别?

区别在静态与动态。景观研究拍的是照片:把训练按下暂停,看当前这个坑长什么样,多深、多宽、多尖。而训练动力学拍的是录像:参数是怎么一路滚进这个坑的,中途在哪个坡上打过滑,为什么滚进这个坑而不是隔壁那个。

照片当然是有用的,第三部分归因时会大量借助曲率这类静态量。但照片回答不了过程性的问题。两个模型终点落在同一个坑里,一个走得四平八稳,一个中途差点发散,它们的坑一模一样,命却完全不同。下一小节用一个最小例子说明这种差别。

1.2.4 一个最小例子

考虑一维二次碗

f(x) = \frac{1}{2} a x^2, \qquad a > 0

最小值在 x = 0,曲率恒等于 a。没有噪声、没有鞍点、没有崎岖地形,是教科书里最温顺的优化问题。

先看梯度下降(GD)的表现。梯度为 f'(x) = ax,更新为

x_{t+1} = x_t - \eta\, a x_t = (1 - \eta a)\, x_t

只要 0 < \eta < 2/a,就有 |1 - \eta a| < 1,于是

|x_t| = |1 - \eta a|^t \, |x_0|

单调、指数、平滑地收缩到 0,损失曲线一路向下,连个毛刺都不会有。

再看 Adam。沿用 1.2.1 的式子。当梯度长时间保持同号时,滑动平均会进入稳态:m_t \to g,v_t \to g^2,于是更新量

\eta \frac{m_t}{\sqrt{v_t} + \epsilon} \;\longrightarrow\; \eta \cdot \mathrm{sign}(g) \;=\; \pm \eta

即 Adam 的步长与梯度大小无关。离最小值还远时,这是优点:GD 在平缓区磨磨蹭蹭,Adam 大步流星。但滚到最小值附近、x 已经很小之后,GD 的步长 \eta a|x| 会自动缩小,Adam 的步长仍是 \eta,一步从碗底这头跨到那头;跨过去后梯度变号,下一步再跨回来,在碗底来回弹跳。在有批次噪声的真实训练里,v_t 的估计还会随机波动,某一步分母刚好偏小,这一步就跨得特别大,损失曲线上便是一个 spike。

这个机制还可以再拆细一点,真实训练里梯度带噪,g_t = ax_t + \xi_t,\xi_t 是批次噪声。靠近最小值时信号 ax_t 变小,噪声 \xi_t 不变,信噪比下降。m_t 作为滑动平均,符号仍大体指向谷底(信号的均值在起作用),但 m_t/\sqrt{v_t} 这个归一化把幅度信息抹掉了:无论信号多弱,步长都维持在 \eta 量级。这解释了 Adam 的两个日常观察:它在稀疏梯度、小梯度区域推进得比 GD 快,因为幅度无关;它在训练后期噪声占比升高时更容易出毛刺,因为步长不随信号减弱而收缩。spike 的出现频率随噪声方差上升、随 \epsilon 调小而上升,这些都是可以从式子直接读出来的预测,第五部分讲 Adam 超参时会用到。

这个例子有正式出处。ICML 2026 的 Adaptive Preconditioners Trigger Loss Spikes in Adam [9] 正是用这类曲率恒定的反例证明:loss spike 的病因可以不在数据、不在学习率、不在地形,而在优化器自己的状态变量里。

回到 1.1.5 的表。「loss spike → 调小学习率」排在第一位,但在这个例子里,调小 \eta 只是把弹跳幅度按比例缩小,病根(自适应预条件器抹掉了步长对梯度大小的感知)没有动。对症的做法是干预优化器状态的行为,例如 AdaGC [10] 提出的逐张量自适应裁剪,论文中把 7B、8×1B、10B 三个规模模型的 spike score 全部压到 0。

都是同一个坑,GD 走成一条直线,Adam 走成弹跳。差别不是在坑,而是在走法。过程本身是自变量,这是训练动力学值得作为独立对象来研究的第一条理由。

1.2.5 医学类比

后面几个部分会反复用到一套医学类比:

  • 观测(第二部分)= 体检:量体温、验血、做心电图,对应损失曲线、梯度范数、激活率、更新比等指标的记录与读取;
  • 归因(第三部分)= 鉴别诊断:发烧了,是感染、肿瘤还是中暑,用能区分病因的检查逐项排除,对应「设计一个能区分两种病因假设的实验」;
  • 干预(第四、五、六部分)= 开处方:对因下药,剂量有依据,疗程有监控,对应损失函数设计、优化器与学习率调度、微调策略;
  • 专科门诊(第七部分):同一种病,在儿科和老年科不是同一种治法,对应 LLM 预训练、多模态、生成模型、RL 各自的特有病灶。

1.2.6 三个基本问题

一门以训练过程为对象的学问要成立,需要三个基本问题:

第一,可观测性:训练过程的内部状态能不能低成本地测量?答案大体是肯定的。梯度、激活、参数都是训练时现成计算的中间量,记录它们的统计量几乎不增加成本;连 Hessian 最大特征值这种曾经的奢侈品,现在也能用每步不到 5 次 Hessian-向量积在线追踪(1.5.2)。第二部分考察每个观测量的成本、频率与正常形态。

第二,可归因性:观测到的异常能不能映射到少数几个病因假设上?症状与病因是多对多映射,一个 spike 可以来自数据、学习率、优化器状态或数值溢出。1.3.3 的样板说明,只要肯设计鉴别实验,归因是可行的;第三部分把这套流程系统化,给出常见症状的鉴别树。

第三,可干预性:归因之后,手头有没有作用在该层级的干预手段?第四至六部分分别给出损失函数、优化器与学习率、微调策略三个层级的处方;第七部分说明这些处方在不同专科里需要怎样改装。

只有这三个问题都得到了回答,训练动力学才不只是「看曲线讲故事」,而才可以是一套可以运转的方法。

1.3 核心范式

1.3.1 观测、归因、干预的闭环

本专栏的全部是:先观测,再归因,后干预;干预之后回到观测。干预不是终点:药吃下去,病好了没有、有没有副作用,是要回到仪表上去看的。实践中常见的做法是,loss 不正常,改三个超参、换一版数据、顺手升级框架,然后重新跑。跑好了就收工,至于是哪个改动起的作用,没有人会知道;下次换个模型还犯不犯,也不知道。

闭环被破坏的根源是跳过观测。没有观测,归因没有原材料;没有归因,干预就变成了蒙眼开枪;没有干预后的再观测,就永远不知道有没有打中。三环缺一个剩下的部分也是会跟着失效得的。专栏的结构本身就是这个流程:第二部分讲观测,第三部分讲归因,第四至六部分讲三类干预手段,第七部分是这套流程在各个专科领域的落地,第八部分是完整的病例。

1.3.2 扫参的成本

「调参炼丹」派有一个理直气壮的辩护:多跑几组实验扫一遍就行了,又何必搞归因。这里算一下:

设有 k 个待调超参,每个扫 v 个候选值,全网格搜索的组合数是

N_{\text{grid}} = v^k

取一个相当克制的规模:5 个超参(学习率、warmup 步数、权重衰减、batch size、dropout),每个只取 5 个值,单次训练成本 C = 100 GPU 小时。总成本为

5^5 \times 100 = 3125 \times 100 = 312{,}500 \text{ GPU 小时} \approx 35.6 \text{ GPU 年}

这还只是 5×5 的玩具网格,且没有考虑超参之间的交互。有交互就不能逐个单扫,成本只会更高。随机搜索和贝叶斯优化可能能把常数压小,但是压不掉组合结构本身,在维度每涨一阶时,成本会指数翻一倍。

以随机搜索为例算第二笔账。设配置空间里前 p 比例的配置算「好配置」,随机采 n 次至少命中一次的概率为

P_{\text{hit}} = 1 - (1 - p)^n

取 p = 5\%,要有 95% 的把握至少碰到一个好配置,需要

n \;\ge\; \frac{\ln(1 - 0.95)}{\ln(1 - 0.05)} \;=\; \frac{\ln 0.05}{\ln 0.95} \;\approx\; 59

也就是 59 次训练,换来的只是「碰到一个前 5% 的配置」:不保证它进前 1%,不保证它在小规模代理上的排名能迁移到真实规模(马上就会讲这个问题),更不告诉你它为什么就好了。贝叶斯优化利用已评估点拟合代理模型(surrogate)来压缩有效搜索空间,思路更聪明,但维度一高,代理模型本身就需要几十上百次评估才能拟出像样的面,常数并没有那么小。

一个常见的让步方案是,用小模型、少数据做代理,扫完再放大。这个方案成立的前提是代理可靠,而代理并不可靠。ICLR 2026 的 Can Small Training Runs Reliably Guide Data Curation? [11] 专门检验了:小规模代理给出的数据配方排名,与大规模真实结果的排名相关 Spearman 系数可以低于 0.75,极端情形下甚至是负的;排名还会被学习率的微小扰动整个翻转。也就是说,在代理上扫出来的「最优配置」有相当概率是噪声,35 个 GPU 年可能只是在给噪声排名。

诊断的成本结构不同。预先把十几个观测量记录上(存储开销可以忽略),异常出现时读曲线、提假设、设计一两个区分性实验,每个实验往往只需正常训练的零头,锁定病因后一次改对。扫参把问题的维度当敌人,用算力硬扛指数爆炸;而诊断把训练过程的结构当朋友,顺着机制顺藤摸瓜。

还有,扫参的产出是一个点:这组配置赢了。诊断的产出是一个方向:问题出在二阶矩失配,往这个方向改都对。换一个模型、一个数据集、一个规模,点立刻作废,但方向可能依然是有效的。扫参的知识不迁移,诊断的知识是可以迁移的。

1.3.3 一个归因样板

如果空谈归因,那太虚了,我们以一个样板为例,还是 1.2.4 那篇 [9],它完整演示了鉴别诊断的流程。

第一步,列假设。loss spike 的常见病因假说至少有四个:数据里有异常批次;学习率过大;损失景观本身崎岖(地形说);优化器状态失配(走法说)。

第二步,造一个能区分假设的鉴别实验。论文的杀手锏就是 1.2.4 那个一维二次碗:曲率恒定、无噪声、无异常数据,前两个假说里数据说直接被构造排除,地形说也被排除(地形温顺得像面镜子),学习率可以单独扫描控制。结果 GD 平滑收敛,Adam 照样蹦出 spike。病因锁定在第四个:问题出在 Adam 的自适应预条件器上。

第三步,解释落到式子上。1.2.4 的推导已经给出:m_t/\sqrt{v_t} 把梯度的大小信息抹掉了,步长在最优值附近不收缩,弹跳是必然的结局。

第四步,预测并验证。如果病因真的是优化器状态,那么干预优化器状态应比干预学习率更有效。事实如此:AdaGC [10] 的逐张量自适应裁剪把三个规模模型的 spike score 压到 0;而「调大 \beta_2」「调小 \epsilon」「只重启碰运气」这类民间做法偶尔有效,原因也相同,它们碰巧动了二阶矩。假说通过了反向验证。

四步走完后,一个流传多年的玄学现象就变成了有名字、有机制、有处方的病。列假设、造鉴别实验、落到机制、预测验证,这套流程就是第三部分要反复操练的归因方法论。

1.3.4 干预的对症原则

归因到位之后,干预有一条总原则:手段必须作用在病因所在的层级上。

病因在数据,就改数据:清洗、配比、课程。病因在损失函数,就改损失,这是第四部分的全部内容。病因在优化器状态,就改优化器或其超参,这是第五部分。病因在表征与参数的错位,就改微调策略,这是第六部分。

跨层级的干预不是绝对无效。调学习率确实经常能压住 spike,但那是退烧药而不是抗生素:烧退了,感染还在,下次换个批次会接着烧。

剂量意识同样要紧。「加梯度裁剪」是处方名,「裁剪阈值设多少」才是剂量。阈值拍脑袋,裁剪就可能在正常训练期误伤健康梯度。我们会在第五部分会专门讲剂量应该从哪来:应该从观测量的分布统计来,而不应该从玄学来。

还有一个推论:干预手段有成本阶梯。调一个超参的成本是一次重训;改数据要重做 pipeline;改损失函数要重调平衡权重;改优化器要重建状态;改架构等于从头再来。阶梯从下往上,成本递增,可逆性递减。归因的价值在这里又体现了:归因越准,干预就能落在越低(越便宜)的层级上;归因缺席时,人们倾向于直接掀桌子重训,而那是最贵的处方。

1.3.5 诊断路线的局限

那,代价呢?诊断路线也是有代价的:

第一是前置成本。观测体系必须在训练开始前就位,举个例子,假如事故之后才想起装仪表,相当于车祸之后才装行车记录仪。

第二是归因依赖经验库。鉴别树是积累的产物,新架构、新任务上病因分布会变,正常值也要按族重建(1.4.5)。经验库建好之前,诊断的效率优势会打折扣,这是本专栏存在的理由之一,也是它的使用门槛。

第三是能力边界。有些病训练动力学观测不到:数据里的社会性偏见、评测集泄漏、指标与真实效用的错位,这些不在训练动力学的范围内,要靠数据审计和评估方法学。动力学管的是「训练过程健不健康」,管不了「这个目标值不值得训」。

第四,扫参并没有被完全的替代。归因定位之后的小范围精调、没有任何先验的全新领域,扫参仍是合理选择。两种手段的分工是:诊断负责定方向,扫参负责走最后一公里。

1.4 正常与异常的界定

1.4.1 没有基准就没有异常

医学能诊断发烧,是因为先统计过健康人的体温:37 度上下,超过 37.3 算发热,超过 39 算高热。基准在先,诊断在后。但深度学习却没有这个基准。不同架构、不同数据、不同规模,loss 曲线的绝对数值没有可比性:语言模型初始 loss 在 \ln|\mathcal{V}|(词表大小的对数)附近,图像分类在 \ln C(类别数的对数)附近,这些起点好算,但往后的每一步该降到多少是没有通用答案的。这是训练动力学长期停留在经验层面的一个实际困难:异常诊断需要参照系,而参照系本身需要逐个建立。

而面对这种问题,我们的解决方法有两条。第一条是同族参照:同架构、同规模、同数据的健康训练曲线,可以作为模板曲线,新训练与它比较形态而非绝对值。1.4.4 会看到,这种「一族曲线归一化后重合」的现象在 LLM 预训练里已被严格验证。第二条是形态特征:不纠结读数的绝对值,只看形态学特征,比如单调性、斜率变化、波动幅度的量级、各观测量之间的相对比例。第二部分会给出每个观测量的形态学描述。

有几个锚点是可以跨场景使用的。其一是初始损失:随机初始化下,分类模型的初始 loss 应在 \ln C(C 为类别数)附近,语言模型应在 \ln |\mathcal{V}|(|\mathcal{V}| 为词表大小)附近;第一步就明显偏离这个值,问题多半出在实现而不是训练。其二是第一步损失下降:正确接线(接线指数据、标签、前向、反向整条链路)的训练,前几百步 loss 会明显下降;一步都不降,先查 bug 再谈调参。其三是各阶段的相对形态(1.4.5)。绝对值因任务而异,这三个锚点不因地而异。

在展开之前,先得拆掉一个广泛的默认假设:loss 曲线平滑下降,就说明训练一切正常。下面三小节分别说明,聚合曲线、平台期、终值指标各自都是会骗人的。

1.4.2 聚合曲线的欺骗性

Saxe et al. 在 2019 年对线性网络的理论分析 [12] 早已指出:多种技能各自在不同时间发生 sigmoid 式的突进,叠加之后,聚合损失曲线可以非常平滑。平滑是叠加的副产品,不代表内部平静。

ICLR 2026 的 Hidden Breakthroughs in Language Model Training [13] 把这个预测变成了可观测的事实。文章提出 POLCA(Projection Oriented Loss Change Allocation):沿训练子空间的低秩结构(具体用 Hessian 的高曲率方向构造正交基),把单个样本的损失变化分解到这些方向上,再对投影得到的损失轨迹聚类。结果是,从一条肉眼看来平滑下降的训练曲线里,反解出了大量隐藏的「概念突破」:模型在某个窄时间窗内突然学会某类结构,聚合曲线上却只表现为一个几乎看不出的斜率变化。

以前识别这类相变靠自顶向下的办法:先预定义一个技能(比如「主谓一致」),再监测它的专项指标。POLCA 把流程翻了过来,先分解,让技能自己从数据里冒出来。对训练动力学的含义很直接:只看聚合 loss 的人,会系统性地漏掉训练中最重要的事件。「曲线很平滑」不再能作为「一切正常」的证据。

1.4.3 平台期的欺骗性

平台期的流行解读是「学不动了」,处理方案是调学习率或早停。两类近期工作说明这个解读有多危险。

第一类是 AAAI 2026 的 Quiet Feature Learning in Algorithmic Tasks [14]。作者在算法类任务上做了 18,544 次训练运行,发现平台期的模型在学习一种「安静特征」:这些特征对当前的输出损失没有贡献,但对任务的因果求解是必需的,训练完成后把它们消融掉,准确率会掉 41% 到 75%。也就是说,平台期的 loss 曲线一动不动,水面下的表征却在发生结构性的建设。用 loss 判定「没在学」,相当于用体重秤判断一个人在不在长脑子。

第二类是 grokking(延迟泛化)。现象最早由 Power et al. 在 2022 年报道 [15]:训练损失迅速降到零,测试损失却要在漫长的平台期之后才突然下降。NeurIPS 2025 的 A Theoretical Framework for Grokking [16] 给了这个现象一个严格的优化解释。带权重衰减 \lambda 的梯度流呈现两阶段动力学:

  • 第一阶段,快速收敛到训练损失的临界流形 \mathcal{M},此时训练损失已经很小,但参数范数还大,泛化差;
  • 第二阶段,在 t \approx 1/\lambda 的时间尺度上,沿流形做黎曼梯度流,缓慢最小化参数的 \ell_2 范数,泛化能力在这一阶段才出现。泛化出现的时刻由权重衰减 \lambda 控制。\lambda 太小,第二阶段来得太晚,按验证曲线早停的人会在泛化出现之前杀掉训练;\lambda 太大,第一阶段被破坏,训练损失降不下去。平台期到底是「健康的第二阶段」还是「真的卡住了」,单看 loss 无法区分,得看参数范数这类辅助观测量。这是第二部分要讲的「参数侧观测」存在的第一条理由。

1.4.4 正常曲线的可操作定义

正常曲线能不能有定量的、可检验的定义?最近的两篇工作分别给出了形状级和机制级的答案。

形状级的答案来自 ICLR 2026 的 Scaling with Collapse [17]。他们发现,同一族 LLM(不同参数量 N)在满足三个条件时,各自的训练损失曲线经归一化后会「崩塞」(collapse)到同一条通用曲线上。三个条件是:所有模型共享相同的 tokens-per-parameter 比值 \mathrm{TPP} = D/N;固定学习率衰减形状;AdamW 时间尺度 \tau 对该 TPP 取最优。归一化的写法是,把训练进度记为 \hat{t} = t/T,再把损失做仿射缩放:

\ell(\hat{t}, N) = \frac{L(\hat{t} \cdot T^\star(N), N) - \hat{L}}{L(T^\star(N), N) - \hat{L}}

其中 T^\star(N) 是参数量 N 对应的计算最优步数,\hat{L} 是不可约损失偏移。

这篇文章对诊断的价值在于「崩塞」的充要性:曲线重合恰好是「超参与数据预算计算最优」的特征标记。于是正常性有了一个可操作的判据:先在小模型上拟合出通用曲线,大模型训练时实时比对,偏离崩塞即是病理信号,而且比肉眼在原始曲线上看到 spike 要早得多。文章用这个信号支撑了 Cerebras 的 Celerity 模型家族训练,并把大规模超参搜索改造成「训前一小段、外推终值」的早停流程。

这个做法和 μP(maximal update parametrization)[19] 的精神一脉相承:μP 让最优学习率可以从小模型迁移到大模型,崩塞让整条曲线可以从短训练外推到长训练。两者的共同前提是「小规模的形态在大规模上保持」,而这个前提本身需要用崩塞这类判据来检验。1.3.2 说的代理不可靠问题,答案不是放弃代理,是给代理装上校验器:先看小代理曲线是否落在崩塞带上,再决定信不信它的排名。

机制级的答案来自 ACL 2025 的 Training Dynamics Underlying Language Model Scaling Laws [18]。他们发现语言模型的损失曲线在 log-log 空间是分段线性的,中间存在一个斜率突变点,称为损失减速(loss deceleration)。根因是 zero-sum learning:逐 token 的梯度系统性地相互对立,一部分样本的改善被另一部分样本的恶化抵消,训练进入破坏性干涉阶段。这个转折点可以用三个参数刻画:减速触发损失 L_d、减速前后的斜率、以及减速后斜率 r_d。scale up 之所以能改善最终损失,机制上就是降低 L_d(更晚进入减速)并提升 r_d(减速后仍保持下降速度)。

这两篇合起来,正常就有了定量含义:正常曲线有确定的形状(可崩塞、可拟合),有确定的内部事件(减速点),且偏离这些特征可以被自动检测。第二部分的「正常曲线模板」一节会在此基础上展开。

1.4.5 训练阶段的划分

综合已有的观测,一次健康的训练大体经历四个阶段,各阶段的正常体征不同:

  • 预热期(warmup):学习率从 0 或很小线性升到峰值。损失初期可能不降反升(尤其大模型),梯度范数较大且波动剧烈,优化器二阶矩在建立估计。这个阶段的「正常」反而是动荡。
  • 快速下降期:损失近似幂律下降,梯度范数从高位回落并趋于稳定,表征的有效秩快速上升。绝大多数学习发生在这里。
  • 减速转折期:如 1.4.4 所说,log-log 斜率出现可拟合的突变,逐样本梯度冲突加剧。这一阶段的「正常」是减速本身,拿快速下降期的斜率要求它,会误判为卡住。
  • 收敛期:损失进入低位缓降或平台,更新比 r_t 降到 10^{-3} 以下量级,验证指标开始波动。正常与否取决于平台期水面下在发生什么(1.4.3)。

四个阶段对应四种高发误判:

阶段 常见误判 实际情况
预热期 loss 不降反升,以为训练炸了 二阶矩估计未稳,动荡是这个阶段的常态
快速下降期 斜率变缓就急着调学习率 幂律下降本来就会变缓
减速转折期 以为卡住了,加大学习率硬推 减速是结构性事件(1.4.4),硬推会破坏收敛形态
收敛期平台 以为学不动了,直接早停 可能在学安静特征,或在走 grokking 的第二阶段(1.4.3)

1.4.6 异常的分级

界定了正常之后,还要给异常分级:不是所有异常都值得停下来处理。本专栏沿用三级分法。

告警级:曲线出现偏离但仍在恢复,如偶发的单步 spike、梯度范数的短时抬升。处理方式是记录与观察,不动训练。1.4.4 的崩塞判据适合做这个级别的自动告警:偏离幅度超过同族曲线的正常波动带就记一笔。

干预级:异常持续存在或反复出现,如梯度范数趋势性抬升、更新比长期偏离经验区间、验证指标停滞伴训练损失下降(过拟合前兆)。处理方式是不停训调整:调小学习率、改数据配比、加正则,都在训练不中断的前提下进行。

事故级:发散、NaN、不可逆的表征坍塌。处理方式是回滚或重启,必要时重新设计。OPT 和 GLM-130B 的处理手段(回滚 checkpoint、降学习率、跳批次)都属于这一级。

分级的意义在于成本。告警级几乎是免费的,干预级花的是小钱,而事故级动辄数天算力。观测体系建得好,多数问题可以在告警级被发现、在干预级被解决;观测缺席时,问题一路恶化到事故级才能被肉眼看见,引子里的三起公开事故都是这么发生的。第二部分讲每个观测量时,会同时给出它在这三级里的判据预告,完整的分级清单收在附录 B。

1.5 本部分小结与阅读地图

本部分回答了四个前置问题。

训练动力学为什么被忽视:激励结构只奖励终点成绩和新方法,训练过程分析没有投稿归属,知识只能以偏方形式流传(1.1)。

研究对象是什么:训练是一个动力系统,完整状态包括参数、优化器内部状态与数据顺序;观测量分损失、梯度、激活表征、参数、优化器状态五个家族。1.2.4 的一维例子说明,同一损失面上不同优化器会走出完全不同的轨迹,过程本身是自变量(1.2)。

凭什么比扫参有效:扫参的成本随维度指数增长,代理扫参的产出有相当概率是噪声;诊断用机制结构换算力,产出的知识可迁移(1.3)。

正常怎么界定:聚合曲线、平台期、终值指标各自都会骗人;正常性可以从同族曲线崩塞、log-log 分段形态、分阶段体征三个角度建立可操作判据(1.4)。

下一部分从体检开始:训练过程里到底该记录哪些量,每个量的正常形态应该长什么样。

参考文献

[1] S. Zhang, S. Roller, N. Goyal, et al., "OPT: Open pre-trained transformer language models," arXiv:2205.01068, 2022.

[2] A. Zeng, X. Liu, Z. Du, et al., "GLM-130B: An open bilingual pre-trained model," arXiv:2210.02414, 2022.

[3] T. L. Scao, A. Fan, C. Akiki, et al., "BLOOM: A 176B-parameter open-access multilingual language model," arXiv:2211.05100, 2022.

[4] A. Vaswani, N. Shazeer, N. Parmar, et al., "Attention is all you need," in Proc. NeurIPS, 2017.

[5] L. Liu, H. Jiang, P. He, et al., "On the variance of the adaptive learning rate and beyond," in Proc. ICLR, 2020.

[6] "Fantastic pretraining optimizers and where to find them," in Proc. ICLR, 2026. [Online]. Available: https://openreview.net/forum?id=2J51qUZ0iG

[7] "In search of Adam's secret sauce," in Proc. NeurIPS, 2025. [Online]. Available: https://arxiv.org/abs/2505.21829

[8] A. Rahimi, "Machine learning has become alchemy," NeurIPS Test-of-Time Award talk, 2017.

[9] "Adaptive preconditioners trigger loss spikes in Adam," in Proc. ICML, 2026. [Online]. Available: https://arxiv.org/abs/2506.04805

[10] "AdaGC: Enhancing LLM pretraining stability via adaptive gradient clipping," in Proc. ICML, 2026. [Online]. Available: https://arxiv.org/abs/2502.11034

[11] "Can small training runs reliably guide data curation? Rethinking proxy-model practices," in Proc. ICLR, 2026. [Online]. Available: https://openreview.net/forum?id=2FZC0c06jP

[12] A. M. Saxe, J. L. McClelland, and S. Ganguli, "A mathematical theory of semantic development in deep neural networks," Proc. Natl. Acad. Sci. USA, vol. 116, no. 23, pp. 11537-11546, 2019.

[13] "Hidden breakthroughs in language model training," in Proc. ICLR, 2026. [Online]. Available: https://arxiv.org/abs/2506.15872

[14] "Quiet feature learning in algorithmic tasks," in Proc. AAAI, 2026. [Online]. Available: https://arxiv.org/abs/2505.03997

[15] A. Power, Y. Burda, H. Edwards, et al., "Grokking: Generalization beyond overfitting on small algorithmic datasets," arXiv:2201.02177, 2022.

[16] "A theoretical framework for grokking: Interpolation followed by Riemannian norm minimisation," in Proc. NeurIPS, 2025. [Online]. Available: https://arxiv.org/abs/2505.20172

[17] "Scaling with collapse: Efficient and predictable training of LLM families," in Proc. ICLR, 2026. [Online]. Available: https://arxiv.org/abs/2509.25087

[18] "Training dynamics underlying language model scaling laws: Loss deceleration and zero-sum learning," in Proc. ACL, 2025. [Online]. Available: https://arxiv.org/abs/2506.05447

[19] G. Yang, J. B. Simon, and J. Bernstein, "Tuning large neural networks via zero-shot hyperparameter transfer," in Proc. NeurIPS, 2021.

[20] "Taming curvature: Architecture warm-up for stable transformer training," in Proc. ICLR, 2026. [Online]. Available: https://openreview.net/forum?id=DuNf2vPTTK

游客

全部评论 (0)

暂无评论,快来抢沙发吧~