MiniMind:从零训练大语言模型全流程实战指南

前言

大语言模型(Large Language Model, LLM)的出现,引发了全球范围内对 AI 的空前关注。无论是 ChatGPT、DeepSeek 还是 Qwen,都以惊艳的效果让人真切感受到这场技术浪潮的冲击力。然而,动辄数百亿参数的模型规模,使得它们对个人设备而言不仅难以训练,甚至连部署都显得遥不可及。

打开大模型的"黑盒子",真正去理解其内部运作机制,本应是一件令人心潮澎湃的事。遗憾的是,绝大多数探索最终都止步于使用 LoRA 等技术对现有大模型做少量微调------这更像是在教牛顿如何使用 21 世纪的智能手机,虽然有趣,却偏离了理解物理本质的初衷。

与此同时,第三方的大模型框架与工具库(如 transformers / trl / peft 等),往往只暴露出高度抽象的接口。只需短短十几行代码,就可以完成"加载模型 + 加载数据集 + 推理 + 强化学习"的全流程训练。这种高效封装固然便利,却也在一定程度上把开发者与底层实现隔离开来。

"用乐高自己拼出一架飞机,远比坐在头等舱里飞行更让人兴奋"

MiniMind 项目应运而生------尽可能降低 LLM 的学习门槛,让每个人都能从理解每一行代码开始,从零开始亲手训练一个极小的语言模型。最低只需不到 3 块钱的服务器成本,就能亲身体验从 0 到 1 构建语言模型的全过程。


一、项目介绍

MiniMind 是一个完全从零开始的开源大语言模型训练项目,仅用 3 块钱成本2 小时训练时间 ,即可训练出规模约为 64M 的超小语言模型。

项目核心特点:

  • 极致轻量:主线最小版本体积约为 GPT-3 的 1/12700,力求让普通个人 GPU 也能快速完成训练与复现
  • 全链路开源:覆盖 MoE、数据清洗、预训练(Pretrain)、监督微调(SFT)、LoRA、RLHF(DPO)、RLAIF(PPO / GRPO / CISPO)、Tool Use、Agentic RL、自适应思考与模型蒸馏等全过程代码
  • 从零实现:所有核心算法代码均从零使用 PyTorch 原生实现,不依赖第三方库提供的高层抽象接口
  • 教程级质量:不仅是一个大模型全阶段开源复现项目,也是一套面向 LLM 入门与实践的教程

模型变体一览:

变体 说明
MiniMind 主线文本语言模型
MiniMind-V 视觉模态模型
MiniMind-O 多模态 Omni 模型
MiniMind-dLM 扩散语言模型
MiniMind-Linear 线性模型

📌 项目地址:https://github.com/jingyaogong/minimind


二、环境准备

2.1 克隆仓库与安装依赖

bash 复制代码
# 克隆仓库
git clone --depth 1 https://github.com/jingyaogong/minimind

# 安装环境
cd minimind
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple

2.2 验证 CUDA 环境

bash 复制代码
python3 -c "import torch; print(torch.version.cuda, torch.cuda.is_available())"

预期输出:

复制代码
12.6 True

⚠️ 请确保 CUDA 可用,后续所有训练步骤均依赖 GPU 加速。


三、数据集下载与准备

从 ModelScope 下载所需数据,放入 ./dataset/ 目录。

下载地址:https://www.modelscope.cn/datasets/gongjy/minimind_dataset/files

3.1 快速复现(最小数据组合)

仅需 3 个文件即可训练出 MiniMind Zero 对话模型(✨ 为推荐必须项):

复制代码
./dataset/
├── pretrain_t2t_mini.jsonl   # 1.2GB ✨ 轻量预训练数据
├── sft_t2t_mini.jsonl        # 1.6GB ✨ 轻量SFT数据
└── rlaif.jsonl               # 24MB  ✨ RLAIF训练数据

3.2 完整复现(所有数据)

