SkillAgentSearch skills...

Minimind

🚀🚀 「大模型」2小时完全从0训练26M的小参数GPT!🌏 Train a 26M-parameter GPT from scratch in just 2h!

Install / Use

/learn @jingyaogong/Minimind
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center">

logo

</div> <div align="center">

visitors GitHub Repo stars GitHub Code License GitHub last commit GitHub pull request Collection

</div> <div align="center">

GitHub Trend

</div> <div align="center"> <h3>"大道至简"</h3> </div> <div align="center">

中文 | English

</div>
  • 此开源项目旨在完全从0开始,仅用3块钱成本 + 2小时!即可训练出仅为25.8M的超小语言模型MiniMind
  • MiniMind系列极其轻量,最小版本体积是 GPT-3 的 $\frac{1}{7000}$,力求做到最普通的个人GPU也可快速训练。
  • 项目同时开源了大模型的极简结构-包含拓展共享混合专家(MoE)、数据集清洗、预训练(Pretrain)、监督微调(SFT)、LoRA微调、直接偏好优化(DPO)、强化学习训练(RLAIF: PPO/GRPO等)、模型蒸馏等全过程代码。
  • MiniMind同时拓展了视觉多模态的VLM: MiniMind-V
  • 项目所有核心算法代码均从0使用PyTorch原生重构!不依赖第三方库提供的抽象接口。
  • 这不仅是大语言模型的全阶段开源复现,也是一个入门LLM的教程。
  • 希望此项目能为所有人提供一个抛砖引玉的示例,一起感受创造的乐趣!推动更广泛AI社区的进步!

为防止误解,“2小时” 基于NVIDIA 3090硬件设备(单卡)测试,“3块钱”指GPU服务器租用成本,具体规格详情见下文。


<div align="center">

minimind2

🔗🍓推理模型 | 🔗🤖常规模型 | 🔗🎞️视频介绍

<div align="center"> <table> <tr> <td align="center"> <a href="https://huggingface.co/collections/jingyaogong/minimind-66caf8d999f5c7fa64f399e5" style="text-decoration: none;"> <img src="./images/and_huggingface.png" alt="Hugging Face Logo" style="vertical-align: middle; width: auto; max-width: 100%;" /> </a> </td> <td align="center"> <a href="https://www.modelscope.cn/profile/gongjy" style="text-decoration: none;"> <img src="./images/and_modelscope.png" alt="ModelScope Logo" style="vertical-align: middle; width: auto; max-width: 100%;" /> </a> </td> </tr> </table> </div> </div>

📌 Introduction

大语言模型(Large Language Model, LLM)的出现引发了全世界对AI的空前关注。 无论是ChatGPT、DeepSeek还是Qwen,都以其惊艳的效果令人叹为观止。 然而,动辄数百亿参数的庞大规模,使得它们对个人设备而言不仅难以训练,甚至连部署都显得遥不可及。 打开大模型的“黑盒子”,探索其内部运作机制,多么令人心潮澎湃! 遗憾的是,99%的探索只能止步于使用LoRA等技术对现有大模型进行少量微调,学习一些新指令或任务。 这就好比教牛顿如何使用21世纪的智能手机——虽然有趣,却完全偏离了理解物理本质的初衷。 与此同时,第三方的大模型框架和工具库,如transformers+trl,几乎只暴露了高度抽象的接口。 通过短短10行代码,就能完成“加载模型+加载数据集+推理+强化学习”的全流程训练。 这种高效的封装固然便利,但也像一架高速飞船,将开发者与底层实现隔离开来,阻碍了深入探究LLM核心代码的机会。 然而,“用乐高拼出一架飞机,远比坐在头等舱里飞行更让人兴奋!”。 更糟糕的是,互联网上充斥着大量付费课程和营销号,以漏洞百出、一知半解的内容推销AI教程。 正因如此,本项目初衷是拉低LLM的学习门槛,让每个人都能从理解每一行代码开始, 从零开始亲手训练一个极小的语言模型。是的,从零开始训练,而不是仅仅进行推理! 最低只需3块钱不到的服务器成本,就能亲身体验从0到1构建一个语言模型的全过程。 一起感受创造的乐趣吧!

[!NOTE] (截至2025-10)MiniMind系列已完成多个型号模型的预训练,最小仅需25.8M(0.02B),即可具备流畅对话能力!

<details style="color:rgb(128,128,128)"> <summary>Models List</summary>

| 模型 (大小) | 推理占用 (约) | Release | |-------------------------|----------|------------| | MiniMind2-small (26M) | 0.5 GB | 2025.04.26 | | MiniMind2-MoE (145M) | 1.0 GB | 2025.04.26 | | MiniMind2 (104M) | 1.0 GB | 2025.04.26 | | minimind-v1-small (26M) | 0.5 GB | 2024.08.28 | | minimind-v1-moe (4×26M) | 1.0 GB | 2024.09.17 | | minimind-v1 (108M) | 1.0 GB | 2024.09.01 |

