Разработчик превратил уровни Doom в вычислитель для нейросетей

Разработчик под никнеймом mottopanikeiku использовал игровой движок Doom не для запуска очередного порта, а в качестве вычислительной среды. Его проект Doomformer позволяет выполнять внутри игры расчёты, необходимые для работы упрощённых целочисленных нейросетей.
Основой системы стали дополнительные копии игрового персонажа. Они перемещаются по специально подготовленным уровням-конвейерам и пересекают линии-триггеры. Каждая такая линия добавляет заданное значение к накопленной сумме, поэтому движение персонажей фактически заменяет выполнение отдельных операций.
Числа в Doomformer кодируются с помощью параметров игровых уровней: освещения секторов, высоты потолков и высоты пола. Перепады между уровнями работают как элементы, которые пропускают сигналы в зависимости от их величины. Таким образом, стандартные механики карты превращаются в набор примитивных вычислительных блоков.
Распознавание цифр внутри Doom
Нейросети для экспериментов автор заранее обучает в PyTorch. После этого внешний Python-код передаёт в игру входные данные, управляет запуском расчётов и сравнивает полученный результат с эталонным.
В одной из демонстраций Doomformer распознаёт рукописные цифры. Игрок вводит изображение, перемещаясь по полу уровня, после чего к работе подключаются 1355 клонов персонажа. Они выполняют вычисления, а итоговая цифра появляется на встроенном цифровом табло.
При стандартной скорости игры обработка одного изображения занимает почти три минуты. На выборке из 1000 изображений датасета MNIST система правильно распознала 966 цифр, то есть показала точность 96,6%.
Главное ограничение — скорость
Практическая ценность проекта ограничена производительностью. В тестах многослойные нейросети в Doom работали примерно в 65 тысяч раз медленнее, чем при аналогичных вычислениях с использованием NumPy. Поэтому Doomformer представляет интерес прежде всего как эксперимент на стыке игровой разработки, машинного обучения и необычного использования игровых механик.
Исходный код проекта опубликован на GitHub под лицензией MIT. Автор также подготовил инструкции для запуска Doomformer в Linux и macOS.


