Перейти к содержанию

Запуск Doom на LLM: алгоритм рендеринга скомпилирован в веса трансформера

7.0/10

Разработчик под ником notforrob опубликовал демонстрацию Doom, работающего на LLM: созданный им компилятор torchwright переносит алгоритм рендеринга игры в веса трансформера без какого-либо обучения. Используется стандартная архитектура Phi3ForCausalLM, которая загружается в обычном transformers с trust_remote_code=False; промпт содержит геометрию уровня, позицию игрока и направление взгляда, а модель генерирует команды отрисовки, которые небольшая host-программа превращает в пиксели. На Hugging Face выложены два чекпоинта: 320×200 (21B параметров, 85,87 ГБ) и 80×50 (34 ГБ); для версии 320×200 один кадр требует промпта на 3 614 токенов и генерации 53 747 токенов, что занимает почти 40 минут на GPU B200. Это скорее концептуальное доказательство того, что алгоритмы можно компилировать в веса LLM, чем практичный способ запуска игр, из-за огромных затрат на инференс.

Контекст

Doom — классический шутер 1993 года с программным рендерингом, который традиционно выполняется на CPU. LLM обычно обучаются предсказывать текст, а не вычислять графику; здесь вместо обучения применён компилятор, который заранее вычисляет веса трансформера так, чтобы модель выполняла нужный алгоритм.

Влияние

Для исследователей и энтузиастов демонстрация значима как воспроизводимый пример переноса алгоритма в веса трансформера без обучения, но использование в реальных приложениях сейчас невозможно из-за стоимости инференса и требований к памяти.

Обсуждение

Комментаторы высоко оценили проект как лучший случай «Can it run DOOM?»; один пользователь сравнил производительность B200 с парой RTX 3080 и предположил, что есть большой запас для оптимизации. Другие шутили о стоимости инференса одного кадра.

Детали

Компилятор torchwright переводит процедурный код рендерера Doom в веса Phi3 без обучения: все веса вычислены, а не выучены, архитектура стандартная и работает в vanilla transformers с trust_remote_code=False. Автор использовал облачные GPU B200 и A100-80, его компилятор требует fp32 и квантизация не исследована. Промпт несёт геометрию уровня, позицию и направление взгляда, генерация выдаёт команды отрисовки, а host-программа из 43 строк превращает их в пиксели. Версия 320×200 содержит 21B параметров и занимает 85,87 ГБ; кадр — это промпт на 3 614 токенов и 53 747 сгенерированных токенов. Версия 80×50 весит 34 ГБ, рекомендуется 80 ГБ видеопамяти, хотя автор допускает, что 64 ГБ могут работать.