原贴链接

今年我开始更多地涉足大型语言模型(LLMs),找资源一直很容易,因为我们能找到将所有内容整理到一处的博客,但仅仅理解模型架构并不足以完全掌握这些模型是如何训练的。由于我找不到任何一处包含近期架构实现的代码,所以我自己写了一个。这个项目的目的是帮助任何对Transformer架构有基本理解,但想要从头开始用近期架构变化来训练自己模型的人(我会沿途附上资源和我自己的笔记)。所以这个项目是我训练一个小型语言模型(即39M参数模型)的尝试,这个模型可以很好地对话。它在2个A100上用约80亿个词元训练了大约2.5小时。我计划把所有东西都包含在这个项目里!现在它包含一个类似Llama的基本架构:用RMSNorm代替LayerNorm;用旋转位置嵌入代替绝对位置嵌入;用SwiGLU激活函数代替ReLU;用分组查询注意力代替多头注意力;实现了KV缓存。待办事项包括:使用监督微调(SFT)和直接偏好优化(DPO)进行微调;添加混合专家(MoE)架构;还有很多。如果有人愿意为这个项目做贡献就太好了。项目地址:https://github.com/CohleM/lilLM

讨论总结

原帖作者介绍自己正在进行一个训练39M参数小语言模型的项目,包括项目目标、已有的架构以及待办事项等内容。评论者们的讨论围绕这个项目展开,有人推荐预训练数据集和相关论文,有人分享自己训练小模型的经历,还有人从学习角度表达对项目的喜爱,也有人针对项目中的技术细节(如MoE架构)进行探讨、提问并给出建议,同时也有关注模型性能、训练成本、在特定硬件上的训练时长等方面的讨论,整体氛围积极正面。

主要观点

  1. 👍 推荐tiny stories和pints - 1.5数据集用于预训练小模型。
    • 支持理由:这两个数据集能让使用者在消费级硬件(如3090)上仅用几个小时就训练30M参数的模型,有助于测试新想法。
    • 反对声音:无
  2. 🔥 肯定原帖作者的项目并分享自己训练小模型的耗时情况。
    • 正方观点:原帖项目是很好的尝试,自己训练32M小模型花费数周才达到“可用”状态。
    • 反方观点:无
  3. 💡 对原帖中关于MoE架构提出假设性问题。
    • 有人提出如果制作一个6x39M的MoE会发生什么情况,并询问是否有用,引发后续关于MoE相关内容的延伸讨论。
  4. 👍 认可原帖作者的项目成果并建议创建小博客用于学习。
    • 支持理由:有助于他人按时间顺序学习项目相关内容。
    • 反对声音:无
  5. 🔥 关注模型性能表现并对训练成本表示认可。
    • 正方观点:看到训练成本仅6 - 7美元认为不错,询问模型性能,预训练输出样本在README里且还不算差,SFT后会更具对话性。
    • 反方观点:无

金句与有趣评论

  1. “😂 对于像那样的玩具模型预训练,我推荐tiny stories用于研发和pints - 1.5用于实际技能。”
    • 亮点:明确推荐了两个实用的数据集,为有类似需求的人提供了参考。
  2. “🤔 Great initiative! Keep it up!”
    • 亮点:简单直接地对原帖作者的项目表示肯定和鼓励。
  3. “👀 I’ve also trained a tiny model ([32M](https://huggingface.co/Felladrin/Minueza - 32M - Base)), but it took several weeks to get it "usable".”
    • 亮点:分享了自己的训练经历,为原帖作者提供了一个对比参考。
  4. “😎 Hmm what happens if you make a 6x39M MoE for example. Would that even be useful?”
    • 亮点:针对原帖中的MoE架构提出有趣的假设性问题,引发更多讨论。
  5. “👍 this is nice, thanks for that!”
    • 亮点:表达对原帖项目的认可和感谢,态度积极。

情感分析

总体情感倾向为积极正面。主要分歧点较少,评论者们大多对原帖作者的项目表示认可、鼓励或者提供建设性的建议。可能的原因是原帖项目是关于训练小模型,在这个领域内大家都比较包容且乐于分享知识和经验,并且原帖作者的项目具有一定的创新性和学习价值。

趋势与预测

  • 新兴话题:可能会出现更多关于如何针对特定任务对小模型进行微调的讨论,以及关于模型架构选择背后原理的深入探讨。
  • 潜在影响:对小模型训练领域的初学者有一定的启发作用,可能会吸引更多人参与到小模型训练的项目中来,推动小模型相关技术的发展。

详细内容:

标题:自主训练 39M 语言模型引发的 Reddit 热议

今年,有人在 Reddit 上分享了自己训练 39M 语言模型的经历,此帖获得了众多关注,吸引了大量评论。原帖作者表示,尽管寻找资源容易,但理解模型架构并训练模型并非易事,所以自己创建了项目,旨在帮助那些对 Transformer 架构有基础了解、想从零开始训练模型并了解最新架构变化的人,还提供了资源和笔记。目前,项目包括了一些特定的架构,如 RMSNorm 代替 LayerNorm 等,未来还计划加入更多内容。

讨论焦点主要集中在以下几个方面:

  • 有人推荐了用于训练这类小型模型的数据集,如 tiny stories 和 pints-1.5,并提到相关论文可用于选择最优超参数。
  • 有用户分享了自己训练小型模型的经历,如花费数周时间训练 32M 模型,但尚未成功,仍在努力。
  • 有人提出有趣的想法,比如使用 GH200 能更高效。
  • 对于模型的性能、训练时间和成本等也有诸多探讨。比如,有人询问与 GPT2 模型相比表现如何,训练在 RTX 3090 上所需的时间等。

有人认为,对于小型模型,最佳的对比参考是 SmolLM2 - 135M 。还有人对模型架构的选择提出疑问,希望作者能进一步解释为何选择某些架构,以及能否针对特定任务进行微调。也有人建议创建博客以便更好地学习。

总之,这次关于训练 39M 语言模型的讨论十分热烈,大家从不同角度提供了见解和经验,为相关领域的探索和学习提供了有价值的参考。