🚀 [从零构建 LLM] 极简大模型训练原理与实践指南。包含 Transformer, Pretraining, SFT 核心代码与对照实验。 | A minimal, principle-first guide to understanding and building LLMs from scratch.
See the code从 0 到 1 深度理解大模型:不是"抄代码手册",而是原理优先的实验室
⚡ 快速开始 • 🗺️ 学习路径 • 📦 模块导航 • 🇬🇧 English README
MiniMind 旨在通过实践帮助开发者深度理解大语言模型(LLM)的训练机制,使用极其简洁的代码和对比实验。它不仅告诉你"怎么做",更通过实验数据向你展示"为什么这样做"。
为什么做这个项目? 通过对比实验理解 LLM 训练中的每一个设计选择。
这是一个模块化的 LLM 训练教程,帮助你理解现代大语言模型(如 Llama、GPT)的训练原理。
核心特点:
基于项目:MiniMind - 从零训练超小语言模型的完整教程
本项目特别为想进入 LLM 领域的同学设计。通过系统学习 LLM 训练原理,你将:
💪 如果你正在准备 LLM 岗位面试,或想深度理解 LLM 训练原理,本项目为你而生! 🚀
运行三个关键实验,理解 LLM 的核心设计选择:
# 1. 克隆仓库
git clone https://github.com/joyehuang/minimind-notes.git
cd minimind-notes
# 2. 创建并激活虚拟环境(需要 Python 3.9+,推荐 3.10/3.11)
python3 -m venv venv # Windows 用户:使用 "python" 而不是 "python3"
source venv/bin/activate # Linux / macOS
# Windows: venv\Scripts\activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 实验 1:为什么需要归一化?
cd modules/01-foundation/01-normalization/experiments
python exp1_gradient_vanishing.py
# 5. 实验 2:为什么使用 RoPE 位置编码?
cd ../../02-position-encoding/experiments
python exp1_rope_basics.py
# 6. 实验 3:Attention 如何工作?
cd ../../03-attention/experiments
python exp1_attention_basics.py
提示:学习模块中的实验只需要 CPU,无需 GPU。完整模型训练需要 NVIDIA GPU(推荐 3090 及以上)。
你将看到:
下一步:阅读 ROADMAP.md 选择你的学习路径
根据时间和目标选择合适的路径:
详细路线图:ROADMAP.md
| 模块 | 核心问题 | 实验数 | 状态 |
|---|---|---|---|
| 01-normalization | 为什么归一化?Pre-LN vs Post-LN? | 2 | ✅ 完成 |
| 02-position-encoding | 为什么选择 RoPE?如何外推长度? | 4 | 🟡 实验完成 |
| 03-attention | QKV 的直觉是什么?为什么多头? | 3 | 🟡 实验完成 |
| 04-feedforward | FFN 存储什么知识?为什么扩张? | 1 | 🟡 实验完成 |
| 模块 | 核心问题 | 状态 |
|---|---|---|
| 01-residual-connection | 为什么残差连接?如何稳定梯度? | 🔜 待开发 |
| 02-transformer-block | 如何组装组件?为什么这个顺序? | 🔜 待开发 |
图例:
详细导航:modules/README.md
每个模块通过实验回答核心问题:
示例:归一化模块
| 配置 | 收敛? | NaN 出现在步数 | 最终 Loss |
|---|---|---|---|
| ❌ NoNorm | 否 | ~500 | NaN |
| ⚠️ Post-LN | 是 | - | 3.5 |
| ✅ Pre-LN + RMSNorm | 是 | - | 2.7 |
结论:Pre-LN + RMSNorm 最稳定 → 现代 LLM 的标准选择
实验 → 直觉 → 理论 → 代码
↓ ↓ ↓ ↓
10 分钟 20 分钟 30 分钟 10 分钟
先运行实验建立直觉,再学习理论理解原理,最后阅读源码掌握实现。
所有实验基于 TinyShakespeare(1MB)或合成数据:
每个模块包含:
01-normalization/
├── README.md # 模块导航
├── teaching.md # 教学文档(Why/What/How 结构)
├── code_guide.md # 源码指南(链接到 MiniMind)
├── quiz.md # 自我评估问题
└── experiments/ # 对比实验
├── exp1_*.py
├── exp2_*.py
└── results/ # 预期输出
文档模板(teaching.md):
欢迎贡献:
提交前请确保:
minimind-notes/
├── modules/ # 模块化教学(新架构)
│ ├── common/ # 公共工具
│ ├── 01-foundation/ # 基础组件
│ └── 02-architecture/ # 架构组装
│
├── docs/ # 个人学习记录
│ ├── learning_log.md # 学习日志
│ ├── knowledge_base.md # 知识库
│ └── notes.md # 索引
│
├── model/ # MiniMind 原始代码
├── trainer/ # 训练脚本
├── dataset/ # 数据集
│
├── README.md # 本文件
├── ROADMAP.md # 学习路线图
└── CLAUDE.md # AI 助手指南
本仓库基于以下项目:
特别感谢 @jingyaogong 开源 MiniMind 项目!
如果这个教程帮助你理解了 LLM 训练,欢迎打赏支持后续内容更新 ❤️
💚 微信支付
|
💙 支付宝
|
打赏后欢迎留言或主动联系我,让对比实验持续做下去!
MIT License - 详见 LICENSE
Python
64.3%
TypeScript
21.0%
Vue
11.9%
CSS
1.2%
Shell
1.1%
🚀 [从零构建 LLM] 极简大模型训练原理与实践指南。包含 Transformer, Pretraining, SFT 核心代码与对照实验。 | A minimal, principle-first guide to understanding and building LLMs from scratch.
See the code从 0 到 1 深度理解大模型:不是"抄代码手册",而是原理优先的实验室
⚡ 快速开始 • 🗺️ 学习路径 • 📦 模块导航 • 🇬🇧 English README
MiniMind 旨在通过实践帮助开发者深度理解大语言模型(LLM)的训练机制,使用极其简洁的代码和对比实验。它不仅告诉你"怎么做",更通过实验数据向你展示"为什么这样做"。
为什么做这个项目? 通过对比实验理解 LLM 训练中的每一个设计选择。
这是一个模块化的 LLM 训练教程,帮助你理解现代大语言模型(如 Llama、GPT)的训练原理。
核心特点:
基于项目:MiniMind - 从零训练超小语言模型的完整教程
本项目特别为想进入 LLM 领域的同学设计。通过系统学习 LLM 训练原理,你将:
💪 如果你正在准备 LLM 岗位面试,或想深度理解 LLM 训练原理,本项目为你而生! 🚀
运行三个关键实验,理解 LLM 的核心设计选择:
# 1. 克隆仓库
git clone https://github.com/joyehuang/minimind-notes.git
cd minimind-notes
# 2. 创建并激活虚拟环境(需要 Python 3.9+,推荐 3.10/3.11)
python3 -m venv venv # Windows 用户:使用 "python" 而不是 "python3"
source venv/bin/activate # Linux / macOS
# Windows: venv\Scripts\activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 实验 1:为什么需要归一化?
cd modules/01-foundation/01-normalization/experiments
python exp1_gradient_vanishing.py
# 5. 实验 2:为什么使用 RoPE 位置编码?
cd ../../02-position-encoding/experiments
python exp1_rope_basics.py
# 6. 实验 3:Attention 如何工作?
cd ../../03-attention/experiments
python exp1_attention_basics.py
提示:学习模块中的实验只需要 CPU,无需 GPU。完整模型训练需要 NVIDIA GPU(推荐 3090 及以上)。
你将看到:
下一步:阅读 ROADMAP.md 选择你的学习路径
根据时间和目标选择合适的路径:
详细路线图:ROADMAP.md
| 模块 | 核心问题 | 实验数 | 状态 |
|---|---|---|---|
| 01-normalization | 为什么归一化?Pre-LN vs Post-LN? | 2 | ✅ 完成 |
| 02-position-encoding | 为什么选择 RoPE?如何外推长度? | 4 | 🟡 实验完成 |
| 03-attention | QKV 的直觉是什么?为什么多头? | 3 | 🟡 实验完成 |
| 04-feedforward | FFN 存储什么知识?为什么扩张? | 1 | 🟡 实验完成 |
| 模块 | 核心问题 | 状态 |
|---|---|---|
| 01-residual-connection | 为什么残差连接?如何稳定梯度? | 🔜 待开发 |
| 02-transformer-block | 如何组装组件?为什么这个顺序? | 🔜 待开发 |
图例:
详细导航:modules/README.md
每个模块通过实验回答核心问题:
示例:归一化模块
| 配置 | 收敛? | NaN 出现在步数 | 最终 Loss |
|---|---|---|---|
| ❌ NoNorm | 否 | ~500 | NaN |
| ⚠️ Post-LN | 是 | - | 3.5 |
| ✅ Pre-LN + RMSNorm | 是 | - | 2.7 |
结论:Pre-LN + RMSNorm 最稳定 → 现代 LLM 的标准选择
实验 → 直觉 → 理论 → 代码
↓ ↓ ↓ ↓
10 分钟 20 分钟 30 分钟 10 分钟
先运行实验建立直觉,再学习理论理解原理,最后阅读源码掌握实现。
所有实验基于 TinyShakespeare(1MB)或合成数据:
每个模块包含:
01-normalization/
├── README.md # 模块导航
├── teaching.md # 教学文档(Why/What/How 结构)
├── code_guide.md # 源码指南(链接到 MiniMind)
├── quiz.md # 自我评估问题
└── experiments/ # 对比实验
├── exp1_*.py
├── exp2_*.py
└── results/ # 预期输出
文档模板(teaching.md):
欢迎贡献:
提交前请确保:
minimind-notes/
├── modules/ # 模块化教学(新架构)
│ ├── common/ # 公共工具
│ ├── 01-foundation/ # 基础组件
│ └── 02-architecture/ # 架构组装
│
├── docs/ # 个人学习记录
│ ├── learning_log.md # 学习日志
│ ├── knowledge_base.md # 知识库
│ └── notes.md # 索引
│
├── model/ # MiniMind 原始代码
├── trainer/ # 训练脚本
├── dataset/ # 数据集
│
├── README.md # 本文件
├── ROADMAP.md # 学习路线图
└── CLAUDE.md # AI 助手指南
本仓库基于以下项目:
特别感谢 @jingyaogong 开源 MiniMind 项目!
如果这个教程帮助你理解了 LLM 训练,欢迎打赏支持后续内容更新 ❤️
💚 微信支付
|
💙 支付宝
|
打赏后欢迎留言或主动联系我,让对比实验持续做下去!
MIT License - 详见 LICENSE
Python
64.3%
TypeScript
21.0%
Vue
11.9%
CSS
1.2%
Shell
1.1%