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

中文 | 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">

📌 Introduction
大语言模型(Large Language Model, LLM)的出现引发了全世界对AI的空前关注。 无论是ChatGPT、DeepSeek还是Qwen,都以其惊艳的效果令人叹为观止。 然而,动辄数百亿参数的庞大规模,使得它们对个人设备而言不仅难以训练,甚至连部署都显得遥不可及。 打开大模型的“黑盒子”,探索其内部运作机制,多么令人心潮澎湃! 遗憾的是,99%的探索只能止步于使用LoRA等技术对现有大模型进行少量微调,学习一些新指令或任务。 这就好比教牛顿如何使用21世纪的智能手机——虽然有趣,却完全偏离了理解物理本质的初衷。 与此同时,第三方的大模型框架和工具库,如transformers+trl,几乎只暴露了高度抽象的接口。 通过短短10行代码,就能完成“加载模型+加载数据集+推理+强化学习”的全流程训练。 这种高效的封装固然便利,但也像一架高速飞船,将开发者与底层实现隔离开来,阻碍了深入探究LLM核心代码的机会。 然而,“用乐高拼出一架飞机,远比坐在头等舱里飞行更让人兴奋!”。 更糟糕的是,互联网上充斥着大量付费课程和营销号,以漏洞百出、一知半解的内容推销AI教程。 正因如此,本项目初衷是拉低LLM的学习门槛,让每个人都能从理解每一行代码开始, 从零开始亲手训练一个极小的语言模型。是的,从零开始训练,而不是仅仅进行推理! 最低只需3块钱不到的服务器成本,就能亲身体验从0到1构建一个语言模型的全过程。 一起感受创造的乐趣吧!
<details style="color:rgb(128,128,128)"> <summary>Models List</summary>[!NOTE] (截至2025-10)MiniMind系列已完成多个型号模型的预训练,最小仅需25.8M(0.02B),即可具备流畅对话能力!
| 模型 (大小) | 推理占用 (约) | 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强化学习,白盒模型蒸馏。关键算法几乎不依赖第三方封装的框架,且全部开源。
- 同时兼容
transformers、trl、peft等第三方主流框架。 - 训练支持单机单卡、单机多卡(DDP、DeepSpeed)训练,支持wandb/swanlab可视化训练流程。支持动态启停训练。
- 在第三方测评榜(C-Eval、C-MMLU、OpenBookQA等)进行模型测试,支持YaRN算法执行RoPE长文本外推。
- 实现Openai-Api协议的极简服务端,便于集成到第三方ChatUI使用(FastGPT、Open-WebUI等)。
- 基于streamlit实现最简聊天WebUI前端。
- 全面兼容社区热门
llama.cpp、vllm、ollama推理引擎或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
- 重要更新
- 如有兼容性需要,可访问🔗旧仓库内容🔗。
- 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与第三方模型的基于更多大模型榜单测试性能的结果。
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 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
第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下
默认推荐下载pretrain_hq.jsonl + sft_mini_512.jsonl最快速度复现Zero聊天模型。
数据文件可自由选择,下文提供了多种搭配方案,可根据自己手头的训练需求和GPU资源进行适当组合。
</details>3.开始训练
目录位于trainer
所有训练脚本均自动保存检查点,只需添加 --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
<details style="color:rgb(128,128,128)"> <summary>注:训练须知</summary>执行监督微调,得到
full_sft_*.pth作为指令微调的输出权重(其中full即为全参数微调)
所有训练过程默认每隔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
node-connect
325.6kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
80.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
325.6kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
80.2kCommit, push, and open a PR