</details>

项目包含

  • MiniMind-LLM结构的全部代码(Dense+MoE模型)。
  • 包含Tokenizer分词器详细训练代码。
  • 包含Pretrain、SFT、LoRA、RLHF-DPO、RLAIF(PPO/GRPO/SPO)、模型蒸馏的全过程训练代码。
  • 收集、蒸馏、整理并清洗去重所有阶段的高质量数据集,且全部开源。
  • 从0实现预训练、指令微调、LoRA、DPO/PPO/GRPO/SPO强化学习,白盒模型蒸馏。关键算法几乎不依赖第三方封装的框架,且全部开源。
  • 同时兼容transformerstrlpeft等第三方主流框架。
  • 训练支持单机单卡、单机多卡(DDP、DeepSpeed)训练,支持wandb/swanlab可视化训练流程。支持动态启停训练。
  • 在第三方测评榜(C-Eval、C-MMLU、OpenBookQA等)进行模型测试,支持YaRN算法执行RoPE长文本外推。
  • 实现Openai-Api协议的极简服务端,便于集成到第三方ChatUI使用(FastGPT、Open-WebUI等)。
  • 基于streamlit实现最简聊天WebUI前端。
  • 全面兼容社区热门llama.cppvllmollama推理引擎或Llama-Factory训练框架。
  • 复现(蒸馏/RL)大型推理模型DeepSeek-R1的MiniMind-Reason模型,数据+模型全部开源!

希望此开源项目可以帮助LLM初学者快速入门!

👉更新日志

<details close> <summary> <b>2025-10-24</b> </summary>
  • 🔥 新增RLAIF训练算法:PPO、GRPO、SPO(从0原生实现)
  • 新增断点续训功能:支持训练自动恢复、跨GPU数量恢复、wandb记录连续性
  • 新增RLAIF数据集:rlaif-mini.jsonl(从SFT数据随机采样1万条);简化DPO数据集,加入中文数据
  • 新增YaRN算法:支持RoPE长文本外推,提升长序列处理能力
  • Adaptive Thinking:Reason模型可选是否启用思考链
  • chat_template全面支持Tool Calling和Reasoning标签(<tool_call><think>等)
  • 新增RLAIF完整章节、训练曲线对比、算法原理折叠说明
  • SwanLab替代WandB(国内访问友好,API完全兼容)
  • 规范化所有代码 & 修复一些已知bugs
</details> <details close> <summary> <b>2025-04-26</b> </summary>
  • 重要更新
  • 如有兼容性需要,可访问🔗旧仓库内容🔗
  • MiniMind模型参数完全改名,对齐Transformers库模型(统一命名)。
  • generate方式重构,继承自GenerationMixin类。
  • 🔥支持llama.cpp、vllm、ollama等热门三方生态。
  • 规范代码和目录结构。
  • 改动词表<s></s>-><|im_start|><|im_end|>
为兼容第三方推理框架llama.cpp、vllm,本次更新需付出一些可观代价。
本次更新不再支持「直接」加载25-04-26以前的旧模型进行推理。
由于Llama位置编码方式与minimind存在区别,导致映射Llama模型后QK值存在差异
MiniMind2系列旧模型均经过权重映射+(微调训练)QKVO线性层校准恢复而来。
本次更新后将放弃对`minimind-v1`全系列的维护,并在仓库中下线。
</details> <details close> <summary> <b>2025-02-09</b> </summary>
  • 迎来发布以来重大更新,Release MiniMind2 Series。
  • 代码几乎全部重构,使用更简洁明了的统一结构。 如有旧代码的兼容性需要,可访问🔗旧仓库内容🔗
  • 免去数据预处理步骤。统一数据集格式,更换为jsonl格式杜绝数据集下载混乱的问题。
  • MiniMind2系列效果相比MiniMind-V1显著提升。
  • 小问题:{kv-cache写法更标准、MoE的负载均衡loss被考虑等等}
  • 提供模型迁移到私有数据集的训练方案(医疗模型、自我认知样例)。
  • 精简预训练数据集,并大幅提升预训练数据质量,大幅缩短个人快速训练所需时间,单卡3090即可2小时复现!
  • 更新:LoRA微调脱离peft包装,从0实现LoRA过程;DPO算法从0使用PyTorch原生实现;模型白盒蒸馏原生实现。
  • MiniMind2-DeepSeek-R1系列蒸馏模型诞生!
  • MiniMind2具备一定的英文能力!
  • 更新MiniMind2与第三方模型的基于更多大模型榜单测试性能的结果。
</details> <details close> <summary> <b>More...</b> </summary>

2024-10-05

  • 为MiniMind拓展了多模态能力之---视觉
  • 移步孪生项目minimind-v查看详情!

