How to Train Your GPT — учебник по созданию LLM с нуля: от токенизации до инференса
📂 Исходный код на GitHubИнтерактивный учебник по построению современного LLM с абсолютного нуля: 12 глав, 28 объяснений отдельных тем, 100% прокомментированного кода. Архитектура в стиле LLaMA 3 — RoPE, RMSNorm, SwiGLU, pre-norm. Модель на 151M параметров, кастомный тренировочный цикл и движок инференса с KV-кэшем. Требуется только базовый Python.
How to Train Your GPT — открытый учебник от Raiyan Yahya о том, как построить современную языковую модель с абсолютного нуля. Это то же семейство архитектур, что стоит за ChatGPT, Claude, LLaMA и Mistral. Проект вырос из личного эксперимента автора: разобраться в том, что он сам не понимал до конца — в механизме attention — используя AI для изучения и проверки концепций. Результат — 12 глав, 7500+ строк кода, 28 отдельных объяснений тем и более 3300 звёзд на GitHub.
Главный принцип сформулирован в подзаголовке проекта: «Taught like you're five. Built like you're an engineer» — объяснения на уровне понятных аналогий, но код и инженерные решения полноценные. Для старта нужен только базовый Python: функции, классы, списки и pip install. Никакого матанализа, линейной алгебры или опыта с PyTorch — всё это объясняется по ходу.
Чему учит учебник
Большинство ML-туториалов попадают в одну из двух ловушек: либо слишком поверхностны (model = GPT().fit(data) — вызываешь API, не понимая внутренностей), либо слишком академичны (40-страничные статьи с плотной нотацией в расчёте на PhD). Этот учебник идёт третьим путём: аналогии для пятилетних → рабочий код, где каждая строка аннотирована с ответом на два вопроса — WHAT она делает и WHY она нужна.
После прохождения вы не просто «знаете, что attention работает». Вы понимаете дисперсионный аргумент за 1/√d_k, как RoPE кодирует относительную позицию через вращение, почему pre-norm стабильнее post-norm на глубоких сетях и куда именно течёт каждый градиент при обратном распространении.
Структура глав
| Глава | Содержание |
|---|---|
| 0: Обзор | Что такое GPT и общая картина |
| 1: Настройка | Инструменты, GPU vs CPU, venv, основы PyTorch |
| 2: Токенизация | BPE: как «unbelievably» превращается в токены |
| 3: Эмбеддинги | Как числа становятся смыслом: king − man + woman = queen |
| 4: Позиционное кодирование | RoPE: почему LLaMA вращает векторы, а не складывает числа |
| 5: Attention | Ядро курса: Q, K, V, масштабирование, causal mask, разбор за 8 шагов |
| 6: Блок Transformer | RMSNorm, SwiGLU, residual-связи, pre-norm vs post-norm |
| 7: Полная модель GPT | Модель на 151M параметров, weight tying, logits |
| 8: Пайплайн обучения | Cross-entropy, backprop, AdamW, cosine warmup, mixed precision |
| 9: Инференс | KV-кэш, temperature, top-k/top-p, beam search, repetition penalty |
| 10: Полный скрипт | Запускаемый main.py — всё в одном файле |
| 11: Глоссарий | Таблица происхождения архитектурных решений, разбор параметров |
Читать нужно последовательно с главы 0 — каждая глава опирается на предыдущую. Каждая следует одной 4-шаговой структуре: аналогия → разобранный пример на реальных числах → аннотированный код → диаграмма (Mermaid или ASCII).
Что вы построите своими руками
- BPE-токенизатор (~60 строк) — как GPT-4 разбивает «unbelievably» на «un» + «believ» + «ably»
- Эмбеддинги (~30 строк) — почему «cat» и «dog» оказываются рядом в 768-мерном пространстве
- RoPE (~70 строк) — позиционное кодирование через вращение
- Multi-Head Attention (~120 строк) — точная 8-шаговая вычислительная процедура за каждым современным LLM
- Блок Transformer (~50 строк) — residual-связи как «градиентное шоссе»
- Полную модель GPT (~200 строк) — 151M параметров со SwiGLU, weight tying и pre-norm
- Пайплайн обучения (~250 строк) — AdamW, cosine warmup, mixed precision, gradient accumulation
- Движок инференса (~80 строк) — KV-кэш, temperature, top-k/top-p, beam search
Итого около 860 строк кода ядра модели и примерно 2600 строк объяснений и диаграмм.
Современная архитектура
Ключевое отличие от большинства туториалов по GPT: руководство реализует не архаику времён GPT-2 (2019), а последний публично задокументированный decoder-only Transformer в стиле LLaMA 3:
| Техника | Источник | Зачем нужна |
|---|---|---|
| RoPE | LLaMA, Mistral, Qwen | Относительная позиция без обучаемых параметров |
| RMSNorm | LLaMA, Mistral, Gemma | На 15% быстрее LayerNorm при той же эффективности |
| SwiGLU | PaLM, LLaMA, Gemini | Сеть учится, какую информацию пропускать, а какую блокировать |
| Pre-Norm | GPT-3 и все современные | Стабильное обучение на 100+ слоях |
| AdamW | GPT-3+ | Лучшая генерализация, чем у ванильного Adam |
| BPE | GPT-2/3/4 | Обработка любого текста, включая незнакомые слова и эмодзи |
| Weight Tying | GPT-2/3 | Экономия 30% параметров, лучший тренировочный сигнал |
| Mixed Precision | Все продакшен-LLM | Двукратное ускорение, вдвое меньше памяти |
Авторы честно отмечают: архитектуры GPT-4 и Claude закрыты, поэтому учебник учит лучшей публично подтверждённой архитектуре — той, что используют LLaMA 3, Mistral и Qwen 2.5.
28 объяснений отдельных тем
Помимо глав, в каталоге explanations and examples WIP/ лежат отдельные глубокие разборы каждой концепции: attention с примером на 3 токенах, RoPE, RMSNorm, SwiGLU, KV-кэш, AdamW, mixed precision, градиентный клиппинг, cosine warmup, Grouped Query Attention (MHA vs GQA vs MQA), Flash Attention, Mixture of Experts, speculative decoding, perplexity, beam search и другие.
Отдельного внимания заслуживают два нарративных файла: «A Token's Journey» прослеживает путь одного предложения через все слои модели, а «The Complete Story» собирает все компоненты воедино в 22 частях.
Fine-tuning и ноутбуки
В каталоге fine-tuning/ находится отдельный гайд по дообучению: что такое fine-tuning, LoRA и QLoRA, подготовка данных и полное дообучение с ноутбуком. Каждой главе соответствует Jupyter-ноутбук в notebooks/ — без объяснений, только чистый исполняемый код, а colab_train.ipynb запускает обучение в облаке одним кликом.
Быстрый старт
# 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
# 3. Install dependencies (CPU version)
pip install torch tiktoken datasets numpy matplotlib --index-url https://download.pytorch.org/whl/cpu
# 4. Run training
python main.py
По умолчанию используется крошечная конфигурация (d_model=256, 4 слоя, 17M параметров) — обучение занимает несколько минут даже на CPU. Для масштаба GPT-2 (151M параметров, 768 измерений, 12 слоёв) нужно раскомментировать большую конфигурацию в main.py — тут уже потребуется GPU.
Кому пригодится
- Python-разработчику, которому интересно, как на самом деле работает ChatGPT
- Студенту, который хочет глубоко понять Transformer
- Инженеру, оценивающему LLM-архитектуры и компромиссы (RoPE vs обучаемые позиции, RMSNorm vs LayerNorm)
- Тому, кто потерялся на слове «attention» в других туториалах
После завершения предлагаются естественные следующие шаги: Flash Attention (ускорение тренировки в 2–5 раз), Grouped Query Attention, LoRA-дообучение, RLHF/DPO и Mixture of Experts. Проект распространяется под лицензией MIT. Как сказано в README: «Any sufficiently explained technology is indistinguishable from magic. Until you build it yourself».