how-to-train-your-gpt

raiyanyahyaMIT活跃维护

从零手写现代 LLM 的教学项目,逐行注释、用大白话讲解注意力机制与 GPT/Llama 结构,适合想搞懂大模型内部原理的人边看边练。

Build a modern LLM from scratch. Every line commented. Explained like we are five.

暂无版本4,176star +2 / 7 天505fork同步于 2026-11-11 05:36 UTC

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/raiyanyahya/how-to-train-your-gpt.git
cd how-to-train-your-gpt
python -m venv gpt_env
source gpt_env/bin/activate
pip install jupyter tiktoken torch numpy datasets matplotlib --index-url https://download.pytorch.org/whl/cpu
硬件要求按 README 说明

README 未给出具体显存要求;第 1 章讨论 GPU 与 CPU 选择,Quick Start 提供 CPU 版 PyTorch 安装方式,说明可在 CPU 上跑。

需要 CUDA
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

从零手写并训练 LLaMA 3 风格 GPT 的 12 章交互式教程,每行代码都有注释

从零手写现代 LLM 的教学项目,逐行注释、用大白话讲解注意力机制与 GPT/Llama 结构,适合想搞懂大模型内部原理的人边看边练。

核心能力

  • 12 章 7500+ 行,逐行注释手写 tokenizer、注意力、训练与推理
  • 实现 RoPE、RMSNorm、SwiGLU、Pre-Norm 等 LLaMA 3 风格组件
  • 28 篇独立专题讲解,覆盖 KV cache、AdamW、混合精度等
  • 提供 151M 参数完整模型与可运行 main.py 全流程脚本
  • 附 Colab notebook,可按章在浏览器里逐格运行

容易踩的坑

