ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

如何读懂Loss曲线与Perplexity?How to Train Your GPT教你5步诊断训练失败原因

如何读懂Loss曲线与Perplexity?How to Train Your GPT教你5步诊断训练失败原因 如何读懂Loss曲线与PerplexityHow to Train Your GPT教你5步诊断训练失败原因【免费下载链接】how-to-train-your-gptBuild a modern LLM from scratch. Every line commented. Explained like we are five.项目地址: https://gitcode.com/gh_mirrors/ho/how-to-train-your-gpt在开源教程How to Train Your GPT从零构建现代LLM、逐行注释、像教5岁小孩一样讲解中Loss曲线与Perplexity困惑度是诊断大模型训练是否成功的两把听诊器。训练失败时与其盲目调参不如看图找病因一条平滑下降的Loss曲线意味着模型在稳步学习而平顶、尖刺、NaN 等异常形态都能直接指向具体原因。本文带你用 5 步法读懂这两个指标快速定位训练失败原因。上图来自 notebooks/08_training.ipynb 运行后的产物loss 从 11 平滑下降到 5.5就是一条健康的训练曲线。第1步看懂Loss曲线——健康曲线长什么样训练时每 50 步记录一次 loss以步数为横轴、loss 为纵轴画图main.py 中的plot_loss正是这么做的。一条健康曲线有三个特征特征说明 前期快速下降模型在学基础规律句号结尾、常见词位置 后期缓慢下降模型在学深层规律主谓一致、代词指代 曲线平滑没有尖刺、没有平台期、没有 NaN以 GPT-2 的 50257 词表为例随机模型的初始 loss 约为10.8即 ln(50257)。只要你的曲线从这个位置开始平滑下滑方向就对了。 想系统学习训练流程与交叉熵损失看 chapters/08_training.md。第2步把Loss换算成Perplexity——让数字说人话Loss 是抽象的Perplexity 是直觉的。换算公式只有一行Perplexity e^loss它的含义是模型此刻相当于在 N 个选项中随机猜测。对照感受一下LossPerplexity模型状态 10.82≈ 50,257完全随机啥也没学会7.0≈ 1,100学到了词频5.0≈ 150学到基础语法3.0≈ 20像模像样的语言模型GPT-1 水平2.0≈ 7.4不错的模型GPT-2 量级1.0≈ 2.7优秀接近前沿小模型比如 loss 从 10 降到 5不只是降了 5 个点而是模型的迷惑程度从 22,000 个选项里乱猜降到了 150 个选项里挑——这是质的飞跃。 详细推导和各量级解读见 explanations and examples WIP/perplexity.md。第3步对照5种异常形态——你的曲线中了哪一枪项目内置的图解文档 explanations and examples WIP/how_to_read_loss.md 总结了 8 种曲线形态新手最常踩的坑是下面 5 种 形态一一条平线loss 纹丝不动loss 永远停在 10.8模型根本没在学习。这几乎 100% 是 bug。 形态二Loss 尖刺突然跳高 2~3 倍某个罕见数据批次让梯度爆炸权重一步迈歪了。单次尖刺通常能自行恢复反复尖刺说明数据或学习率有系统性问题。 形态三平台期降到某值就卡住loss 降到比如 6.5 后怎么训都不动。要么学习率太低模型走不出当前的权重空间要么模型容量耗尽——17M 参数的小模型吃 100MB 数据loss 有天然地板。 形态四训练降、验证升过拟合模型开始背训练集而不是学规律。在验证 loss 开始上涨的拐点及时停训早停或加大力度dropout 0.1→0.2、weight decay 0.1→0.2、换更大更多样的数据。 形态五Loss 归零后变 NaN数值溢出训练已死机。常见于学习率过高或注意力分数忘了除以 √d_k 导致 exp() 溢出。第4步按命中率排查训练失败原因曲线不对劲时按最可能 → 最不可能的顺序排查学习率/优化器是否为 0optimizer.step()是否真的被调用zero_grad()是否在 step之后而非之前梯度为零loss 计算有 bug检查 logits 与 targets 是否错位logits 预测的是下一个 token。数据损坏输入和目标是否相同target 是否全是同一个 token打印几个 batch 看看。学习率过高尖刺 NaN 的组合拳大幅降低学习率并启用梯度裁剪main.py 默认已内置max_norm1.0仍尖刺可降到 0.5。batch 太小曲线呈锯齿状抖动加大 batch size 或用梯度累积本项目默认grad_accum_steps2可试 4 或 8不占额外显存。第5步预防性体检——让曲线一开始就健康诊断不如预防把这几件事做对90% 的失败都不会发生✅始终记录 loss 并画曲线——没有曲线等于闭眼训练有了它多数问题几秒就能定位✅用余弦学习率调度warmup cosine decay代替阶梯式衰减避免 loss 断崖跳变✅上梯度裁剪给梯度爆炸上保险✅混合精度下确保 softmax、LayerNorm 等敏感运算保留在 float32✅同时盯训练与验证 loss用验证 Perplexity 判断泛化永远在模型没见过的数据上计算 延伸阅读资料路径Loss 曲线形态图解8 种形态全覆盖explanations and examples WIP/how_to_read_loss.mdPerplexity 深度解读explanations and examples WIP/perplexity.md训练管线章节chapters/08_training.md可运行的完整训练脚本main.py交互式训练 Notebooknotebooks/08_training.ipynb超参数与公式速查表explanations and examples WIP/cheatsheet.md一句话总结Loss 曲线告诉你模型在不在学Perplexity 告诉你学到了什么程度。曲线平滑下降 安心训练出现平线、尖刺、平台、背离、NaN 五种形态之一对照本文 5 步法即可在几分钟内锁定病因。【免费下载链接】how-to-train-your-gptBuild a modern LLM from scratch. Every line commented. Explained like we are five.项目地址: https://gitcode.com/gh_mirrors/ho/how-to-train-your-gpt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表