从 Loss、Gradient、Optimizer、Learning Rate、Warmup、Batch、Normalization、Gradient Clipping 到训练崩坏和收敛诊断,理解模型为什么能被训动、也为什么会训坏
| 环节 | 它是什么 | 稳定性问题 | 观察信号 |
|---|---|---|---|
| Batch | 一次更新看到的数据样本 | batch 太小噪声大,太大可能泛化变差且训练成本高 | loss 方差、梯度噪声、吞吐和显存 |
| Loss | 把预测错误变成可优化标量 | 目标定义错、数据污染、标签噪声会把模型推向错误方向 | 训练 loss、验证 loss、任务指标分叉 |
| Gradient | 参数该往哪个方向改的局部信号 | 梯度爆炸、消失、尖峰或异常层会导致训练不稳 | gradient norm、NaN、层级梯度分布 |
| Optimizer | 把梯度变成参数更新的规则 | 步子太大训崩,太小训不动,动量和自适应统计会引入滞后 | 更新比例、学习率曲线、loss 震荡 |
| Regularization | 约束模型不要只记训练集 | 太弱会过拟合,太强会欠拟合 | train / eval gap、权重范数、泛化指标 |
| Numerics | 混合精度、归一化和数值范围 | 溢出、下溢、NaN、精度损失会让训练直接崩 | loss scale、NaN 计数、激活范围 |
训练不是“把数据喂进去就会变聪明”,而是在噪声、步长、目标函数、数值精度和模型容量之间维持一个不会发散、不会停滞、不会过拟合的动态系统。
| 损失函数 | 用于什么 | 直觉 | 常见问题 |
|---|---|---|---|
| Cross Entropy | 分类、语言模型 next token prediction | 正确 token 概率越高,loss 越低;底层来自 logits、log-softmax 和目标 token 的 NLL | 会鼓励模仿数据分布,但不保证事实、推理或安全;细节见 Logits / Softmax |
| MSE / L1 | 回归、连续值预测、部分生成任务 | 预测值和目标值距离越小越好 | 容易产生平均化结果,对异常值敏感度不同 |
| Contrastive Loss | Embedding、检索、表示学习 | 相似样本拉近,不相似样本推远 | 负样本选择直接影响表征质量 |
| Preference Loss | DPO、偏好优化、排序学习 | 让 chosen 比 rejected 更可能 | 偏好数据口径会被模型放大 |
| Policy / Reward Loss | 强化学习、RLHF、RLVR | 让高回报行为更可能出现 | 奖励黑客、训练不稳定、KL 约束难调 |
| Auxiliary Loss | MoE、对齐、约束训练、多任务 | 在主目标之外加额外约束 | 权重不好会和主目标打架 |
Loss 只是业务目标的可优化代理。语言模型的 cross entropy 能让模型预测下一个 token,却不能直接保证事实正确、价值对齐、工具安全或长期任务成功。关于代理目标如何失真、奖励如何被钻空子,继续看 目标函数 / 奖励错配 / Goodhart;这也是为什么后训练、评测和安全护栏还要继续接上。
优化器不是“越高级越好”。训练稳定性通常来自优化器、学习率计划、batch、归一化、初始化、混合精度和数据质量一起配平。
| 学习率策略 | 做什么 | 适合什么 | 风险 |
|---|---|---|---|
| Constant LR | 整个训练保持固定步长 | 小实验、简单任务、调试基线 | 后期可能震荡,前期可能不稳 |
| Warmup | 前期从小学习率逐步升高 | 大模型、混合精度、多卡训练 | warmup 太短容易训崩,太长浪费计算 |
| Cosine Decay | 训练后期逐步降低学习率 | 预训练、稳定收敛 | 衰减过快会提前停滞 |
| Step Decay | 在固定阶段降低学习率 | 传统视觉、分类和部分微调任务 | 阶段点需要经验调参 |
| Restart / Cyclic | 周期性调整学习率 | 探索不同区域、小模型实验 | 大规模训练里收益和风险都要谨慎验证 |
学习率过大时,loss 可能先短暂下降然后突然爆炸;学习率过小时,训练看起来稳定但几乎不学习。只看某一个 step 的 loss,很容易误判。
| 护栏 | 解决什么 | 典型作用 | 注意点 |
|---|---|---|---|
| Normalization | 层间激活尺度不稳定 | 让不同层的数值范围更可控 | LayerNorm、RMSNorm、PreNorm 细节见 Norm / Residual |
| Residual Connection | 深层网络梯度难传递 | 给信息和梯度提供捷径 | 残差尺度不当也会带来不稳定;细节见 残差流 |
| Gradient Clipping | 梯度爆炸和异常尖峰 | 限制梯度范数,避免一次更新毁掉模型 | clip 太强会让训练变慢 |
| Weight Decay | 权重无限变大和过拟合 | 约束权重规模,提高泛化 | 不同参数组可能需要不同衰减 |
| Dropout / Noise | 过拟合和特征共适应 | 强迫模型不要依赖单一路径 | 大模型预训练中使用策略与小模型不同 |
| Mixed Precision + Loss Scaling | 提升吞吐、降低显存 | 用 FP16 / BF16 提速,同时避免数值下溢 | NaN 和溢出需要监控 |
| Checkpoint / Rollback | 训练中断或训崩 | 保留可恢复状态,支持回退 | 要保存优化器状态,不只是模型权重 |
| 症状 | 可能原因 | 优先检查 | 常见处理 |
|---|---|---|---|
| Loss 突然变 NaN | 学习率过大、混合精度溢出、坏数据、梯度爆炸 | 最近 batch、gradient norm、loss scale、数据异常 | 降低学习率、加 clipping、跳过坏 batch、恢复 checkpoint |
| Loss 不下降 | 学习率太小、数据/标签错、模型没有梯度、冻结层错误 | 梯度是否为 0、参数是否更新、样本标签 | 检查训练管线、调大学习率、验证 loss 实现 |
| Loss 剧烈震荡 | 学习率过大、batch 太小、数据分布跳变 | batch 方差、LR 曲线、数据 shard | 降 LR、增 batch、梯度累积、数据重采样 |
| 训练集好,验证集差 | 过拟合、数据泄漏、训练分布偏窄 | train / eval gap、重复样本、评测集污染 | 正则化、早停、数据去重、增强验证集 |
| 某些任务突然退化 | 灾难性遗忘、多任务 loss 权重失衡、偏好数据过强 | 分任务 eval、数据混合比例、checkpoint 对比 | 调 loss 权重、混入保持集、降低训练强度 |
| 吞吐下降或显存飙升 | batch、序列长度、激活保存、分布式配置变化 | 显存账本、profile、sequence length 分布 | 梯度检查点、序列裁剪、并行策略调整 |
总 loss 会把很多问题平均掉。真正有用的是分任务、分数据源、分长度、分语言、分难度和分安全样本的曲线。大模型训练越大,越要把指标拆细。
| 阶段 | 主要目标 | 稳定性重点 | 相邻页面 |
|---|---|---|---|
| 预训练 | 从海量数据中学习通用统计结构 | 数据混合、学习率计划、分布式数值稳定、checkpoint 恢复 | 预训练数据 |
| SFT | 让模型按指令和格式回答 | 数据质量、过拟合、格式稳定、不要破坏基础能力 | 后训练 / 对齐机制 |
| 偏好优化 | 让 chosen 比 rejected 更符合目标 | 偏好口径、KL 约束、奖励过拟合、拒答边界 | 微调 / 对齐 |
| RLHF / RLVR | 通过奖励塑造行为或可验证能力 | 奖励黑客、策略坍塌、探索成本、验证器覆盖 | 强化学习 / 环境反馈 |
| 蒸馏 / 压缩 | 把能力迁移到小模型或低精度模型 | 学生模型过拟合教师风格、关键能力退化、长尾质量下降 | 模型压缩 / 端侧 AI |
| 证据节点 | 必须记录的字段 | 用来定位什么 |
|---|---|---|
| 优化状态 | run_id、step、optimizer_name、lr、betas、weight_decay、scheduler_phase | 异常是否来自学习率、优化器配置、warmup / decay 阶段或恢复状态? |
| 梯度健康 | gradient_norm、update_norm、nan_inf_flag、clip_event、layerwise_norms | loss 尖峰、训练发散、某层不更新或数值溢出从哪里开始? |
| 数据健康 | batch_id、shard_id、sample_hashes、length_distribution、bad_sample_flag | 异常 step 是否由坏样本、分布切换、超长样本或数据重复触发? |
| 系统状态 | gpu_util、memory_peak、throughput_tokens_s、checkpoint_event、resume_id | 训练慢、吞吐下降或恢复后 loss 漂移是否来自系统层? |
| 能力影响 | eval_snapshot_id、regression_slice、before_after_delta、rollback_checkpoint | 训练稳定性问题是否已经转化成能力退化或发布风险? |
如果说神经网络页解释一次训练更新的基本闭环,Scaling 页解释能力如何随规模增长,那么本页解释训练为什么能稳定进行、怎样诊断训崩、以及 loss、优化器和学习率如何共同决定模型最终学到什么。它是理解预训练、SFT、偏好优化和大规模训练工程之间共同机制的一层底座。