README 中的安装命令被截断,CPU 版依赖需按完整 README 确认;专题讲解位于「explanations and examples WIP」目录,部分内容标注为 WIP 未完成;项目定位为学习用途,不是生产级训练框架。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    🧠 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 28 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 notation5-year-old analogies → full working code
    You learn to call APIsAssumes PhD in MLZero ML experience required
    No understanding of internalsNo worked examplesEvery 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 worksBasic Python (functions, classes, lists). No ML experience
    A student who wants to deeply understand TransformersWillingness to read ~3,500 lines of commented code
    An engineer evaluating LLM architecturesUnderstanding of tradeoffs (RoPE vs learned, RMSNorm vs LayerNorm)
    Someone who got lost at "attention" in other tutorialsParty 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

    ChapterWhat You'll Learn
    0: OverviewWhat is a GPT? The big picture
    1: SetupInstall tools, GPU vs CPU, venv, PyTorch basics
    2: TokenizationBPE walkthrough: how "unbelievably" becomes tokens
    3: EmbeddingsHow numbers become meaning. king − man + woman = queen
    4: Positional EncodingRoPE: why LLaMA rotates vectors, not adds numbers
    5: Attention⭐ THE CORE. Q,K,V, scaling, causal mask, 8-step walkthrough
    6: Transformer BlockRMSNorm, SwiGLU, residuals, pre-norm vs post-norm
    7: Complete GPT Model151M parameter model (with SwiGLU), weight tying, logits explained
    8: Training PipelineCross-entropy, backprop, AdamW, cosine warmup, mixed precision
    9: InferenceKV cache, temperature, top-k/p, beam search, repetition penalty
    10: Full ScriptRunnable main.py: everything in one file
    11: GlossaryArchitecture 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~60How GPT-4 splits "unbelievably" → "un" + "believ" + "ably"
    Embeddings~30How "cat" and "dog" end up near each other in 768D space
    RoPE~70Why LLaMA rotates vectors instead of adding position numbers
    Multi-Head Attention~120The exact 8-step computation behind every modern LLM
    Transformer Block~50Why residual connections are the "gradient highway"
    Full GPT Model~200151M parameter model with SwiGLU, weight tying and pre-norm
    Training Pipeline~250AdamW, cosine warmup, mixed precision, gradient accumulation
    Inference Engine~80KV 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
    RoPELLaMA, Mistral, QwenRelative position without learned parameters
    RMSNormLLaMA, Mistral, Gemma15% faster than LayerNorm, equally effective
    SwiGLUPaLM, LLaMA, GeminiLearns which information to pass or block
    Pre-NormGPT-3, all modernStable training at 100+ layers
    AdamWGPT-3+Better generalization than vanilla Adam
    BPEGPT-2/3/4Handles any text. Even unseen words and emoji
    Weight TyingGPT-2/3Saves 30% parameters, improves training signal
    Mixed PrecisionAll production LLMs2× 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.py and 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.

    TopicFileWhat It Covers
    RoPErope.mdHow word order is encoded through rotation
    Attentionattention.mdStep by step with a 3-token worked example
    BPE Tokenizationbpe_tokenization.mdHow text becomes tokens
    Embeddingsembeddings.mdHow numbers become meaning
    RMSNormrmsnorm.mdSimpler faster normalization
    SwiGLUswiglu.mdThe gated activation that beat ReLU
    Causal Maskingcausal_masking.mdNo peeking at the future
    Residual Connectionsresidual_connections.mdThe gradient highway
    KV Cachekv_cache.mdMaking generation fast
    Samplingsampling.mdTemperature, top-k, top-p
    Mixed Precisionmixed_precision.mdSpeed without sacrifice
    AdamWadamw.mdThe optimizer that trains LLMs
    Weight Tyingweight_tying.mdTwo jobs one matrix
    Gradient Clippinggradient_clipping.mdPreventing training explosions
    Cosine Warmupcosine_warmup.mdThe learning rate schedule
    Pre-Normpre_norm.mdWhere to normalize
    Grouped Query Attentiongrouped_query_attention.mdMHA vs GQA vs MQA explained
    Flash Attentionflash_attention.mdHow Flash Attention makes training 4× faster
    Loss Curveshow_to_read_loss.mdDiagnose training problems from the loss curve
    Mixture of Expertsmixture_of_experts.mdHow MoE scales models with sparse routing
    Speculative Decodingspeculative_decoding.md2-3× faster generation with a draft model
    Perplexityperplexity.mdThe one number that measures your model
    Beam Searchbeam_search.mdGenerate more accurate text with multiple candidates
    Cheatsheetcheatsheet.mdEvery formula and hyperparameter in one place
    FAQfaq.mdTroubleshooting common problems
    Encoder vs Decoderencoder_decoder_architectures.mdGPT vs BERT vs T5 explained
    📖 A Token's Journeya_tokens_journey.mdFollow one sentence through every layer
    📖 The Complete Storythe_complete_story.mdThe full narrative: 22 parts, 7800 words

    📖 How to Read

    Each chapter follows the same 4-step structure:

    StepFormatPurpose
    1️⃣ AnalogyPlain English, 5-year-old levelBuild intuition before math
    2️⃣ Worked ExampleReal numbers traced throughSee exactly what happens
    3️⃣ Annotated CodeEvery line: WHAT + WHYUnderstand every decision
    4️⃣ DiagramMermaid flowchart or ASCIIVisualize 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 commentsFew or noneEvery single line: WHAT + WHY
    Modern techniquesGPT-2 style (2019)LLaMA 3 style (2024): RoPE, RMSNorm, SwiGLU
    TrainingUses HuggingFace TrainerFull custom loop: AdamW, cosine warmup, mixed precision, grad accumulation
    Inferencemodel.generate()Temperature, top-k, top-p, beam search, KV cache explained
    Target audienceML engineersPython developers with zero ML experience
    DiagramsNoneMermaid 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

    ExperimentWhat to ChangeWhat You'll Learn
    Bigger modelnum_layers 12 → 24How depth improves reasoning
    More dataAdd BookCorpus, C4, The PileImpact of data quality and diversity
    Flash AttentionInstall flash-attn, swap attention2-5× faster training, longer context
    Grouped Query AttentionSet num_kv_heads < num_headsHow Mistral achieves efficient inference
    LoRA fine-tuningAdd low-rank adapter layersCustomize models without full retraining
    RLHF / DPOAdd reward model trainingHow ChatGPT learns to follow instructions
    KV CacheImplement persistent key-value storage500× faster text generation
    Mixture of ExpertsRoute tokens through different FFN expertsHow 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 (28 topics)
    └── 📄 CONTRIBUTING.md