项目简介
MiniMind 是一个轻量级的大语言模型项目,让用户可以在个人设备上快速训练和运行GPT模型。该项目可以使用极小的数据和计算资源,在3小时内训练出一个26M的模型,使大模型技术使用更加简单。MiniMind 支持单机单卡和多卡训练,兼容多个流行的框架,并提供完整的代码和文档支持,帮助初学者和研究者快速上手并进行定制和扩展。
大语言模型(LLM)领域,如 GPT、LLaMA、GLM 等,虽然它们效果惊艳, 但动辄10 Bilion庞大的模型参数个人设备显存远不够训练,甚至推理困难。 几乎所有人都不会只满足于用Lora等方案fine-tuing大模型学会一些新的指令, 这约等于在教牛顿玩21世纪的智能手机,然而,这远远脱离了学习物理本身的奥妙。 此外,卖课付费订阅的营销号漏洞百出的一知半解讲解AI的教程遍地, 让理解LLM的优质内容雪上加霜,严重阻碍了学习者。
因此,本项目的目标是把上手LLM的门槛无限降低, 直接从0开始训练一个极其轻量的语言模型。
Tip:(截至2024-9-17)minimind训练了3个型号模型,最小仅需26M(0.02B),即可具备流畅的对话能力!
模型 (大小) | tokenizer长度 | 推理占用 | release | 主观评分(/100) |
---|---|---|---|---|
minimind-v1-small (26M) | 6400 | 0.5 GB | 2024.08.28 | 50' |
minimind-v1-moe (4×26M) | 6400 | 1.0 GB | 2024.09.17 | 55' |
minimind-v1 (108M) | 6400 | 1.0 GB | 2024.09.01 | 60' |
该分析在一个带有Torch 2.1.2、CUDA 12.2和Flash Attention 2的RTX 3090 GPU上运行。
项目包含:
- 公开MiniMind模型代码(包含Dense和MoE模型)、Pretrain、SFT指令微调、LoRA微调、DPO偏好优化的全过程代码、数据集和来源。
- 兼容
transformers
、accelerate
、trl
、peft
等流行框架。 - 训练支持单机单卡、单机多卡(DDP、DeepSpeed)训练。训练过程中支持在任意位置停止,及在任意位置继续训练。
- 在Ceval数据集上进行模型测试的代码。
- 实现Openai-Api基本的chat接口,便于集成到第三方ChatUI使用(FastGPT、Open-WebUI等)。
希望此开源项目可以帮助LLM初学者快速入门!
MiniMind现在总共有5个模型,最小的是26M,已经有不错的对话能力了。
训练步骤
1.环境配置:首先设置Python环境,安装如PyTorch等必要的库。
2.数据准备:下载并预处理训练所需的文本数据,例如从网上获取文本,然后使用提供的脚本进行数据清洗和格式化。
项目作者已经给大家准备好了一些标注好的数据,大家可以直接下载试用
3.模型配置:选择或调整模型的配置,如模型大小和训练参数等。
4.模型训练:使用提供的训练脚本开始训练。根据计算资源,可以调整批量大小和学习率等参数。
5.模型评估与推理:训练完成后,评估模型的性能并使用推理脚本进行测试,查看生成的文本质量。
注意:本文训练步骤只讲述的大体流程,具体的训练步骤可以到Github一步一步跟着做。
项目链接
https://github.com/jingyaogong/minimind
演示地址:
Streamlithttps://s5k.cn/api/v1/studio/gongjy/minimind/streamlit/