开源 · 实战 · 从零开始

从零训练一个大语言模型

基于 MiniMind 项目,用约 4600 行代码,完整走一遍现代大语言模型的训练全流程。 不依赖任何黑盒框架,每一行代码都看得见、改得动、跑得通。

11 章 互动教程
4600+ 行源码精讲
64M 参数模型
# 完整训练流程,只需 9 条命令
python trainer/train_tokenizer.py
python trainer/train_pretrain.py
python trainer/train_full_sft.py --from_weight pretrain
python trainer/train_lora.py --from_weight full_sft
python trainer/train_distillation.py ...
python trainer/train_dpo.py --from_weight full_sft
python trainer/train_grpo.py --from_weight full_sft
python trainer/train_ppo.py --from_weight full_sft
python trainer/train_agent.py --from_weight full_sft

# 启动对话
python eval_llm.py --weight full_sft

训练全流程

从分词到部署,每一步都亲手实现。点击任意阶段跳转到对应教程。

全部章节

按顺序学习,或跳到你最感兴趣的阶段。每章都是自包含的交互式幻灯片。

0

Python 与深度学习基础

阅读本项目代码所需的一切前置知识:Python 语法、PyTorch 核心概念、必要的数学基础。

Python PyTorch 前置准备
1

Tokenizer 分词器

文本如何变成数字?BPE 算法、词表构建、Chat Template 对话格式化——连接人类语言与机器语言的第一座桥。

核心 BPE 词表 6400
2

模型架构

逐行读懂 model_minimind.py —— 287 行代码浓缩 Transformer、RoPE、GQA、KV-Cache、MoE 全部精华。

核心 Transformer 287行
3

预训练 Pretraining

Next Token Prediction —— 让模型阅读大量文本,学会"根据前文预测下一个字"。这是所有 LLM 的基础能力。

核心 交叉熵 余弦LR
4

监督微调 SFT

把预训练模型微调为对话模型。关键技巧:Label Masking —— 只在 assistant 回答的部分计算 loss。

核心 对话能力 Label Mask
5

LoRA 参数高效微调

只训练 4% 的参数,就能获得接近全量微调的效果。低秩分解旁路的原理与实现。

参数高效 低秩分解 4%参数
6

知识蒸馏

用大模型(教师)的输出分布来指导小模型(学生)训练。温度缩放暴露"暗知识"。

教师-学生 KL散度 温度T
7

DPO 偏好优化

不需要奖励模型,直接用偏好数据(好/差回答对)对齐模型。Bradley-Terry 模型实战。

核心 偏好对齐 β=0.15
8

GRPO 与 PPO 强化学习

RLHF 的两种主流算法:GRPO 用组内相对优势简化训练;PPO 用 Actor-Critic 架构精确优化。

进阶 GAE Rollout
9

Agent 工具调用

训练模型学会使用外部工具——计算器、天气查询、翻译。多轮 Rollout + 工具执行模拟。

进阶 Tool Call 多轮交互
10

模型推理与部署

训练好的模型如何变成可用的服务:命令行对话、OpenAI 兼容 API、Web 聊天界面。

FastAPI 流式输出 格式转换