训练容灾及训练监控
训练容灾与监控策略优化指南
元数据
- 分类:机器学习/深度学习
- 标签:训练监控、Loss Spike、困惑度、模型优化
- 日期:2023年10月29日
核心观点总结
在深度学习模型训练中,监控和优化是提高模型性能的关键。本文从训练容灾、Loss监控、困惑度(Perplexity)分析等方面,探讨了如何通过细致的观察和调整策略来优化模型性能,避免训练过程中的潜在问题。
核心内容解析
监控 Loss 和 Spike
-
Loss 分开监控
对于不同类别的数据(如中文知识、英文知识、代码),需要分别监控Loss值,以便发现异常。 -
Loss Spike(毛刺现象)
Loss突然激增或激减可能是数据问题的信号,例如脏数据或乱码。虽然目前尚无研究证明Loss Spike对模型有不可逆的损害,但避免其发生始终是更优的选择。- ⚠ 注意:高Loss可能由乱码数据引起,低Loss可能由全是换行符的数据引起。
困惑度(Perplexity)分析
困惑度是衡量语言模型好坏的重要指标。困惑度越低,说明模型对下一个单词的预测越准确,性能越好。
- 通用语料的困惑度变化规律:
- 初期:先升后降。
- 降低配比数据:可能会有上升趋势。
- 新增领域数据:呈现下降趋势。
💡 启发点:通过随机抽样200个样本作为监控基准,可以有效追踪困惑度的变化。
解决 Loss Spike 的方法
-
✅ 更换Checkpoint
找到出现问题的最近Step,重新训练模型。 -
✅ 减小学习率 $$\epsilon$$ 的大小
从优化器层面减少梯度更新幅度。 -
✅ 浅层梯度缩放
为浅层梯度更新值乘以一个缩放系数,降低梯度更新幅度。 -
✅ 采用WSD训练策略
使用miniCPM提出的WSD(Weight Scaling Decay)训练方法。 -
✅ 引入z-loss正则化
控制Softmax归一化增长,避免梯度爆炸。
常见错误警告
警告区块
- 忽略Loss Spike可能导致模型训练失败。
- 未分开监控不同类别数据的Loss可能遮蔽问题来源。
- 困惑度监控样本过少可能导致误判结果。
行动清单
📈 趋势预测
随着模型规模的不断扩大,训练过程中的异常监控将更加重要。未来可能会出现专门针对超大规模模型的自动容灾与优化工具。
[思考] 延伸问题
- 如何进一步细化Loss和困惑度的监控策略,以适配多语言、多领域数据?
- 是否可以通过自动化手段更高效地定位并修复Loss Spike问题?
- 除了z-loss正则化,还有哪些新型正则化方法可以应用于大规模模型训练?
来源:本文基于GLM130B技术报告及相关资料整理而成。