从零训练1B以下小模型,梳理汇总

共 3709字,需浏览 8分钟

 ·

2024-07-10 21:23






以下章来源于微信公众号:Angry Bugs


作者:Angry Bugs


链接:https://zhuanlan.zhihu.com/p/693252663


本文仅用于学术分享,如有侵权,请联系台作删文处理








导读


随着人工智能技术的飞速发展,大语言训练模型作为其中的重要分支,近年来取得了显著的进步。但是在许多资源受限的条件下,需要更小的模型。本文为读者汇总了从零训练的 1B 以下的小模型,以适应不同场景的需求。






最好的学习方式莫过于自己从头做一遍。学习大模型的相关知识以来,一直都想从头自己训练一个 1B 以下的模型,感觉这样才算是真的学过了。不过以手头的资源,也只能玩玩儿迷你的小模型了。最近在网上搜了不少资料,主要是 GitHub 上的仓库和 Arxiv 上的 paper,顺便记录在这里。


https://github.com/karpathy/nanoGPT


nanoGPT 是 karpathy 大神写的 GPT-2 最小实现。麻雀虽小,五脏俱全。GPT-2 是大模型的鼻祖,很多论文都以 nanoGPT 为基础魔改或者作为 baseline。nanoGPT 共有 0.1B 到 1.5B 四个大小不同的版本。


训练 GPT-2 的文章有很多,虽然有些比较老的,但是也值得参考,列举一些我觉得不错的:




  • https://www.kaggle.com/code/pritishmishra/gpt-training-on-wikipedia-dataset-from-scratch



  • https://zhuanlan.zhihu.com/p/79714797



  • https://zhuanlan.zhihu.com/p/606339093



  • https://finisky.github.io/2020/05/01/pretrainchinesegpt/



  • https://zhuanlan.zhihu.com/p/656758138



  • https://github.com/minimalist-nlp/gpt2-text-generation



tinyllama


Llama 的一个迷你版,花了 90 天,用了 16 个 A100-40G。和 Llama 完全相同的架构,可以无缝替换。


https://github.com/EleutherAI/pythia


这个参数范围更大了,从 14M 开始,一直到 12B,共 10 个不同大小的版本。也是出于学术研究目的,提供了这么多模型。


https://github.com/allenai/OLMo


有 1B 和 7B 两个版本,架构上没什么特色,优点是从训练数据到代码和 Checkpoint,做到了完全开源,而非某些模型的伪开源。


https://github.com/QwenLM/Qwen1.5


阿里出品的大模型,参数最小有 0.5B 的。看网上的评价,应该是中文这块做的最好的大模型了。


Phi-1.5


Phi-1 是微软出品的一个 350M 和 1.3B 的模型,使用由大模型合成的「教科书」级别数据,也就是说相比网页数据更优质一些的数据训练,具体可以参见他们的论文 Textbooks are all you need I/II。因为数据质量高,合成也困难,只用了 6B 的数据,在 8 个 A100 上训练了 4 天。


后来又出了一个 Phi-2,2.7B,号称性能达到了 13B 的模型。不过好像没有论文了,模型倒是也在 HF 上。https://huggingface.co/microsoft/phi-2


详细的解读可以参考这篇文章:https://zhuanlan.zhihu.com/p/690423105


这里还有网友做的中文版:https://github.com/charent/Phi2-mini-Chinese

OpenELM



Apple 出品的一组模型,从0.27B到3B不等,应该是冲着移动端的模型去的,还没仔细看。


下面再介绍一些网友的项目,可能更实际一些。




  • https://github.com/charent/ChatLM-mini-Chinese 从零开始训练的一个 0.2B 中文模型,用的 T5,可能比较早了。



  • https://github.com/jiahe7ay/MINI_LLM 从零开始训练的一个 1.4B 中文模型,基于 Qwen。可以参考作者的知乎文章:https://zhuanlan.zhihu.com/p/684946331



  • https://github.com/DLLXW/baby-llama2-chinese 基于 llama2 的中文模型,作者目标是 0.5B,但是貌似受硬件限制,只训练到了 0.2B 的模型。



  • https://github.com/OpenBMB/MiniCPM 2.7B 的参数,号称能跟 Mistral-7B 不相上下,感觉有点吹得过了……



  • https://github.com/Chinese-Tiny-LLM/Chinese-Tiny-LLM 一个 2B 的模型,貌似还没训练完。



  • https://github.com/keeeeenw/MicroLlama 又一个 0.3B 版 llama,相当于 TinyLlama 的再缩小版



  • https://github.com/zhanshijinwat/Steel-LLM 网友的又一个预训练计划,貌似还没开始






最后,再罗列一些小模型训练相关的技巧和资源:




  • 一本书《Build a LLM from scrath》,还没写完,但是 GitHub 上已经有 13k star 了,可能是不错吧。



  • 这个 Awesome Chinese LLM 罗列了一些数据集,也值得参考。



  • 还有一篇叫做 MobileLLM 的 paper,介绍了一些训练小模型的 trick。



  • Llama from scratch,这篇文章介绍了 Llama 中一些关键的组件的影响。



  • Rethinking Optimization and Architecture for Tiny Language Models,解读:https://zhuanlan.zhihu.com/p/681614203



  • MNBVC:Massive Never-ending BT Vast Chinese corpus 超大规模中文语料集



  • RedPajama,Llama 的 dataset 重现
















浏览 176
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报