一天一个开源项目(第231篇):MiniMind —— 花3块钱、2小时,从零训练一个 64M 参数的大语言模型

引言

"大道至简------把一个大语言模型从预训练到强化学习的全链路,用最朴素的 PyTorch 代码跑一遍。"

这是"一天一个开源项目"系列的第 231 篇 。今天的项目是 MiniMind。

现在学习大语言模型,大多数人的路径是:装一下 transformers,十几行代码加载预训练模型、加载数据集、跑推理------确实好用,但这十几行代码背后到底发生了什么,往往成了一个黑箱。transformers/trl/peft 这类框架把开发者和底层实现隔开了,你知道"调用了什么",但未必知道"为什么这样设计"。

MiniMind 想解决的正是这种"知其然不知其所以然"的问题。它用原生 PyTorch 从零实现了 LLM 训练的全部核心算法,把目标定得很极致:"用约 3 块钱成本、2 小时训练时间"训练出一个 6400 万参数的语言模型。这个最小模型大约是 GPT-3 的 1/2700,普通消费级显卡就能跑完整个流程。

更难得的是,这不是一个"玩具级"的教学 Demo------它覆盖了从预训练、SFT、LoRA、DPO,到 RLAIF(PPO/GRPO/CISPO)、Agentic RL、知识蒸馏的完整现代 LLM 训练链路,还延伸出视觉(MiniMind-V)、多模态(MiniMind-O)、扩散模型(MiniMind-dLM)、线性注意力(MiniMind-Linear)等多个衍生分支。

63.4k Stars,Apache-2.0 协议,408 次提交。

你将学到什么

  • MiniMind 如何用原生 PyTorch 实现一个对齐 Qwen3 生态的 Transformer 架构
  • 完整训练链路:预训练 → SFT → LoRA → DPO → RLAIF → Agentic RL → 知识蒸馏
  • "奖励稀疏"问题:为什么小模型做规则奖励强化学习特别容易梯度全零
  • RL 对齐的"alignment tax"现象:工具调用变强了,但开放问答更容易编造
  • 用单张 RTX 3090、约 3 元成本、2 小时训练出一个可用语言模型的具体数字

前置知识

  • 了解 Transformer 架构的基本组成(注意力机制、位置编码、归一化层)
  • 熟悉 PyTorch 基础训练流程
  • 可选:了解 RLHF/DPO/PPO 等大模型对齐技术的基本概念

项目背景

项目简介

MiniMind 在 GitHub 仓库简介里的定位是:"🧠 2小时训练一个64M参数的大语言模型!"。项目的核心理念浓缩成一句话------"大道至简"。它是一个完全从零开始、开源的超小型大语言模型训练项目,目标是让个人用最少的算力,把现代 LLM 训练的完整流程走一遍。

团队与项目信息

  • 作者:jingyaogong
  • 协议:Apache License 2.0
  • 技术栈:原生 PyTorch(项目所有核心算法代码均从 0 实现),兼容 transformers、trl、peft、llama.cpp、vllm、ollama、SGLang、Llama-Factory
  • 衍生项目:MiniMind-V(视觉)、MiniMind-O(多模态)、MiniMind-dLM(扩散模型实验)、MiniMind-Linear(线性注意力实验)

项目数据

  • ⭐ GitHub Stars:63,400+
  • 🍴 Forks:8,200+
  • 👀 Watchers:285
  • 📄 协议:Apache-2.0
  • 📊 提交次数:408 Commits

主要功能

解决什么问题

bash 复制代码
主流 LLM 学习路径的问题:
  pip install transformers
  ↓ 十几行代码:加载模型 + 加载数据集 + 推理
  ↑ 确实好用,但底层实现被完全隔离
  ↑ 知道"调用了什么",不知道"为什么这样设计"

MiniMind 的做法:
  用原生 PyTorch 从零实现预训练、SFT、LoRA、DPO、RLAIF 全部核心算法
  ↓ 不依赖 trl/peft 等封装层
  ↓ 用约 3 元成本、2 小时训练时间跑通完整链路
  ↑ 开发者能看到每一个训练阶段的具体实现细节
  ↑ 从"会调用 API"升级为"理解训练链路的每一步"

使用场景

  1. LLM 原理学习

    • 想理解预训练、SFT、DPO、RLHF 具体怎么实现,而不是停留在调用层面
  2. 领域微调实验

    • 项目提供医疗 LoRA 微调示例,展示如何在小模型上做领域适配
  3. 工具调用与 Agentic 能力研究

    • 内置 Agentic RL 训练脚本,研究多轮工具调用场景下的强化学习训练
  4. 低成本模型训练验证

    • 在没有大规模算力的情况下,验证训练流程、调试超参数、测试新的 RL 算法变体
  5. 基准测试参考

    • 作为极小参数量模型的对照基线,研究模型规模与能力的关系

快速开始

安装与推理:

