Writing an LLM from scratch, part 32m -- Interventions: conclusionWriting an LLM from scratch, part 32m -- Interventions: conclusion
<p>Last November, when I finished the main body of "<a href="https://www.manning.com/books/build-a-large-language-model-from-scratch">Build a Large Language Model (from Scratch)</a>", I <a href="/2025
Giles Thomas
归档
分类目录
友情链接
去年11月,在完成《从零开始构建大型语言模型》一书的正文部分后,我给自己设定了一系列后续目标。其中之一就是“亲自训练完整的 GPT-2 基础模型”。
如今,我已完成这段旅程,训练出一个在性能上几乎(如果不是完全)媲美 GPT-2 small 的模型——仅用我自己的机器耗时 44 小时就完成了训练。因此,我认为有必要总结一下整个过程。
12 月份时,我首次尝试训练模型,耗时两天,但结果令人失望:无论是在损失值方面,还是在微调后遵循指令的能力上,都明显不如原始的 GPT-2 模型。
我当时猜测,这种差距很可能是因为原始模型训练时间更长所致。不过我也注意到,在模型和训练流程中可以进行一些干预调整,于是我想这些改动或许会有帮助。
1 月份,我搭建了一套 DDP(分布式数据并行)训练系统,让我无需再等待两天就能快速迭代测试这些干预措施。
2 月份,我从在云端训练一个基准模型开始,随后逐一验证了所有干预方案,最终找到一组能有效降低损失的方法,无论是在云端还是本地环境中都取得了良好效果。
在此过程中,我还深入学习了或巩固了不少机器学习相关概念。按对损失改善程度由低到高排序如下(其中前两项实际上略微恶化了损失):
此外,我还学会了如何将自定义模型上传到 Hugging Face,了解到随机噪声对训练的影响,并对使用 LLM 作为指令微调模型评估者的设置进行了优化改进。
不过在测试指令微调效果时出现了一个小谜团:尽管我的两个模型在损失值上都非常接近 GPT-2 small,其中一个的微调结果也与之相当,另一个却差得很多!这留待日后深入探究吧。
尽管如此,能够用本地机器运行 44 小时就训练出接近 GPT-2 small 性能的模型,依然让我感到非常满足——哪怕仍有差距。基于此积极成果,我将结束这个“干预措施”系列专题,转向此前计划好的另外两项任务,为整个“从零构建 LLM”系列画上句号:
我觉得应该先写附录部分——很快就会发布相关内容。不过我认为重点会是 JAX 的实现,真的很期待!
需要完整排版与评论请前往来源站点阅读。