我想分享一下从头开始预训练小模型的一些经验。我已经写了一个教程(包含代码和检查点)供大家参考:[https://medium.com/@gupta.aman/pre - training - logs - entry - 1 - training - a - smol - llama - from - scratch - 04e4b5d4c5f7](https://medium.com/@gupta.aman/pre - training - logs - entry - 1 - training - a - smol - llama - from - scratch - 04e4b5d4c5f7)。以下是我的一些经验总结:1. 基本方法并不复杂,而且是很好的学习经历。例如,有很多有趣的工具/库,像Huggingface的datatrove(https://github.com/huggingface/datatrove),如果只进行后训练(数据集规模小很多)我就不会接触到这些。除了大规模标记化(我用它做这个),它还有很多数据管理管道,将来肯定有用。2. 虽然在本地硬件上创建最先进的(SoTA)模型有点难,即使是最小的模型,但使用类似3090的硬件也能学到很多。例如,让我惊喜的是,模型能完美学习一段文本(在3090上训练一分钟就能运行)。我对未来的记忆实验感兴趣(例如,大型语言模型(LLM)能记住莎士比亚吗?),考虑到数据集的规模,对于1B以内的模型大小,使用3090来做是完全可行的。3. 这些年来出现了很多有趣的架构工作。对我来说最有趣的是MobileLLM研究,它表明使用较小的嵌入大小但更多的层数(如32层)比层数较少的更宽模型更好(例如GPT - 2 135M只有12层)。我怀疑记忆也会受到这个决策的影响,这是我想研究的内容。4. 当涉及到数据集时,我真的很想尝试创新,比如用我过去20年的邮件来训练模型。以前,我会说这是一个很小的数据集,模型不会有用。但现在通过这次实践,我深信只要在一个狭窄的领域内,并且期望在该领域内使用模型,小数据集也可以用于预训练。对我来说,这就是整个本地大型语言模型(LLM)运动的意义所在——我们想要掌控LLM技术,让它为我们服务,我们不怕调整技术来制作我们自己的本地LLM。
讨论总结
原帖作者分享预训练小模型的经验和教程,评论者大多持积极态度,如赞赏作者工作很棒、感谢分享等。部分评论者还围绕教程展开交流,也有分享自己的预训练经历,或提出技术改进的想法、询问技术相关问题等。整体讨论氛围积极,大家对预训练小模型这一话题比较关注。
主要观点
- 👍 写出教程会使帖子热门
- 支持理由:有助于更多人理解预训练小模型相关内容
- 反对声音:无
- 👍 原帖作者分享的内容很棒并值得感谢
- 正方观点:作者分享预训练小模型的经验很有价值
- 反方观点:无
- 👍 认可在消费级GPU上进行预训练的经历
- 正方观点:这种经历有趣且能学到东西
- 反方观点:无
- 👍 认为教程对相关计划有积极帮助
- 正方观点:有助于做比nanoGPT更严肃的事情
- 反方观点:无
- 🔥 希望尝试用蒸馏Deepseek Qwen1.5 distill提高性能
- 正方观点:可以得到小型可接受模型
- 反方观点:无
金句与有趣评论
- “😂 Would be great if you written down tutorial, that would be popular post.”
- 亮点:表达出对教程的期待以及对帖子热度的预判
- “🤔 The medium article is indeed a tutorial.”
- 亮点:直接指出教程所在之处
- “👀 Awesome work and thank you for sharing.”
- 亮点:简洁地表达对原帖作者的认可与感谢
- “😊 This is so cool, I wanted to do something more serious than a nanoGPT for a while, your tutorial will smooth many things in that aspect!”
- 亮点:体现出对教程的肯定以及自身的相关计划
- “😎 Hey can you perhaps try improve performance by distilling the Deepseek Qwen1.5 distill?”
- 亮点:提出可能的技术改进方向
情感分析
总体情感倾向为积极,大多数评论者都对原帖作者的工作表示认可、赞赏或感谢。主要分歧点较少,可能是因为原帖是分享个人经验和成果,大家更多是基于此进行积极的交流。
趋势与预测
- 新兴话题:探索分布式模型的技术架构。
- 潜在影响:可能促使更多人关注预训练小模型的技术改进和应用,推动小型模型和本地化发展相关领域的探索。
详细内容:
标题:关于预训练小型模型的热门讨论
在 Reddit 上,有一篇关于预训练小型模型的帖子引起了广泛关注。该帖子作者分享了自己从零开始预训练一个 162M 模型的经验,还提供了一份包含代码和检查点的教程链接:https://medium.com/@gupta.aman/pre-training-logs-entry-1-training-a-smol-llama-from-scratch-04e4b5d4c5f7 。帖子获得了众多点赞和评论,引发了热烈的讨论。
讨论的焦点主要集中在以下几个方面:
有人认为如果能写下详细的教程,会更受欢迎。而实际上,文中的 medium 文章就是一份教程。有人分享自己的经历,称点击时出现要求订阅和付费的弹窗,关闭弹窗后仍能阅读。还有人表示自己用旧的 2070 显卡进行了预训练,这是一次很有趣的经历,学到了很多东西,虽然模型不够完美,但看着它生成越来越好的句子,非常愉悦。有人称赞作者的工作很棒,认为作者的教程能让自己在相关方面更加顺利。有人希望作者尝试通过提炼 Deepseek Qwen1.5 来提高性能。也有人认为订阅并保存了这篇精彩的帖子,认为 SLM 和本地模型是未来,但实现起来会很困难,还询问是否存在一种用于推理的具有中央协调器的分布式模型架构。还有人觉得这是非常好的工作,很高兴能进行测试。
在观点分析方面,有人指出文章中有一些性能数据,从 1 到 8 个 GPU 的扩展并非线性,这是由于数据传输瓶颈导致的,预计如此。作者认为应该无需更改就能运行,但还未经过充分测试,愿意合作并解决可能出现的问题。作者还分享个人经历,称 1000 亿个标记的运行花了一天多一点的时间,使用了 8 个 A100(80GB),8 个 A100 的训练花了 1.459 天,根据性能数据,在单个 A100 上训练大约需要 8.33 天。
讨论中的共识在于大家都对预训练小型模型表现出了浓厚的兴趣,并认可作者的分享具有一定的价值。特别有见地的观点如有人提到多年来很多有趣的架构工作已经开展,比如 MobileLLM 研究表明使用较小的嵌入尺寸但更多层的结构可能更好。
总的来说,这次关于预训练小型模型的讨论,让大家对这一领域有了更深入的了解,也激发了更多人探索和创新的热情。
感谢您的耐心阅读!来选个表情,或者留个评论吧!