bash 复制代码
git clone --depth 1 https://github.com/jingyaogong/minimind
cd minimind && pip install -r requirements.txt

# 从 ModelScope 或 HuggingFace 下载模型后运行推理
python eval_llm.py --load_from ./minimind-3

从零训练:

bash 复制代码
# 下载数据集文件到 ./dataset 目录后

cd trainer
python train_pretrain.py      # 预训练
python train_full_sft.py      # 全量监督微调

# 多卡训练
torchrun --nproc_per_node N train_xxx.py

部署:

bash 复制代码
# 用 ollama 直接运行
ollama run jingyaogong/minimind-3

# 或用 vllm 部署
vllm serve ...

# 或启动 Streamlit WebUI / OpenAI 兼容 API 服务

核心特性

1. 模型规格一览

模型 参数量 层数 d_model 说明
minimind-3 64M 8 768 Dense 架构
minimind-3-moe 198M-A64M 8 768 4 专家 / Top-1 路由
minimind2-small 26M 8 512 历史版本
minimind2 104M 16 768 历史版本

2. 架构设计

Transformer Decoder-Only,对齐 Qwen3 生态以兼容 transformers/llama.cpp/ollama/vllm:

  • Pre-Normalization + RMSNorm
  • SwiGLU 激活函数
  • RoPE 位置编码,支持 YaRN 长上下文外推
  • 注意力配置:q_heads=8,kv_heads=4,max_position_embeddings=32768,rope_theta=1e6

3. 精简词表

Tokenizer 词表仅 6,400 个 token(对比 Qwen2 的 151,643 或 Llama 3 的 128,000),这是刻意的取舍------在参数量这么小的模型里,词表和输出层占用的参数比例必须压缩到最低。

4. 完整训练链路

阶段 作用
预训练(Pretrain) 大规模文本语料上的下一词预测(无监督)
SFT 多轮对话、工具调用、思维标签格式的监督微调
LoRA 从零实现的参数高效微调(不依赖 peft)
DPO 基于 chosen/rejected 偏好对的偏好优化
RLAIF PPO、GRPO、CISPO 等基于 AI/规则反馈的强化学习
Agentic RL 通过 train_agent.py 进行多轮工具调用训练
知识蒸馏 黑盒蒸馏(教师输出微调)+ 白盒蒸馏(CE+KL 分布匹配)

5. 训练成本实测

配置 耗时 成本
完整流程(pretrain_mini + sft_mini),单张 RTX 3090 约 2.31 小时 约 ¥3.0
MoE 变体 约 3.23 小时 约 ¥4.2
8×H100 缩短至"分钟级" ---

深入剖析

把强化学习算法家族统一到一个视角下

MiniMind 对 RL 训练部分有一个值得关注的设计理念:它没有把 PPO、GRPO、CISPO 当作互相独立的算法分别实现,而是统一成一个视角------所有策略优化(Policy Optimization)算法都是在同一个目标函数上,对策略项、优势项、正则化项做不同设计取舍后形成的自然变体。

objectivec 复制代码
统一视角下的 PO 算法家族:
  策略项(policy term)
  优势项(advantage term)
  正则化项(regularization term)
  ↓
  PPO、GRPO、CISPO 本质上是在这三项上做不同的具体实现选择
  ↑ 不是三套孤立的算法,而是同一套框架的参数化变体

这个设计选择对学习者的价值很直接:理解了这三项各自的设计空间,就能理解整个 RL 对齐算法谱系,而不需要把每个算法当作孤立的黑盒分别记忆。

"奖励稀疏"问题:小模型做 RL 的隐藏陷阱

MiniMind 文档里提到一个很实际的工程教训------用规则/二元奖励对小模型做强化学习,在困难任务上容易出现"奖励稀疏"问题。项目用了一个很形象的比喻:这相当于让一个小学生去做高考数学题。

复制代码
问题场景:
  小模型在困难任务上几乎永远得不到正确答案
  ↓ 规则奖励(答对=1,答错=0)
  ↓ 几乎所有 rollout 都是 0 分
  ↑ 梯度信号全部坍缩为零,策略无法学习

MiniMind 的应对:
  使用连续的奖励模型分数(InternLM2-1.8B-Reward)替代二元规则奖励
  ↑ 即使答案不完全正确,也能提供渐进式的梯度信号
  ↑ 缓解小模型在困难任务上的奖励稀疏问题

这个问题在大模型 RL 训练里往往被忽视,因为大模型本身的任务通过率足够高,规则奖励就能提供足够的梯度信号。但对 64M 这种极小模型来说,奖励稀疏是一个必须显式解决的工程问题------这也是 MiniMind 作为"小模型训练"项目能提供的、大模型项目文档里很少细讲的实战经验。

Agentic RL 的实测提升与"Alignment Tax"

