【CS336导言】nanoGPT

Andrej Karpathy 的 nanoGPT,本质上是:

一个"极简版 GPT 训练框架"。

项目目标非常直接:

text 复制代码
用最少代码,教会你 GPT 到底怎么训练。

官方 GitHub:

nanoGPT Github


为什么 nanoGPT 很出名

因为以前很多 GPT 教程都有问题:

  • 太理论
  • 太抽象
  • 工业框架太复杂
  • 一堆 HuggingFace 黑盒

而 nanoGPT:

  • 只有几百行核心代码
  • 真能训练
  • 真能跑
  • 真能生成文本
  • 接近真实 GPT 架构

所以很多人说:

"这是理解 LLM 最好的入门工程。"


nanoGPT 核心特点

1. 极简

整个 GPT 核心:

基本就结束了。

不像工业代码:

text 复制代码
configs/
trainer/
pipeline/
distributed/
kernel/

一堆东西。


2. 真正训练 GPT

不是玩具。

它可以:

  • 训练 Shakespeare
  • 训练中文语料
  • 训练小型代码模型
  • 多 GPU
  • bf16
  • compile
  • DDP

甚至能训练到:

text 复制代码
几十亿 token

3. 非常接近现代 LLM

它包含:

  • causal attention
  • layernorm
  • residual
  • GELU
  • AdamW
  • weight tying
  • cosine lr schedule

也就是:

现代 GPT 的核心骨架。


nanoGPT 的整体结构

核心就几个文件:

文件 作用
model.py GPT 模型
train.py 训练
sample.py 推理生成
config/ 超参数

GPT 核心代码

最经典的是 attention:

python 复制代码
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。

比如:

text 复制代码
To be, or not to be...

训练后:

text 复制代码
KING:
What say you, my lord?

模型已经会生成莎士比亚风格文本。


为什么这很重要

因为你会第一次真正理解:

GPT 不是"会思考"

而是:

"不断预测下一个 token"

比如:

text 复制代码
I love

模型预测:

text 复制代码
AI
you
coding

本质是概率。

损失函数:

L=-\sum_i y_i\log p_i

也就是 Cross Entropy。


nanoGPT 的学习价值

它最大的价值不是:

"训练一个厉害模型"。

而是:

看懂 GPT 每一层到底干了什么。

很多人:

  • 会调 API
  • 会 LangChain
  • 会 Agent

但:

text 复制代码
不知道 attention 到底怎么算

nanoGPT 会把这个黑盒拆开。


nanoGPT 会让你理解什么


1. 为什么上下文长度贵

因为 attention:

text 复制代码
O(n²)

上下文翻倍:

text 复制代码
显存 ≈ 4倍

2. 为什么训练那么烧钱

因为:

text 复制代码
token × parameter × FLOPs

是天文级。


3. 为什么推理快不了

因为 autoregressive:

text 复制代码
一个 token 一个 token 生成

不能完全并行。


4. 为什么 KV Cache 重要

否则每次都重新算 attention。


nanoGPT 和 CS336 的关系

其实:

CS336 很大程度上就是"nanoGPT 工业加强版"。

nanoGPT:

text 复制代码
教学版 GPT

CS336:

text 复制代码
OpenAI infra 模拟器

nanoGPT 适合谁

特别适合:

  • 想转 LLM infra
  • 想懂 Transformer
  • 想做 AI 投研
  • 想做本地模型
  • 想进大模型公司

最推荐的学习方式

顺序建议:

第一阶段

先看:

Andrej Karpathy 的:

  • "Let's build GPT"
  • "Neural Networks: Zero to Hero"

YouTube 非常经典。


第二阶段

跑 nanoGPT:

bash 复制代码
python train.py config/train_shakespeare_char.py

第三阶段

自己改:

  • 中文 tokenizer
  • RoPE
  • FlashAttention
  • MoE

这时候成长最快。


nanoGPT 最大的意义

它把:

text 复制代码
"AI 是魔法"

变成:

text 复制代码
"AI 是矩阵乘法"

这是很多工程师真正入门 LLM 的转折点。

相关推荐
艾莉丝努力练剑5 小时前
【AI大模型接入SDK】ChatGPT API
网络·c++·人工智能·websocket·网络协议·学习·chatgpt
枫叶林FYL6 小时前
【群体智能集群控制工程实践】第8章 无人机蜂群测试与部署
人工智能·无人机
2601_949950639 小时前
练题簿,把培训从“走过场”变成“真落地”
人工智能·学习·小程序·刷题·小程序推荐
诸神缄默不语11 小时前
备战 AI 出海 DAY 0:海外数据采集
大数据·人工智能
Ysn071912 小时前
YOLO-Master工程:experts.py 专家结构详解与目标检测专家设计启发
人工智能·yolo·目标检测
BingoGo12 小时前
使用 GPT-6 Astra 模型 请立刻更新你的 Skill 与提示词
人工智能
香菜+12 小时前
端侧视频分析 · 架构笔记
人工智能
s1ckrain12 小时前
【论文阅读】A Survey on Vision–Language–Action Models for Embodied AI
论文阅读·人工智能·多模态·具身智能
深圳雨林凯AI12 小时前
图案裂变的“风格归一化“设计思路:主体保得住,画风才拉得齐|雨林凯AI技术笔记
人工智能·笔记
DevNo12 小时前
英文会议转中文纪要,三款AI工具实测体验
人工智能