【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 的转折点。

相关推荐
AI医影跨模态组学2 小时前
Int J Surg华中科技大学同济医学院附属协和医院:可解释机器学习模型预测胰腺癌早期复发:整合瘤内瘤周影像组学及身体成分分析
人工智能·机器学习·论文·医学·医学影像·影像组学
wuxinyan1232 小时前
工业级大模型学习之路019:LangChain零基础入门教程(第二篇):LLM 模块与模型抽象
人工智能·python·学习·langchain
龙侠九重天2 小时前
Embedding 模型深度使用——语义搜索与聚类
人工智能·深度学习·数据挖掘·大模型·llm·embedding·聚类
闭关修炼啊哈2 小时前
[IdeaLoop · 灵感回路] AI时代独立开发者·创业/副业灵感日报 · 2026-05-20 晚报
人工智能
L、2182 小时前
CANN 通信库 HCCL 实战:昇腾多卡训练时 AllReduce 为什么卡在这个地方?
人工智能·安全
@蔓蔓喜欢你2 小时前
CSS 变量:样式开发的新维度
人工智能·ai
BJ_bafangonline2 小时前
Houdini 与 AI 的深度融合:从合成数据生成到机器学习训练的全流程解析
人工智能·机器学习·houdini
__log2 小时前
AI 全栈应用从 0 到 1 落地指南
人工智能
AskHarries2 小时前
为什么大多数人创业第一步就错了
人工智能·后端