项目给出了一组具体的工具调用对比数据:在 20 道数学工具调用任务上,仅用 SFT 训练的模型得分 12/20(60%),经过 Agent RL 训练后提升到 17/20(85%)。这是一个清晰的量化证据,证明 Agentic RL 训练确实能提升工具调用能力。

但项目同样坦诚地指出了代价------RL 调优后的模型存在"对齐税"(alignment tax)现象:在特定任务(工具调用)上表现更好,但在开放式问答上"更容易编造内容"。换句话说,RL 训练让模型在训练分布内的任务上更可靠,却可能让它在训练分布外的场景里更不可靠。这种坦率的局限性披露,在很多强调"性能提升"的项目文档里是比较少见的。

与同类小型中文 LLM 项目的对比

项目把自己和 baby-llama2-chinese(0.2B)、chatlm-mini-chinese(0.2B)做了直接对比,但选择的是定性的输出对比而非标准化排行榜分数------即展示几个真实问答案例,观察 MiniMind 的输出是否流畅、是否存在事实不一致或重复问题。

维度 baby-llama2-chinese / chatlm-mini-chinese MiniMind
训练链路覆盖 通常止步于预训练+SFT 预训练→SFT→LoRA→DPO→RLAIF→Agentic RL→蒸馏全覆盖
架构对齐 各自独立设计 对齐 Qwen3/Qwen3-MoE 生态,兼容主流推理框架
Agentic 能力 通常不涉及 原生 train_agent.py,支持 GRPO/CISPO 多轮工具调用
训练成本透明度 较少披露具体数字 明确给出单卡 RTX 3090 耗时与人民币成本
局限性披露 较少 主动说明"对齐税"等副作用现象

MiniMind 的差异化不在于"参数量更小"或"分数更高",而在于用最朴素的实现,把现代 LLM 训练链路的每一个阶段都原原本本地跑给你看,包括那些不那么光鲜的工程教训(奖励稀疏、对齐税)。


项目地址与资源

官方资源

相关资源


总结与展望

核心要点回顾

  1. 用原生 PyTorch 彻底打开训练链路的黑箱:不依赖 trl/peft 等封装层,核心算法全部从零实现
  2. 低成本可复现:单张 RTX 3090、约 3 元成本、2 小时训练出可用的 64M 参数模型
  3. 覆盖现代 LLM 训练全链路:预训练→SFT→LoRA→DPO→RLAIF→Agentic RL→知识蒸馏一气贯通
  4. 用统一视角理解 RL 算法家族:PPO/GRPO/CISPO 是同一目标函数在策略/优势/正则化项上的不同取舍
  5. 坦诚披露局限性:主动说明奖励稀疏、对齐税等真实存在的工程问题,而非只展示亮点

适合谁

  • 想深入理解 LLM 训练原理的学习者:不满足于调用 API,想看到预训练到 RL 对齐每一步的具体实现
  • 算力有限的个人开发者/研究者:想在消费级显卡上验证训练流程或测试新的算法变体
  • 做领域微调或 Agentic 应用研究的人:可以直接复用其 LoRA、DPO、Agentic RL 的实现范式
  • 大模型课程的教学者/学员:MiniMind 的代码量和复杂度适合作为教学案例

一句话评价

MiniMind 证明了一件事:理解一个大语言模型是怎么训练出来的,不需要几十张 A100,只需要一张 RTX 3090、3 块钱,和愿意把每一行训练代码看懂的耐心。


欢迎访问 PrimeSkills ------ 一个精心策划的 AI Agent 与技能市场,所有内容均经过真实企业级工作流验证。没有噱头,只有真正有效的东西。

更多实用知识和有趣产品,欢迎访问我的个人主页

相关推荐
揽秀亭长1 小时前
视频转脚本有哪些方法?5种方案技术拆解
人工智能·音视频
冬奇Lab1 小时前
LLM 驱动的自动化测试系列(07):移动端自动化(三)——Mobile-Agent-v3 与自研 GUI-Owl 模型路线
android·人工智能·测试
乃嘿仔1 小时前
AI 热点日报 · 2026-10-08
人工智能·chatgpt
Qyr991 小时前
2026年全球二极管模组行业市场规模全景研判:竞争格局与发展趋势全解析
大数据·人工智能
weixin_177297220691 小时前
从零搭建企业AI知识库:系统架构与核心模块拆解
人工智能·系统架构
IT大白鼠2 小时前
DeepSeek Harness 详解开源插件化 AI Agent 运行时:架构、模式、安装与生态
人工智能·架构·开源
YYYing.2 小时前
【Agent系列 (二) 】大语言模型基础
人工智能·语言模型·自然语言处理·agent
xsd202411182 小时前
步态识别算法全解析:从剪影提取到跨视角身份识别的技术拆解
人工智能
朝朝辞暮i3 小时前
VLA 系统学习第 3 课:从一次机器人示范,到真正送进神经网络的 Batch
人工智能·python·深度学习·神经网络·vla