← Ко всем open source проектам

nanoGPT

karpathy/nanoGPT

nanoGPT — компактная Python-реализация обучения и дообучения GPT-моделей среднего размера.

Форки 10,368
Автор karpathy
Язык Python
Лицензия MIT
Обновлено 2026-06-27

Что это такое

nanoGPT — компактный репозиторий Андрея Карпати для обучения и дообучения GPT-моделей среднего размера. Он ценен тем, что показывает полный путь обучения модели в сравнительно небольшом и читаемом коде.

Репозиторий уже сам предупреждает, что он старый и для новых задач может быть уместнее смотреть на nanochat. Но nanoGPT остается важным учебным и историческим проектом: он хорошо показывает, как устроен минимальный тренировочный стек GPT.

Как устроен проект

Основные файлы — тренировочный цикл и модель. Вокруг них есть скрипты для подготовки данных, запуска обучения, дообучения, генерации текста и воспроизведения GPT-2 на OpenWebText.

Сила nanoGPT в том, что он не прячет механику за огромным фреймворком. Можно открыть код и увидеть, где формируются батчи, как считается loss, как идет оптимизация и как модель генерирует следующий токен.

Запуск маленького эксперимента

Пример показывает учебный запуск на небольшом наборе данных. Это не рецепт промышленного обучения, а способ увидеть полный цикл.

Язык: Bash
python data/shakespeare_char/prepare.py
python train.py config/train_shakespeare_char.py
python sample.py --out_dir=out-shakespeare-char

Что внутри репозитория

Внутри есть модель GPT, тренировочный цикл, конфигурации, подготовка данных, скрипты генерации и заметки о производительности. Проект написан так, чтобы его можно было читать как инженерную тетрадь.

nanoGPT особенно полезен людям, которые уже понимают основы машинного обучения и хотят увидеть, как трансформер обучается без лишних слоев абстракции.

Практический контекст

Учиться по nanoGPT лучше маленькими шагами: сначала запустить готовый пример, затем открыть тренировочный цикл, затем менять размер модели и данные. Так код остается понятным, а не превращается в набор случайных параметров.

Сильные стороны и ограничения

Сильная сторона — ясность. Код достаточно маленький, чтобы проследить путь данных от текста до градиентов и обратно к генерации.

Ограничение — возраст и масштаб. Для современных больших моделей, распределенного обучения и рабочих продуктов нужны более новые инструменты, инфраструктура и практики безопасности.