Skip to content

MiniMind学习指南

原理 + 实验 + 实践

学习模块

基础组件

01 归一化 (Normalization)

重点: Pre-LN vs Post-LN,为什么需要归一化 时长: 1 小时 | 状态: 完成

开始学习 →


02 位置编码 (Position Encoding)

重点: RoPE 与位置编码的设计选择 时长: 1.5 小时 | 状态: 完成

开始学习 →


03 注意力机制 (Attention)

重点: Q/K/V 的直觉,多头注意力 时长: 2 小时 | 状态: 完成

开始学习 →


04 前馈网络 (FeedForward)

重点: FFN 的设计与 SwiGLU 激活函数 时长: 1 小时 | 状态: 完成

开始学习 →

架构组装

Transformer Block 组装

重点: 将基础组件组装成完整的 Transformer Block 时长: 2.5 小时 | 状态: 开发中

查看架构总览 →

快速开始

30分钟快速体验

通过 3 个关键实验理解核心设计

每个实验只需 5-10 分钟,在 CPU 上即可运行,快速掌握 LLM 训练的核心秘密

步骤 01
5 分钟

为什么需要归一化?

观察梯度消失现象,理解 RMSNorm 如何稳定训练过程

归一化模块
开始实验
步骤 02
10 分钟

为什么用 RoPE?

对比绝对位置编码,理解旋转位置编码在外推性上的优势

位置编码模块
开始实验
步骤 03
5 分钟

为什么需要残差连接?

实验验证深层网络训练的梯度流问题,见证残差连接的威力

残差连接模块
开始实验

运行第一个实验

bash
git clone https://github.com/joyehuang/minimind-notes.git
cd minimind-notes
source venv/bin/activate
bash
# 实验 1:为什么需要归一化?
cd modules/01-foundation/01-normalization/experiments
python exp1_gradient_vanishing.py

# 你将观察到:
# ❌ 无归一化:激活值标准差衰减(梯度消失)
# ✅ RMSNorm:激活值标准差保持稳定
bash
# 阅读教学笔记,了解 Why/What/How
cat modules/01-foundation/01-normalization/teaching.md

学习理念

✅ 原理优先

先跑实验,再读理论。重点理解每个设计选择为什么存在。

🔬 实验驱动学习

每个模块都包含对照实验,回答:"不这样做会怎样?"

💻 低门槛

TinyShakespeare (1MB) 或 TinyStories (10-50MB),CPU 上几分钟即可运行,学习阶段无需 GPU。

相关资源

原项目jingyaogong/minimind

学习路线图Roadmap

可执行示例学习材料

学习笔记学习日志 · 知识库

基于 MiniMind 的学习笔记与实验