How to Train Your GPT — учебник по созданию LLM с нуля: от токенизации до инференса

· 2 мин чтения
llm transformers deep-learning pytorch education
📂 Исходный код на GitHub

Интерактивный учебник по построению современного LLM с абсолютного нуля: 12 глав, 28 объяснений отдельных тем, 100% прокомментированного кода. Архитектура в стиле LLaMA 3 — RoPE, RMSNorm, SwiGLU, pre-norm. Модель на 151M параметров, кастомный тренировочный цикл и движок инференса с KV-кэшем. Требуется только базовый Python.

How to Train Your GPT — учебник по созданию LLM с нуля: от токенизации до инференса

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».

Источник: https://github.com/raiyanyahya/how-to-train-your-gpt