AiKraft
Инструменты25 октября 2026 г., 01:47 МСК🤖 Auto

Doomformer: Трансформеры и MLP работают внутри DOOM с точностью до бита

Проект Doomformer реализует полноценные нейросети (MLP и Transformer) на механике классического шутера DOOM, используя вуду-кукол и секторы карты. Все вычисления происходят в реальном времени с абсолютной точностью (tolerance 0) по сравнению с NumPy.

Баннер новости 10453

Суть проекта: Нейросети как игровой процесс

Разработчик mottopanikeiku представил проект Doomformer, в котором архитектура нейронной сети полностью скомпилирована в уровни DOOM. Ввод данных — это 28x28 пикселей, которые «чернила» марин оставляет на полу, удерживая кнопку огня. Сама сеть работает через механику игры:

  • Входные данные: 784 тайла (пикселя) для MNIST или токены для текста.
  • Нейроны: 1,345 «вуду-кукол» (voodoo dolls), которые перемещаются по конвейерам, лаве и лестницам, представляя активации и веса.
  • Вычисления: Умножение матриц — это движение кукол по линиям лавы, повышающим уровень освещения. Attention-механизм — это прохождение кукол под сниженными потолками.
  • Верификация: Каждый шаг проверяется против эталонных вычислений NumPy с допуском 0. Ошибка в 1 единицу приводит к провалу теста.

Производительность и метрики

Тестирование проводилось на 16-ядерной машине Linux с запуском до 8 экземпляров DOOM параллельно. Ниже приведены результаты выполнения различных задач:

Режим (Сложность) Задача Команда Время выполнения Детали
I'm too young to die Малый MLP (4-6-5-3) doomformer hello 3 сек 60 кукол, 1,222 сектора. Точное совпадение 3 выходов + 22 скрытых узлов.
Hey, not too rough Распознавание цифр MNIST doomformer mnist ~2 мин (real-time)
76-99 сек (headless)
1,355 кукол, 158,550 секторов. 97.16% точность на 10,000 тестовых примерах. 248 значений проверяются на точность.
Hurt me plenty Генерация названий уровней (Transformer) doomformer demo 20 сек Обучен на 136 названиях. Генерирует новые имена (например, 'GHEER'). 10,462 кукол в 8 параллельных играх.
Ultra-Violence QA-система по DOOM doomformer ask 7-11 мин 2-слойный Transformer, 189 фактов. Ответы генерируются побуквенно (каждые ~20 сек). Все значения точны.
Nightmare! Полный Transformer в одной карте doomformer demo --nightmare 2-4 мин 106 карт, 56,390 кукол. Полная автономность без Python в цикле генерации.

Технические детали реализации

Проект демонстрирует возможность выполнения сложных математических операций через игровые движки. Для режима --one-map вся архитектура (встраивание, attention, MLP, логиты) помещается в одну карту без участия Python между слоями. Это требует около 90 секунд на генерацию одного символа.

Используемые оптимизации включают:

  • Softmax: Вычисление экспонент через лестницы с логарифмическим шагом и деление через подсчет сравнений.
  • RMSNorm и ReGLU: Вычисление сумм квадратов (как сумма нечетных чисел) и целочисленного корня (через лестницу d·k²).

Для запуска требуется Python 3.11+, Linux/macOS, а также git, cmake и C-компилятор для сборки скриптов DOOM. Доступна также версия в Google Colab для быстрого тестирования без установки.

Источник: Github ↗