В Doom запустили не очередной порт самой игры, а нейросети в Doom: для распознавания одной нарисованной цифры проект задействует 1355 копий игрового персонажа и тратит почти три минуты игрового времени. Эксперимент Doomformer показывает, насколько далеко можно увести знакомый игровой движок, если превратить геометрию уровней и триггеры в примитивную вычислительную схему.
Проект разработчика под никнеймом mottopanikeiku устроен как нарочито медленный, но работающий вычислитель для упрощённых целочисленных моделей, сообщает Habr / Новости. Автор обучает сеть заранее в PyTorch, а затем переносит параметры в уровень Doom; внешний Python-код подаёт входные данные, запускает вычисление и сверяет ответ с эталонным результатом.
Основой вычислений становятся дополнительные персонажи, движущиеся по специально построенным уровням-конвейерам. Пересекая линии-триггеры, они прибавляют заданные значения к накопленным суммам. Числа кодируются не в привычной памяти приложения, а в свойствах карты: уровнях освещения секторов и высотах пола и потолка. Разница высот работает как порог: ступень пропускает или не пропускает сигнал в зависимости от его величины.
В демонстрации пользователь «рисует» цифру, передвигаясь по полу уровня. После этого клоны героя проходят через конструкцию из секторов и триггеров, выполняя вычисления сети, а итог появляется на цифровом табло. На тесте из 1000 изображений MNIST система верно распознала 966 цифр. Для учебного эксперимента это вполне осмысленная метрика: автор не просто построил эффектную карту, а сравнил её работу с известным набором данных.
Разумеется, Doomformer не претендует на конкуренцию с обычным стеком машинного обучения. В тестах с многослойными сетями Doom оказался примерно в 65 тысяч раз медленнее NumPy. Такая разница не оставляет пространства для практического инференса: даже простая демонстрация распознавания занимает минуты, тогда как на обычном компьютере аналогичные операции выполняются почти мгновенно.
Но именно эта бесполезность в прикладном смысле делает проект любопытным для разработчиков. Doomformer раскладывает нейросеть на операции, которые обычно скрыты за библиотеками и ускорителями: накопление суммы, передача сигнала, пороговое решение, слой за слоем. Визуальная карта превращается в отладочную диаграмму, по которой можно буквально пройтись вместе с «данными». Для преподавания базовых принципов инференса и экспериментов с дискретной логикой такой подход может быть понятнее очередного ноутбука с несколькими строками PyTorch.
Эксперимент продолжает старую инженерную традицию вокруг Doom: игру запускали на самых неожиданных устройствах, а теперь её механики используют как среду исполнения. Похожая логика уже появляется и в других играх — разработчики строят внутри них логические схемы, процессоры и модели машинного обучения. В случае нейросетей в Doom важен не рекорд производительности, а доказательство того, что игровой уровень можно описать как специализированную вычислительную машину.
Исходный код Doomformer опубликован под лицензией MIT и содержит инструкции для Linux и macOS. Проект вряд ли изменит ML-инфраструктуру, зато хорошо напоминает: между игровым движком, симулятором и вычислительной средой граница часто проходит не по технологии, а по тому, насколько изобретательно разработчик использует её ограничения. Следующий интересный вопрос — какие ещё привычные цифровые среды можно превратить в наглядные вычислители без потери проверяемости результата.
