3.4 训练监控与调试


3.4 训练监控与调试

本节摘要:训练不是"点了就跑、跑完看结果",而是"边跑边看、实时干预"。本节讲清监控什么(损失、学习率、梯度、显存)、怎么看训练曲线、常见异常怎么排查,以及"问题定位三步法"。

你能学到什么

阅读完本节,你应当能够:

  1. 说出训练监控的核心指标
  2. 读懂常见训练曲线
  3. 识别并排查训练异常
  4. 用问题定位三步法调试
  5. 建立"边训边看"的工程习惯

一、问题与直觉

训练脚本跑着,你的注意力应该在哪里?盯四个指标:损失(在不在降)、学习率(是否按计划)、梯度范数(是否爆炸)、显存(会不会 OOM)。这四个指标就像汽车仪表盘——不盯着开,爆胎了才知道。

二、核心原理

2.1 四个核心监控指标

指标 看什么 异常信号
训练损失 是否下降 不降/上升
验证损失 是否过拟合 先降后升
梯度范数 训练稳定性 突然暴涨
显存占用 资源边界 接近上限

2.2 常见训练曲线

  • 健康:训练验证同步平稳下降,收敛后趋于稳定
  • 过拟合:训练降但验证升——加正则或早停
  • 震荡:损失上下剧烈跳——学习率太大或批次太小
  • 平台:损失迟迟不降——学习率太小或数据有问题

三、工程实践要点

3.1 问题定位三步法

第一步 看损失曲线:判断是收敛问题还是过拟合问题 第二步 查数据与配置:数据格式对吗?学习率对吗? 第三步 小规模复现:用最小样本复现,快速验证修复

💡 关键直觉:大部分训练异常在"小规模复现"这一步就能定位——用 100 条数据跑一轮,几秒钟出结果,比在大规模上干等快得多。

3.2 常见异常排查表

异常 可能原因 优先排查
损失 NaN 学习率过大/数据有 NaN 检查数据、降学习率
损失不降 学习率太小/数据错 调大学习率、查数据
显存 OOM 批次太大/模型太大 降批次、用 LoRA
验证不升 过拟合/评估错误 加正则、查评估集
训练超慢 数据加载瓶颈 检查数据加载器

3.3 显存 OOM 的处理顺序

第一步 降批次大小 第二步 用梯度累积(等效大批次) 第三步 降精度(fp16/bf16) 第四步 换参数高效方法(LoRA)

⚠️ 常见坑:OOM 就加大机器不是首选。按上面顺序先软件优化,多数场景降批次加梯度累积就能解决——省钱也省事。

3.4 监控工具与习惯

简单:训练脚本里每步打印指标 中阶:用可视化工具看训练曲线 习惯:每轮存档检查点,出问题能回滚

检查点(checkpoint) 是训练的"存档点"——每轮保存模型权重,训练中断或效果变差时回滚到最近的存档,不用重跑。

3.5 一次"loss 不降"的完整排查

把前面的监控手段串成一个实战场景:你第一次微调,训练到第 10 轮,训练损失几乎不动,验证损失也不动。按下面的排查顺序走:

第 1 步 看数据:打印一个 batch 的 input_ids 与 label,确认 tokenizer 没把标签当成输入、padding 是否正确 第 2 步 看梯度:梯度范数是否为 0(模型被冻结?)或 NaN(学习率过大) 第 3 步 看学习率:warmup 是否生效,实际 lr 是否真的在 1e-5 量级 第 4 步 看损失数值:如果 loss 从一开始就是恒定常数,多半是 标签配错或 loss 计算方式错误 第 5 步 最小复现:用 10 条数据、1 个 batch 跑通,排除代码 bug

90% 的"loss 不降"不是优化器问题,而是数据与代码问题:标签错位、padding 错、模型被意外冻结。所以排查顺序永远是"先数据、后代码、再超参"——用最小复现把变量一个个隔离,比盯着曲线空想高效得多。这也是 3.4 节强调梯度范数要进日志的原因:它把"数据错"(梯度正常但 loss 高)和"代码错"(梯度为 0 或 NaN)一眼区分开。

本节速览

  • 要点一:四指标——损失、学习率、梯度、显存
  • 要点二:四种曲线——健康、过拟合、震荡、平台
  • 要点三:问题定位三步——看曲线、查配置、小规模复现
  • 要点四:OOM 先软件优化,再考虑加大机器
  • 要点五:检查点 = 存档点,出问题能回滚
  • 要点六:边训边看,别跑完才看结果

第 3 章完结。第 4 章看实战——图像、NLP、跨领域、工业界四大案例。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U