Star 数:48.4K+ 最简洁、高效的 GPT 训练与微调仓库,300 行代码实现中等规模 GPT nanoGPT 是 Andrej Karpathy 推出的开源项目,旨在提供最简单、最快的从零训练或微调中等规模 GPT 模型的代码库。它基于 PyTorch,重写了 minGPT 以优先性能,适合初学者快速上手 Transformer 架构,同时支持专业级实验,如复现 GPT-2 在 OpenWebText 上的结果。
在大语言模型已经成为时代主流的今天,你可能会好奇:
“GPT 模型到底是怎么从零训练出来的?”
Karpathy 的开源项目 nanoGPT,正是为了回答这个问题。
它不是另一个“玩具模型”,而是一套极简却完整的 GPT 训练模板,提供了从数据、模型结构到训练的全流程,是学习现代大模型工程的最佳入门项目之一。
nanoGPT 是什么?
nanoGPT = 最精简的 GPT 训练与微调框架
能让你在自己的数据上训练出一个微型 GPT(结构接近 GPT-2,但代码极简、可读性极强)。
Karpathy 在 README 里说得很直接:
它的目标是成为“最简单、最快速”的 GPT 训练仓库。
它适合:
- 想理解 Transformer 训练流程的人
- 想在本地用消费级 GPU 训练语言模型的人
- 想搭建自己 LLM 模型或科研原型的人
- 想学习 Karpathy 工程风格的人(结构干净、无复杂依赖)
项目核心功能
nanoGPT 并不是一个“模型 zoo”,它更像是一个教学级的工程模板。
它包含:
1. 数据处理(prepare.py)
- 读取原始文本(如莎士比亚全集)
- 将字符或单词转为 token
- 划分 train / val
- 存成二进制格式,供模型高效加载
特点:简单、透明、不隐藏任何细节。
2. 模型(model.py)
nanoGPT 复现的是一个纯粹的“Decoder-only Transformer”,包含:
- Token embedding
- Position embedding
- 多头自注意力(Multi-head Self-attention)
- MLP 前馈网络
- LayerNorm
- 残差连接
- Masked Attention(实现自回归)
它的代码量非常少,但结构完整,你能亲眼看到 GPT 的关键组件如何组合。
3. 训练脚本(train.py)
支持:
- GPU / 多卡训练
- FlashAttention(可选)
- PyTorch 2.x compile 加速
- 可复现的实验配置
- 日志记录(loss、迭代速度)
你只需:
python train.py config/train_shakespeare_char.py
就能在莎士比亚文本上训练出一个“小 GPT”,并生成“莎士比亚风格对话”。
4. 推理(sample.py)
训练完成后,你可以用:
python sample.py --out_dir=out-shakespeare-char
生成文本。
输出风格会明显带有训练集的特征(比如莎士比亚式的“thou”“thee”语气)。
nanoGPT 这么受欢迎?
因为它有三个关键优势:
1. 代码简洁透明
Karpathy 常说一句话:
“Educational but still useful.”
它不是玩具,而是一个可以实际跑通、但结构极简的现代 GPT 工程。
2. 真正能训练、有工程价值
不是纸上谈兵,你可以:
- 训练 Shakespeare GPT
- 训练你的作文风格 GPT
- 微调成对话模型
- 甚至用于产品原型
3. 是理解更大型 LLM 的跳板
看完 nanoGPT,你会更容易理解:
- GPT-2
- GPT-J
- LLaMA 系列
- Mistral 架构
- FlashAttention 工作原理
特别适合你以后进一步阅读 Transformers from Scratch、nanoLLaMA 等项目。
能用 nanoGPT 做什么?
实际应用非常多:
在你自己的文本上训练一个“小 ChatGPT”
比如:作品集文案、你喜欢的作者语气、学习笔记、公众号文体。
尝试做“小型聊天机器人原型”
在小数据集上微调,让它成为“你的风格助手”。
理解大模型训练全过程
包括:
数据 → Token → Batch → 注意力计算 → loss → 优化 → 推理
在自己的论文或项目中复用工程结构
因为它足够干净,很适合作为科研 baseline。
代码结构简述
仓库主要文件:
nanoGPT/
├── train.py # 训练主脚本
├── sample.py # 推理/生成
├── model.py # GPT 模型定义
├── prepare.py # 数据预处理
├── data/ # 示例数据
└── config/ # 各种训练配置
非常轻量,你几分钟就能读懂整体架构。
总结:一个真正值得“通读源码”的项目
nanoGPT 是那种读一遍源码,你就能搞懂:
- GPT 的内部结构
- 注意力是如何计算的
- 文本数据如何进模型
- 自回归语言模型如何训练
- 如何用极少代码跑通现代 LLM
对你这种喜欢技术、又需要做内容创作的人来说,它非常适合做:
- 博客内容
- 视频解说
- 学习教程
- AI 基础项目模板
GitHub:https://github.com/karpathy/nanoGPT
油管:https://youtu.be/ySZQOiJWMWU