@vintcessun: 这项目贼离谱——用小孩都能听懂的方式,把 ChatGPT 背后的 GPT 从零手搓了一遍。 每行代码都有注释,12 章 7500 多行,甚至专门讲清楚了 attention 那块我死活没搞懂的细节。 说白了,如果你只想“理解”而不是“调包…
摘要
A 12-chapter interactive textbook that teaches how to build a GPT-like language model from absolute scratch, with fully annotated code and beginner-friendly explanations.
查看缓存全文
缓存时间: 2026/05/26 13:08
这项目贼离谱——用小孩都能听懂的方式,把 ChatGPT 背后的 GPT 从零手搓了一遍。 每行代码都有注释,12 章 7500 多行,甚至专门讲清楚了 attention 那块我死活没搞懂的细节。 说白了,如果你只想“理解”而不是“调包”LLM,这就是现在最友好的实战教程。
https://t.co/x8cRHY4KOW
raiyanyahya/how-to-train-your-gpt
Source: https://github.com/raiyanyahya/how-to-train-your-gpt
🧠 How to Train Your GPT
A guide to building a world-class language model from absolute scratch. Taught like you’re five. Built like you’re an engineer.
I made this with the goal of learning something I didn’t understand completely. Specifically the attention part. I use AI a lot to understand key concepts and verifying them.
📖 What Is This?
This is a 12-chapter, 7,500+ line interactive textbook that teaches you how to build, train and run a modern language model from absolute scratch. The same family of architecture behind ChatGPT, Claude, LLaMA and Mistral.
Alongside the chapters there are 18 standalone topic explainers covering every technique in depth. RoPE, attention, RMSNorm, SwiGLU, KV cache, AdamW, mixed precision and more. Plus two narrative walkthroughs that trace a single sentence through the entire model step by step. Each file follows the same style: child language, no jargon, a code example you can run.
You won’t just read about Transformers. You’ll write every line yourself: tokenizer, embeddings, attention, training loop, inference engine. Every single line annotated to explain what it does and why it’s there.
🤔 Why This Exists
Most ML tutorials fall into one of two traps:
| ❌ Too Shallow | ❌ Too Academic | ✅ This Guide |
|---|---|---|
model = GPT().fit(data) | 40-page papers, dense notation | 5-year-old analogies → full working code |
| You learn to call APIs | Assumes PhD in ML | Zero ML experience required |
| No understanding of internals | No worked examples | Every line annotated with WHAT & WHY |
The goal: After finishing, you won’t just know that attention “works”. You’ll understand the variance argument behind 1/√d_k. How RoPE captures relative position through rotation. Why pre-norm beats post-norm for deep networks. And exactly where every gradient flows during backpropagation.
👥 Who Is This For?
| 🧑💻 You Are… | 📚 You Need… |
|---|---|
| A Python developer curious about how ChatGPT actually works | Basic Python (functions, classes, lists). No ML experience |
| A student who wants to deeply understand Transformers | Willingness to read ~3,500 lines of commented code |
| An engineer evaluating LLM architectures | Understanding of tradeoffs (RoPE vs learned, RMSNorm vs LayerNorm) |
| Someone who got lost at “attention” in other tutorials | Party analogy + worked numeric example with real numbers |
🔧 Prerequisites: Python basics (variables, functions, classes, pip install). That’s it. No calculus, no linear algebra, no PyTorch experience required. We teach those as we go.
🗺️ Chapters
| Chapter | What You’ll Learn |
|---|---|
| 0: Overview | What is a GPT? The big picture |
| 1: Setup | Install tools, GPU vs CPU, venv, PyTorch basics |
| 2: Tokenization | BPE walkthrough: how “unbelievably” becomes tokens |
| 3: Embeddings | How numbers become meaning. king − man + woman = queen |
| 4: Positional Encoding | RoPE: why LLaMA rotates vectors, not adds numbers |
| 5: Attention | ⭐ THE CORE. Q,K,V, scaling, causal mask, 8-step walkthrough |
| 6: Transformer Block | RMSNorm, SwiGLU, residuals, pre-norm vs post-norm |
| 7: Complete GPT Model | 151M parameter model (with SwiGLU), weight tying, logits explained |
| 8: Training Pipeline | Cross-entropy, backprop, AdamW, cosine warmup, mixed precision |
| 9: Inference | KV cache, temperature, top-k/p, beam search, repetition penalty |
| 10: Full Script | Runnable main.py: everything in one file |
| 11: Glossary | Architecture provenance table, parameter breakdown |
⭐ Start with Chapter 0 and read sequentially. Each builds on the previous.
🏗️ What You’ll Build
| 🧩 Component | 📝 Lines | 💡 What You’ll Understand |
|---|---|---|
| BPE Tokenizer | ~60 | How GPT-4 splits “unbelievably” → “un” + “believ” + “ably” |
| Embeddings | ~30 | How “cat” and “dog” end up near each other in 768D space |
| RoPE | ~70 | Why LLaMA rotates vectors instead of adding position numbers |
| Multi-Head Attention | ~120 | The exact 8-step computation behind every modern LLM |
| Transformer Block | ~50 | Why residual connections are the “gradient highway” |
| Full GPT Model | ~200 | 151M parameter model with SwiGLU, weight tying and pre-norm |
| Training Pipeline | ~250 | AdamW, cosine warmup, mixed precision, gradient accumulation |
| Inference Engine | ~80 | KV cache, temperature, top-k/p, beam search |
💎 ~860 lines of core model code, ~2,600 lines of explanation and diagrams
🏛️ Architecture
This guide implements the latest publicly-documented decoder-only Transformer:
| 🧬 Technique | 📦 Source Model | ⚡ Why It Matters |
|---|---|---|
| RoPE | LLaMA, Mistral, Qwen | Relative position without learned parameters |
| RMSNorm | LLaMA, Mistral, Gemma | 15% faster than LayerNorm, equally effective |
| SwiGLU | PaLM, LLaMA, Gemini | Learns which information to pass or block |
| Pre-Norm | GPT-3, all modern | Stable training at 100+ layers |
| AdamW | GPT-3+ | Better generalization than vanilla Adam |
| BPE | GPT-2/3/4 | Handles any text. Even unseen words and emoji |
| Weight Tying | GPT-2/3 | Saves 30% parameters, improves training signal |
| Mixed Precision | All production LLMs | 2× speed, half memory, same quality |
ℹ️ GPT-4 and Claude architectures are proprietary/undisclosed. This teaches the best publicly-confirmed architecture: what LLaMA 3, Mistral and Qwen 2.5 use.
🚀 Quick Start
# 1. Clone
git clone https://github.com/raiyanyahya/how-to-train-your-gpt.git
cd how-to-train-your-gpt
# 2. Create environment
python -m venv gpt_env
source gpt_env/bin/activate # Mac/Linux
# gpt_env\Scripts\activate # Windows
# 3. Install dependencies (CPU version. For GPU see below)
pip install torch tiktoken datasets numpy matplotlib --index-url https://download.pytorch.org/whl/cpu
# Or use the requirements file
pip install -r requirements.txt
# 4. Verify GPU (optional but recommended)
python -c "import torch; print(f'CUDA: {torch.cuda.is_available()}')"
# 5. Start reading!
open chapters/00_overview.md
Run the training script:
python main.py
This uses the tiny config (d_model=256, 4 layers) by default. Training takes a few minutes on CPU. For the GPT-2 scale config (151M params, 768 dims, 12 layers), edit the config in main.py and uncomment the larger configuration.
💻 The default config uses a tiny model (d_model=256, 4 layers, 17M params) that runs in minutes on CPU. For the full GPT-2 scale (151M params, 768 dims, 12 layers), edit the config in
main.pyand uncomment the larger configuration. You’ll need a GPU for that one.
📓 Jupyter Notebooks
Alongside the textbook, each chapter has a companion notebook you can run live. These strip away the explanations and give you pure, clean code that executes from top to bottom. If the textbook teaches you why, the notebooks let you see it happen.
We’re going to run this whole project on a very small dataset so you can watch training happen in minutes rather than weeks. Every notebook is self-contained. Open it, run all cells and you’ll see the model learn in real time.
# Install everything you need
pip install jupyter tiktoken torch numpy datasets matplotlib --index-url https://download.pytorch.org/whl/cpu
# Start with chapter 2 (tokenization)
jupyter notebook notebooks/02_tokenization.ipynb
Notebooks live in the notebooks/ directory, one per chapter. Open any of them and hit Cell → Run All.
📚 Topic Explainers
Each concept in this guide has a dedicated deep dive inside explanations and examples WIP/. These are written in the simplest possible language. No jargon. No formulas before analogies. Every explainer covers what, where, why, when and how with a code example you can run.
The last two files are narrative walkthroughs. A Token’s Journey follows one sentence through the entire model. The Complete Story covers every component across 22 parts. Read these after the chapters to see how everything connects.
| Topic | File | What It Covers |
|---|---|---|
| RoPE | rope.md | How word order is encoded through rotation |
| Attention | attention.md | Step by step with a 3-token worked example |
| BPE Tokenization | bpe_tokenization.md | How text becomes tokens |
| Embeddings | embeddings.md | How numbers become meaning |
| RMSNorm | rmsnorm.md | Simpler faster normalization |
| SwiGLU | swiglu.md | The gated activation that beat ReLU |
| Causal Masking | causal_masking.md | No peeking at the future |
| Residual Connections | residual_connections.md | The gradient highway |
| KV Cache | kv_cache.md | Making generation fast |
| Sampling | sampling.md | Temperature, top-k, top-p |
| Mixed Precision | mixed_precision.md | Speed without sacrifice |
| AdamW | adamw.md | The optimizer that trains LLMs |
| Weight Tying | weight_tying.md | Two jobs one matrix |
| Gradient Clipping | gradient_clipping.md | Preventing training explosions |
| Cosine Warmup | cosine_warmup.md | The learning rate schedule |
| Pre-Norm | pre_norm.md | Where to normalize |
| 📖 A Token’s Journey | a_tokens_journey.md | Follow one sentence through every layer |
| 📖 The Complete Story | the_complete_story.md | The full narrative: 22 parts, 7800 words |
📖 How to Read
Each chapter follows the same 4-step structure:
| Step | Format | Purpose |
|---|---|---|
| 1️⃣ Analogy | Plain English, 5-year-old level | Build intuition before math |
| 2️⃣ Worked Example | Real numbers traced through | See exactly what happens |
| 3️⃣ Annotated Code | Every line: WHAT + WHY | Understand every decision |
| 4️⃣ Diagram | Mermaid flowchart or ASCII | Visualize data flow |
💡 Tip: Lost in the code? Jump back to the analogy. Confused by the math? Skip to the worked example.
✨ What Makes This Different
| Aspect | 😴 Typical Tutorial | 🔥 This Guide |
|---|---|---|
| Explanation depth | “Attention helps the model focus” | 8-step worked example with real numbers + variance math + causal mask visualization |
| Code comments | Few or none | Every single line: WHAT + WHY |
| Modern techniques | GPT-2 style (2019) | LLaMA 3 style (2024): RoPE, RMSNorm, SwiGLU |
| Training | Uses HuggingFace Trainer | Full custom loop: AdamW, cosine warmup, mixed precision, grad accumulation |
| Inference | model.generate() | Temperature, top-k, top-p, beam search, KV cache explained |
| Target audience | ML engineers | Python developers with zero ML experience |
| Diagrams | None | Mermaid flowcharts + ASCII matrices + worked examples |
🎯 Skills You’ll Gain
- ✅ Explain how GPT-4 tokenizes text using BPE
- ✅ Understand why RoPE, RMSNorm and SwiGLU replaced older techniques
- ✅ Compute attention scores manually for a 3-token sentence
- ✅ Debug a Transformer training loop (loss spikes, flat lines, overfitting)
- ✅ Choose sampling parameters (temperature, top_k, top_p) for different use cases
- ✅ Understand why KV caching is critical for production inference
- ✅ Read modern ML papers with confidence (you’ll recognize every component)
🔮 Next Steps After Finishing
| Experiment | What to Change | What You’ll Learn |
|---|---|---|
| Bigger model | num_layers 12 → 24 | How depth improves reasoning |
| More data | Add BookCorpus, C4, The Pile | Impact of data quality and diversity |
| Flash Attention | Install flash-attn, swap attention | 2-5× faster training, longer context |
| Grouped Query Attention | Set num_kv_heads < num_heads | How Mistral achieves efficient inference |
| LoRA fine-tuning | Add low-rank adapter layers | Customize models without full retraining |
| RLHF / DPO | Add reward model training | How ChatGPT learns to follow instructions |
| KV Cache | Implement persistent key-value storage | 500× faster text generation |
| Mixture of Experts | Route tokens through different FFN experts | How GPT-4 scales to trillions of params |
📁 File Structure
📦 how-to-train-your-gpt/
├── 📄 README.md ← You are here
├── 🐍 main.py ← Runnable training script (clone & run)
├── 📋 requirements.txt ← One command install
├── 📂 chapters/
│ ├── 🏠 00_overview.md ← What is a GPT? Why build one?
│ ├── 🔧 01_setup.md ← Install tools, GPU vs CPU, venv basics
│ ├── 🔪 02_tokenization.md ← BPE walkthrough, EOS tokens, emoji handling
│ ├── 🧊 03_embeddings.md ← How numbers become meaning, king − man + woman
│ ├── 📍 04_positional_encoding.md ← RoPE math, numerical example, theta
│ ├── 🧠 05_attention.md ← ⭐ THE CORE (713 lines). Q,K,V, scaling, causal mask
│ ├── 🧱 06_transformer_block.md ← RMSNorm, SwiGLU, residuals, pre-norm vs post
│ ├── 🏗️ 07_gpt_model.md ← Complete 151M model, weight tying, logits explained
│ ├── 🏋️ 08_training.md ← Cross-entropy, backprop, AdamW, cosine warmup
│ ├── 🎤 09_inference.md ← KV cache, temperature, top-k/p, beam search
│ ├── 📜 10_full_script.md ← About main.py
│ └── 📊 11_glossary.md ← Architecture provenance, parameter breakdown
├── 📓 notebooks/ ← Jupyter notebooks (one per chapter)
│ ├── 🎨 attention_visualized.ipynb ← Watch attention weights in action
│ └── ☁️ colab_train.ipynb ← One-click cloud training on Colab
├── 🎯 fine-tuning/ ← Fine-tuning guide: LoRA, QLoRA, data prep
│ ├── 📄 README.md
│ ├── 01_what_is_finetuning.md
│ ├── 02_lora_explained.md
│ ├── 03_qlora_explained.md
│ ├── 04_data_preparation.md
│ ├── 05_full_finetune.md
│ └── 📓 notebooks/lora_finetune.ipynb
├── 📚 explanations and examples WIP/ ← Standalone explainers (18 topics)
└── 📄 CONTRIBUTING.md
"Any sufficiently explained technology is indistinguishable from magic. Until you build it yourself."
⭐ Star this repo if you found it useful | 🐛 Issues & PRs welcome | 📖 Happy learning!
相似文章
@Xx15573208: 看了很多 Transformer 的文章,能听懂原理,但真正坐下来写代码,完全无从下手。 LLMs-from-scratch 专门解决这个问题:配套《Build a Large Language Model》一书,带你用 PyTorch …
LLMs-from-scratch 是一个 GitHub 仓库,配套《Build a Large Language Model》一书,提供从零用 PyTorch 实现 GPT 的完整代码,涵盖预训练、微调、RLHF 等全流程,已获 93K+ stars,适合想深入理解大模型原理的开发者。
@realCaigu: AI 教授 Michael Wooldridge 用 97 分钟,拆解了几乎所有 ChatGPT 神话。 ChatGPT 不是在思考,只是极贵的自动补全。 如果尝试用 AI 内容反复训练 AI, 会导致整个系统的崩塌,所谓的安全护栏也只是…
AI教授 Michael Wooldridge 用 97 分钟视频拆解了 ChatGPT 的神话,指出 ChatGPT 只是昂贵的自动补全,并非真正思考;反复用 AI 内容训练 AI 会导致系统崩塌,安全护栏也只是技术版胶带。
@VincentLogic: 一个 /teach 干翻我三年学习方法 学东西这件事我经历了三个阶段 最早就是啃文档。白皮书、官方 spec,一页页翻,翻到第三章开始走神,翻到第五章已经忘了第一章讲啥。但没办法,那时候只有这条路 后来大模型出来了,不懂的概念丢给 Cha…
作者分享了使用Claude Code的/teach技能进行学习的新方法,认为AI引导学习相比传统啃文档和追问ChatGPT更高效,能自动规划课程并生成交互式课件。
@Gracker_Gao: AI 论文:强AI写代码的方式不是写代码 最近两篇arXiv论文揭示了一个反直觉发现:GPT-5.4和Claude Opus 4.6遇到陌生编程语言时,根本不直接写目标语言代码——而是写Python程序来生成目标代码,再本地调试。这种"元…
最近两篇arXiv论文发现,GPT-5.4和Claude Opus 4.6在处理陌生编程语言时采用元编程策略(用Python生成目标代码并本地调试),而非直接编写目标语言代码。这一策略是区分顶级和普通agent的关键,且策略精巧度比模型参数规模更重要。
@yibie: 推荐这个 repo,从零构建 GPT 风格 transformer,不用任何高级库。13M 参数就能产出语法正确的文本,在免费 Colab 的 T4 上一天就能训完。 从零训练自己的 LLM:13M 参数的 GPT 实现 Akshay 分…
推荐了一个从零构建GPT风格Transformer的GitHub仓库,无需高级库,13M参数即可在免费Colab上训练一天,生成语法正确的文本。