2024-09-27

  • 09-27更新pretrain数据集的预处理方式,为了保证文本完整性,放弃预处理成.bin训练的形式(轻微牺牲训练速度)。
  • 目前pretrain预处理后的文件命名为:pretrain_data.csv。
  • 删除了一些冗余的代码。

2024-09-17

  • 更新minimind-v1-moe模型
  • 为了防止歧义,不再使用mistral_tokenizer分词,全部采用自定义的minimind_tokenizer作为分词器。

2024-09-01

  • 更新minimind-v1 (108M)模型,采用minimind_tokenizer,预训练轮次3 + SFT轮次10,更充分训练,性能更强。
  • 项目已部署至ModelScope创空间,可以在此网站上体验:
  • 🔗ModelScope在线体验🔗

2024-08-27

  • 项目首次开源
</details>

📌 快速开始

<details style="color:rgb(128,128,128)"> <summary>分享本人的软硬件配置(仅供参考)</summary>
  • CPU: Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz
  • RAM: 128 GB
  • GPU: NVIDIA GeForce RTX 3090(24GB) * 8
  • Ubuntu==20.04
  • CUDA==12.2
  • Python==3.10.16
  • requirements.txt
</details>

第0步

git clone https://github.com/jingyaogong/minimind.git

Ⅰ 测试已有模型效果

1.环境准备

pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple

2.下载模型

到项目根目录

git clone https://huggingface.co/jingyaogong/MiniMind2 # or https://www.modelscope.cn/models/gongjy/MiniMind2

(可选)命令行问答

# 使用transformers格式模型
python eval_llm.py --load_from ./MiniMind2

(可选)启动WebUI

# 可能需要`python>=3.10` 安装 `pip install streamlit`
# cd scripts
streamlit run web_demo.py

(可选)第三方推理框架

# ollama
ollama run jingyaogong/minimind2
# vllm
vllm serve ./MiniMind2/ --served-model-name "minimind"

Ⅱ 从0开始自己训练

1.环境准备

pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple
<details style="color:rgb(128,128,128)"> <summary>注:提前测试Torch是否可用cuda</summary>
import torch
print(torch.cuda.is_available())

如果不可用,请自行去torch_stable 下载whl文件安装。参考链接

</details>

2.数据下载

从下文提供的数据集下载链接 下载需要的数据文件(创建./dataset目录)并放到./dataset

<details style="color:rgb(128,128,128)"> <summary>注:数据集须知</summary>

默认推荐下载pretrain_hq.jsonl + sft_mini_512.jsonl最快速度复现Zero聊天模型。

数据文件可自由选择,下文提供了多种搭配方案,可根据自己手头的训练需求和GPU资源进行适当组合。

</details>

3.开始训练

目录位于trainer

<details style="color:rgb(128,128,128)"> <summary>💡 检查点暂停续训</summary>

所有训练脚本均自动保存检查点,只需添加 --from_resume 1 参数即可自动检测加载&恢复训练:

python train_pretrain.py --from_resume 1
python train_full_sft.py --from_resume 1
...

断点续训机制说明:

  • 训练过程自动在 ./checkpoints/ 目录保存完整检查点(模型、优化器、训练进度等)
  • 检查点文件命名:<权重名>_<维度>_resume.pth(如:full_sft_512_resume.pth
  • 支持跨不同GPU数量恢复(自动调整step)
  • 支持wandb训练记录连续性(自动恢复同一个run)

适合长时间训练或不稳定环境,无需担心训练中断导致进度丢失

</details>

3.1 预训练(学知识)

python train_pretrain.py

执行预训练,得到 pretrain_*.pth 作为预训练的输出权重(其中*为模型的dimension,默认为512)

3.2 监督微调(学对话方式)

python train_full_sft.py

执行监督微调,得到 full_sft_*.pth 作为指令微调的输出权重(其中full即为全参数微调)

<details style="color:rgb(128,128,128)"> <summary>注:训练须知</summary>

所有训练过程默认每隔100步保存1次参数到文件./out/***.pth(每次会覆盖掉旧权重文件)。

简单起见,此处只写明两个阶段训练过程。如需其它训练 (LoRA, 蒸馏, 强化学习, 微调推理等) 可参考下文【实验】小节的详细说明。

</details>

4.测试自己训练的模型效果

确保需要测试的模型*.pth文件位于./out/目录下。 也可以直接去此处下载使用我训练的*.pth文件。

python eval_llm.py --weight full_sft # 或 pretrain/dpo/ppo/grpo...
<details style="color:rgb(128,128,128)"> <summary>注:测试须知</summary>

--weight 参数指定权重名称前缀,可选:pretrain, full_sft, dpo, reason, `p

Related Skills

View on GitHub
GitHub Stars41.7k
CategoryDevelopment
Updated16m ago
Forks5.0k

Languages

Python

Security Score

100/100

Audited on Mar 20, 2026

No findings