M8-088M8: ML Systems, Engineering & ResearchResearch: Replication & DebuggingMedium
Mastery:
Research: Replication & Debugging: 如何调试训练不收敛的问题?
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 按序检查数据与标签对齐、损失与任务匹配、学习率过大或过小、初始化与归一化、梯度爆炸或消失、混合精度溢出,并借助损失曲线与梯度范数定位。
📌 Key Takeaways
- •数据与标签——标签对齐、类别平衡、输入归一化、是否有 NaN
- •损失函数——与任务匹配(分类/回归/排序)、是否正确取负与求和
- •学习率——过大导致震荡/发散,过小导致停滞;用 lr 扫描与 warmup
- •初始化与归一化——初始化缩放、BN/LN 位置、残差缩放
- •梯度问题——梯度爆炸(裁剪)、消失(残差/归一化)、混合精度溢出(loss scaling)
📐 Mathematical Derivations
数学机理:<strong>训练不收敛的排查顺序</strong>——(1) <strong>数据与标签</strong>——(a) <strong>标签对齐</strong>——样本与标签是否一一对应(错位导致学不到);(b) <strong>类别平衡</strong>——极端不平衡导致只学多数类;(c) <strong>输入归一化</strong>——未归一化导致尺度差异大、训练不稳;(d) <strong>NaN/Inf</strong>——输入是否含异常值。(2) <strong>损失函数</strong>——(a) <strong>与任务匹配</strong>——分类用交叉熵、回归用 MSE、排序用 pairwise/contrastive;(b) <strong>符号与缩放</strong>——是否取负、是否正确求和/平均;(c) <strong>数值稳定</strong>——log-sum-exp、避免 log(0)。(3) <strong>学习率(lr)</strong>——(a) <strong>过大</strong>——损失震荡、发散、NaN;(b) <strong>过小</strong>——损失下降极慢、停滞在高原;(c) <strong>诊断</strong>——lr 扫描(小范围找合理区间);(d) <strong>对策</strong>——warmup、调度(cosine/step)、梯度裁剪。(4) <strong>初始化与归一化</strong>——(a) <strong>初始化</strong>——缩放不当(过大→爆炸、过小→消失);Xavier/He 初始化;(b) <strong>归一化</strong>——BN/LN/RMSNorm 的位置与作用(稳定分布);(c) <strong>残差</strong>——帮助梯度流动(深层网络);(d) <strong>残差缩放</strong>——深层 Transformer 需要(如 1/sqrt(2L))。(5) <strong>梯度问题</strong>——(a) <strong>爆炸</strong>——梯度范数巨大 → 裁剪(clip by norm/value);(b) <strong>消失</strong>——梯度≈0(深层/饱和激活)→ 残差、归一化、换激活(GELU/SiLU);(c) <strong>诊断</strong>——打印每层梯度范数。(6) <strong>混合精度</strong>——(a) FP16 溢出 → NaN;(b) <strong>对策</strong>——loss scaling(动态缩放);(c) 用 BF16 更稳(范围大)。(7) <strong>超参与架构</strong>——(a) 批大小过大/过小;(b) dropout 过强;(c) 权重衰减过大;(d) 架构不匹配任务。(8) <strong>诊断工具</strong>——(a) <strong>损失曲线</strong>——不降/震荡/发散;(b) <strong>梯度范数</strong>——逐层打印;(c) <strong>参数更新幅度</strong>——更新是否过小/过大;(d) <strong>激活统计</strong>——均值/方差是否漂移;(e) <strong>小规模过拟合测试</strong>——能否记住小数据集(区分实现错误与超参问题)。(9) <strong>决策树</strong>——(a) 损失不降 → 查 lr(先扫描)、损失函数、标签;(b) 损失震荡 → lr 过大、批过小;(c) NaN → lr 过大、混合精度溢出、除零;(d) 训练好但验证差 → 过拟合、数据泄漏、分布差异。<strong>与其他问题的关系</strong>——(a) 与 sanity check;(b) 与复现排查;(c) 与优化器与调度(M3)。<strong>度量</strong>——(a) 损失曲线形态;(b) 梯度范数分布;(c) lr 扫描结果;(d) 是否 NaN。
🏭 Production Trade-offs
深度剖析与工程权衡:① <strong>先查 lr 是最高效的</strong>——lr 过大/过小是最常见原因;面试中能指出这点是深度理解的标志。② <strong>学习率过大震荡、过小停滞</strong>——症状不同需区分。③ <strong>混合精度溢出是隐蔽原因</strong>——需 loss scaling 或改 BF16。④ <strong>梯度范数逐层打印</strong>是有效诊断。⑤ <strong>小规模过拟合测试区分实现错误与超参问题</strong>。⑥ <strong>归一化与残差解决深层梯度问题</strong>。⑦ <strong>面试要点</strong>——被问训练不收敛怎么办,应给出'<strong>查数据与标签 → 查损失 → lr 扫描(过大震荡/过小停滞)→ 初始化与归一化 → 梯度爆炸/消失 → 混合精度溢出 → 诊断工具</strong>';能指出先查 lr 与混合精度溢出是深度理解的标志。
⚠️ Common Interview Pitfalls
- ✕只调学习率不查数据与标签
- ✕忽略混合精度溢出导致的 NaN
🎯 Interviewer Follow-ups
- ?学习率过大与过小分别有什么症状?
- ?为什么深层网络需要归一化或残差?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.