在当今大语言模型(LLM)迅速发展的背景下,MiniMind 项目应运而生,旨在为研究者和开发者提供一个简单易用的框架,使他们能够从零开始训练自己的语言模型。这个项目的核心理念是降低学习和使用 LLM 的门槛,让更多人能够参与到这一领域的探索与创新中。
项目概述
MiniMind 是一个极其轻量的语言模型,最小版本仅为 26.88MB,其体积约为 GPT- 3 的 1 /7000。这一设计使得即使是普通个人 GPU 也能快速进行推理和训练。MiniMind 不仅提供了完整的模型结构,还涵盖了数据集清洗、预处理、监督预训练、有监督指令微调(SFT)、低秩自适应(LoRA)微调及无奖励强化学习直接偏好对齐(DPO)的全阶段代码。
目标与愿景
本项目的目标是让每个人都能轻松上手 LLM。通过提供详细的教程和示例代码,MiniMind 希望能够激发更多的研究者和开发者对 LLM 领域的兴趣,并推动相关技术的发展。
模型架构与性能
MiniMind 系列目前已完成三个型号模型的预训练:
- minimind-v1-small: 26MB,6400 个 token,推理占用 0.5GB
- minimind-v1-moe: 4×26MB,6400 个 token,推理占用 1.0GB
- minimind-v1: 108MB,6400 个 token,推理占用 1.0GB
这些模型在具有 Torch 2.1.2、CUDA 12.2 和 Flash Attention 2 的环境下进行了测试,以确保其性能稳定。
环境要求
作者运行 MiniMind 的硬件和软件环境:
- CPU: Intel Core i9-10980XE
- 内存: 128GB
- 显卡: NVIDIA GeForce RTX 3090 (24GB) * 2
- 操作系统: Ubuntu 20.04
- Python 版本: Python 3.9 或更高
- PyTorch 版本: PyTorch 2.1.2
- CUDA 版本: CUDA 12.2
快速开始指南
要快速开始使用 MiniMind,用户可以按照以下步骤进行:
- 克隆项目代码:git clone https://github.com/jingyaogong/minimind.git
cd minimind - 安装依赖:pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
- 测试模型推理效果:确保训练完成的参数权重文件位于
./out/
目录下,然后运行:python 2-eval.py
数据集与训练流程
MiniMind 使用了多种公开数据源进行预训练,包括 Seq-Monkey 通用文本数据集和 SkyPile-150B 数据集。这些数据经过严格筛选和去重,以确保其质量和全面性。
数据处理步骤:
- 下载数据集并放置在
./dataset
目录下。 - 使用
python data_process.py
处理数据集。 - 调整模型参数配置。
- 执行预训练、指令微调及 LoRA 微调等步骤。
模型评估与优化
MiniMind 还实现了基于人类反馈强化学习(RLHF)的直接偏好优化(DPO),旨在提升模型输出质量,使其更符合人类偏好。通过对比不同模型在各种任务上的表现,可以不断优化模型参数和结构。
总结
MiniMind 项目不仅是一个开源语言模型的实现,更是一个入门大语言模型(LLM)的实用教程。希望通过这个项目,能够帮助更多的人快速入门,并对 LLM 领域产生更深刻的理解与探索。