Основатель AI-образовательного стартапа Eureka Labs Андрей Карпати опубликовал microGPT — полную реализацию обучения и инференса GPT в 243 строках Python без единой внешней зависимости. Из импортов — только стандартные модули math, random, os и argparse.

Файл включает все, что нужно для работы языковой модели: собственный движок автоматического дифференцирования (аналог micrograd), посимвольный токенизатор с BOS/EOS-токенами, архитектуру Transformer с multi-head attention, нормализацию RMSNorm, активацию squared ReLU, оптимизатор Adam и цикл генерации текста. От классического GPT-2 отличия минимальны: RMSNorm вместо LayerNorm, отсутствие bias-параметров и squared ReLU вместо GeLU.

Карпати назвал проект "арт-проектом" и подчеркнул, что это весь алгоритмический контент, необходимый для обучения GPT. "Все остальное — это просто эффективность. Я не могу упростить это еще больше", — написал он. По умолчанию модель обучается на датасете имен из его предыдущего проекта makemore, но код работает с любым текстовым корпусом.

Для Карпати это продолжение серии минималистичных образовательных проектов. Ранее он выпустил micrograd — движок автоградиента менее чем в 100 строках, и minGPT — компактную реализацию GPT на PyTorch. В microGPT он пошел дальше, убрав зависимость даже от NumPy и PyTorch и реализовав все операции — от матричного умножения до обратного распространения ошибки — через скалярные вычисления на чистом Python.

Проект не предназначен для практического использования — без GPU и тензорных операций обучение занимает часы даже на простейших задачах. Но как демонстрация того, что весь механизм LLM умещается на двух экранах кода, microGPT уже собирает звезды на GitHub.

P.S. Поддержать меня можно подпиской на канал "сбежавшая нейросеть", где я рассказываю про ИИ с творческой стороны.