复制代码
./dataset/
├── pretrain_t2t.jsonl         # 10GB  完整预训练数据
├── pretrain_t2t_mini.jsonl    # 1.2GB ✨
├── sft_t2t.jsonl              # 14GB  完整SFT数据
├── sft_t2t_mini.jsonl         # 1.6GB ✨
├── dpo.jsonl                  # 53MB  DPO偏好数据
├── rlaif.jsonl                # 24MB  ✨
├── agent_rl.jsonl             # 86MB  Agentic RL数据
└── agent_rl_math.jsonl        # 18MB  数学Agentic RL数据

💡 首次复现建议从最小数据组合开始,训练完成后再考虑使用完整数据集提升效果。


四、预训练(Pretrain)

预训练的目标是让模型学会**"高质量词语接龙"**------从海量文本中学习事实知识、语言模式和上下文统计关系。这是大模型的"通识教育"阶段。

4.1 训练命令

bash 复制代码
cd /data1/minimind/trainer

# 单卡训练
python train_pretrain.py

# 多卡训练(使用 GPU 0~7)
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --nproc_per_node 8 train_pretrain.py

# 带断点续训
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --nproc_per_node 8 train_pretrain.py --from_resume 1

# 开启训练可视化(推荐用 SwanLab,国内友好)
CUDA_VISIBLE_DEVICES=1,2,3,4,5,6,7 torchrun --nproc_per_node 8 train_pretrain.py --use_wandb

4.2 输出与验证

  • 输出权重out/pretrain_768.pth(768 为默认 dimension)
bash 复制代码
# 快速验证
python3 eval_llm.py --weight pretrain
  • 预期效果:模型可以进行文本续写,如输入"为什么天空是蓝色的",能输出合理续写

4.3 训练开销参考(单卡 3090)

数据集 训练时间 费用
pretrain_t2t_mini 约 1.21 小时 约 1.57 元
pretrain_t2t 更长 适合完整复现

4.4 推荐 max_seq_len 设置

数据集 推荐 max_seq_len
pretrain_t2t_mini ≈ 768
pretrain_t2t ≈ 380

五、有监督微调(SFT)

SFT(Supervised Fine-Tuning)让模型学会多轮对话、指令跟随和助手风格。当前主线 SFT 数据已混入 Tool Call 样本,默认 full_sft 即具备基础 Tool Call 能力。

5.1 训练命令

bash 复制代码
cd /data1/minimind/trainer

# 单卡训练
python3 train_full_sft.py

# 多卡训练
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --nproc_per_node 8 train_full_sft.py

# 断点续训
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --nproc_per_node 8 train_full_sft.py --from_resume 1

5.2 输出与验证

  • 输出权重out/full_sft_768.pth
bash 复制代码
# 快速验证
python3 eval_llm.py --weight full_sft
  • 预期效果:模型可以进行多轮对话,回答问题

5.3 训练开销参考(单卡 3090)

数据集 训练时间 费用
sft_t2t_mini 约 1.10 小时 约 1.43 元

六、知识蒸馏(Distillation)

在已 SFT 的权重基础上,用教师模型的分布信号继续训练学生模型(白盒蒸馏)。

bash 复制代码
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --nproc_per_node 8 train_distillation.py

💡 知识蒸馏通过让小模型(学生)学习大模型(教师)的输出分布,而非仅学习硬标签,从而在保持较小参数量的同时逼近大模型的性能。


七、LoRA 微调

参数高效微调(Low-Rank Adaptation),适合垂直场景适配(如医疗、自我认知等)。

7.1 训练命令

bash 复制代码
python3 train_lora.py

7.2 测试 LoRA 模型

bash 复制代码
python3 eval_llm.py --weight full_sft --lora_weight lora_medical

7.3 LoRA 权重合并回基础模型

bash 复制代码
cd scripts && python convert_model.py

八、RLHF --- DPO

基于人类偏好的强化学习对齐(Direct Preference Optimization),使用 dpo.jsonl 数据。

bash 复制代码
cd /data1/minimind/trainer

CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --nproc_per_node 8 train_dpo.py

九、RLAIF --- PPO / GRPO / CISPO

基于 AI 反馈的强化学习,使用 rlaif.jsonl 数据。支持三种算法:

9.1 训练命令

bash 复制代码
cd /data1/minimind/trainer

# GRPO(Group Relative Policy Optimization)
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --nproc_per_node 8 train_rl.py --rl_algorithm grpo

# PPO(Proximal Policy Optimization)
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --nproc_per_node 8 train_rl.py --rl_algorithm ppo

# CISPO(Clipped Importance Sampling Policy Optimization)
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --nproc_per_node 8 train_rl.py --rl_algorithm cispo

9.2 三种 RL 算法对比

算法 全称 特点
GRPO Group Relative Policy Optimization 基于组内相对排名的策略优化,无需单独的价值网络
PPO Proximal Policy Optimization 经典策略梯度算法,稳定性强,应用广泛
CISPO Clipped Importance Sampling Policy Optimization 截断重要性采样策略优化,样本效率更高

十、Agentic RL

多轮 Tool-Use 场景下的 GRPO / CISPO 训练。

bash 复制代码
cd /data1/minimind/trainer

CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --nproc_per_node 8 train_agent_rl.py

十一、测试与推理

11.1 CLI 对话测试

bash 复制代码
python eval_llm.py --weight full_sft

11.2 测试 Tool Call 能力

bash 复制代码
python eval_toolcall.py --weight full_sft

11.3 开启自适应思考

bash 复制代码
python eval_llm.py --weight full_sft --open_thinking 1

11.4 WebUI 演示

bash 复制代码
# 需安装 streamlit
cp -r minimind-3 ./scripts/minimind-3  # 复制模型到 scripts 目录
cd scripts && streamlit run web_demo.py

11.5 OpenAI API 兼容服务

bash 复制代码
python serve_openai_api.py

十二、训练全流程总结

复制代码
┌─────────────┐    ┌─────────┐    ┌──────────┐    ┌─────────────┐
│  预训练      │───▶│   SFT   │───▶│   LoRA   │───▶│  知识蒸馏    │
│  Pretrain   │    │  微调    │    │  垂直适配  │    │ Distillation│
└─────────────┘    └────┬────┘    └──────────┘    └─────────────┘
                        │
                        ▼
               ┌──────────────┐
               │  RLHF (DPO)  │
               │  人类偏好对齐  │
               └──────┬───────┘
                      │
                      ▼
               ┌──────────────┐
               │  RLAIF       │
               │ PPO/GRPO/    │
               │ CISPO        │
               └──────┬───────┘
                      │
                      ▼
               ┌──────────────┐
               │  Agentic RL  │
               │  Tool-Use    │
               │  场景训练     │
               └──────────────┘
相关推荐
万俟淋曦1 小时前
【论文速递】2026年第03周(Jan-11-17)(Robotics/Embodied AI/LLM)
人工智能·ai·机器人·大模型·论文·robotics·具身智能
邵宇然1 小时前
静态图编译优化:基于 Rust 的计算图常量折叠与无效节点剪枝
人工智能
腾讯云开发者1 小时前
从单体 Agent 到群体智能:OpenClaw 背后的分布式 AI 演进
人工智能
腾讯云开发者1 小时前
从 OpenClaw 看消费零售企业 AI 落地的正确姿势
人工智能
良逍Ai出海1 小时前
免费模板搭完独立站后,我用 Codex + Figma 做了自己的页面设计
前端·人工智能·figma
腾讯云开发者1 小时前
OpenClaw 与 Agent 时代的人机交互真相
人工智能
良木661 小时前
第一部分:初识智能体
人工智能
ai_coder_ai1 小时前
在自动化脚本中如何调用大语言模型?
运维·语言模型·自动化
纽格立科技1 小时前
DRM 发射端链路图(下)
前端·人工智能·车载系统·信息与通信·传媒