Трансформер на Game Boy Color: TinyStories запустили на консоли 1998 года
Энтузиаст Мэдди Дриз портировала TinyStories-260K Андрея Карпатого на стоковый Game Boy Color через INT8-квантизацию и fixed-point математику без soldering.

Game Boy Color 1998 года выпуска, процессор на 4 МГц, 8 КБ RAM. И на этом действительно работает настоящий трансформер — с прямым проходом, RoPE-вниманием, RMSNorm и автоматической токенизацией прямо на консоли. Не эмулятор, не шутка — стоковое железо, картридж в EZ-FLASH Junior, текст на чёрно-зелёном экранчике.
Что произошло
Разработчица под ником maddiedreese опубликовала репозиторий gbc-transformer — proof-of-concept ROM, который запускает TinyStories-260K Андрея Карпатого непосредственно на CPU Game Boy Color. За три дня после анонса пост на r/LocalLLaMA набрал почти 800 апвотов и попал в топ еженедельных трендов сообщества.
Модель крошечная даже по меркам tiny-AI: 260 тысяч параметров, словарь на 512 BPE-токенов, контекст ограничен 16 токенами. Но именно эта компактность позволила втиснуть её в MBC5-картридж, переиспользуя SRAM как KV-кэш — основной WRAM остаётся ниже 8 КБ. Веса прогнаны через построчную INT8-квантизацию, а вся арифметика — fixed-point, без единой плавающей точки.
Технические детали:
- Архитектура: dim=64, hidden_dim=172, 5 слоёв, 8 attention-голов (4 KV)
- Квантизация: INT8 row-wise, Q8-раннер без FP
- Префилл и автогенерация — прямо на 8-битном CPU SM83
- Ввод промпта: D-pad + экранная клавиатура
- Размер модели: 1 056 540 байт
- Железо: Game Boy Color + EZ-FLASH Junior (без паяльника)
Сама автор честна: текущая C-реализация «крайне медленная», hot-loop матричных умножений ещё ждёт переписывания на ассемблер SM83, а выдача периодически скатывается в gibberish. Но end-to-end путь работает: токенизация → префилл → авторегрессивная генерация — всё на железе.
Почему это важно
История повторяет жанр, появившийся в последние месяцы. В апреле проект EmbedLlama затащил тот же чекпойнт TinyStories на STM32H7A3 — Cortex-M7 с 1 МБ on-chip памяти. До этого Карпатый сам показывал llama2.c, работающую на десктопном CPU без зависимостей. Game Boy Color — это следующий шаг абсурда: трансформер на платформе, где даже сжатие звука в JPEG-эпоху считалось невозможным.
Практическая ценность близка к нулю — модель пишет короткие детские истории со скоростью улитки. Зато учебная — огромная. Это полный референс по тому, как впихнуть инференс в среду без FPU, с банковской памятью, со SRAM вместо RAM. Для embedded-разработчиков это карта местности.
Что дальше
Maddiedreese обозначила два направления: ассемблер SM83 для матричных умножений (это даст порядок-два по скорости) и поддержка top-k/temperature вместо greedy argmax. Если первое получится, демо станет действительно смотрибельным, а не «запустил → пошёл пить чай».
А пока сообщество запостило в комментариях очередь желающих повторить трюк на Nintendo 64, Game Boy Advance и Sega Genesis. Edge AI окончательно перестал означать «телефон» — теперь это «всё, у чего есть CPU».


