Основатель стартапа Eureka Labs, Андрей Карпати, поделился microGPT — полной реализацией обучения и инференса GPT, собранной всего из 243 строк кода на Python. В проекте используются лишь стандартные модули: math, random, os и argparse.
MicroGPT включает в себя все необходимые компоненты для работы языковой модели: уникальный движок автоматического дифференцирования (по аналогии с micrograd), токенизатор с символами BOS/EOS, архитектуру Transformer с multi-head attention, нормализацию RMSNorm, функцию активации squared ReLU, оптимизатор Adam и генератор текста. Основные отличия от традиционного GPT-2 заключаются в замене LayerNorm на RMSNorm, отсутствия bias-параметров и переходе на squared ReLU вместо GeLU.
Карпати охарактеризовал свою работу как «арт-проект», указав на то, что весь алгоритмический контент уже включен в проект. По умолчанию модель обучается на датасете имен из его предшествующего проекта makemore, но также может использовать любой текстовый корпус.
Это продолжение его минималистичных образовательно-ориентированных инициатив, среди которых micrograd — автоград мотор в менее чем 100 строках, и minGPT — сжато реализованный GPT на PyTorch. MicroGPT же идет еще дальше, убрав зависимости от NumPy и PyTorch, реализуя все основные операции с помощью чистого Python.
Хотя проект не предназначен для практического использования — тем людям, которые обучают модель без GPU, потребуется множество часов даже для простейших задач — он показывает, что механизм LLM укладывается в два экрана кода и уже получает высокую оценку на GitHub.