从零训练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 重现

浏览 47
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

分享
举报