Andrej Karpathy 的 nanoGPT,本质上是:
一个“极简版 GPT 训练框架”。
项目目标非常直接:
用最少代码,教会你 GPT 到底怎么训练。官方 GitHub:
nanoGPT Github
为什么 nanoGPT 很出名
因为以前很多 GPT 教程都有问题:
- 太理论
- 太抽象
- 工业框架太复杂
- 一堆 HuggingFace 黑盒
而 nanoGPT:
- 只有几百行核心代码
- 真能训练
- 真能跑
- 真能生成文本
- 接近真实 GPT 架构
所以很多人说:
“这是理解 LLM 最好的入门工程。”
nanoGPT 核心特点
1. 极简
整个 GPT 核心:
- model.py
- train.py
基本就结束了。
不像工业代码:
configs/ trainer/ pipeline/ distributed/ kernel/一堆东西。
2. 真正训练 GPT
不是玩具。
它可以:
- 训练 Shakespeare
- 训练中文语料
- 训练小型代码模型
- 多 GPU
- bf16
- compile
- DDP
甚至能训练到:
几十亿 token3. 非常接近现代 LLM
它包含:
- causal attention
- layernorm
- residual
- GELU
- AdamW
- weight tying
- cosine lr schedule
也就是:
现代 GPT 的核心骨架。
nanoGPT 的整体结构
核心就几个文件:
| 文件 | 作用 |
|---|---|
| model.py | GPT 模型 |
| train.py | 训练 |
| sample.py | 推理生成 |
| config/ | 超参数 |
GPT 核心代码
最经典的是 attention:
att=(q @ k.transpose(-2,-1))*(1.0/math.sqrt(k.size(-1)))att=att.masked_fill(self.bias[:,:,:T,:T]==0,float('-inf'))att=F.softmax(att,dim=-1)y=att @ v这里其实就是:
\mathrm{Attention}(Q,K,V)=\mathrm{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
这几行代码就是 GPT 灵魂。
它训练什么
Karpathy 最经典 demo:
Tiny Shakespeare
数据集只有几 MB。
比如:
To be, or not to be...训练后:
KING: What say you, my lord?模型已经会生成莎士比亚风格文本。
为什么这很重要
因为你会第一次真正理解:
GPT 不是“会思考”
而是:
“不断预测下一个 token”
比如:
I love模型预测:
AI you coding本质是概率。
损失函数:
L=-\sum_i y_i\log p_i
也就是 Cross Entropy。
nanoGPT 的学习价值
它最大的价值不是:
“训练一个厉害模型”。
而是:
看懂 GPT 每一层到底干了什么。
很多人:
- 会调 API
- 会 LangChain
- 会 Agent
但:
不知道 attention 到底怎么算nanoGPT 会把这个黑盒拆开。
nanoGPT 会让你理解什么
1. 为什么上下文长度贵
因为 attention:
O(n²)上下文翻倍:
显存 ≈ 4倍2. 为什么训练那么烧钱
因为:
token × parameter × FLOPs是天文级。
3. 为什么推理快不了
因为 autoregressive:
一个 token 一个 token 生成不能完全并行。
4. 为什么 KV Cache 重要
否则每次都重新算 attention。
nanoGPT 和 CS336 的关系
其实:
CS336 很大程度上就是“nanoGPT 工业加强版”。
nanoGPT:
教学版 GPTCS336:
OpenAI infra 模拟器nanoGPT 适合谁
特别适合:
- 想转 LLM infra
- 想懂 Transformer
- 想做 AI 投研
- 想做本地模型
- 想进大模型公司
最推荐的学习方式
顺序建议:
第一阶段
先看:
Andrej Karpathy 的:
- “Let’s build GPT”
- “Neural Networks: Zero to Hero”
YouTube 非常经典。
第二阶段
跑 nanoGPT:
python train.py config/train_shakespeare_char.py第三阶段
自己改:
- 中文 tokenizer
- RoPE
- FlashAttention
- MoE
这时候成长最快。
nanoGPT 最大的意义
它把:
“AI 是魔法”变成:
“AI 是矩阵乘法”这是很多工程师真正入门 LLM 的转折点。