← На главную

Крошечная модель мира запускает игры на Raspberry Pi Pico

29.10.2026 20:32 · hackernews

Разработчик tinyworldformer запустил на Raspberry Pi Pico 2 W сразу две небольшие нейросети: модель мира предсказывает следующий кадр и награду по текущему кадру и действию, а сеть-актор выбирает действие по сгенерированному изображению. На микроконтроллере настоящая игровая логика не используется: обе сети взаимодействуют только друг с другом. Нажатие кнопки позволяет человеку самому играть внутри созданного моделью мира. Поддерживаются упрощённые Breakout, Doom-lite, Flappy Bird, Pong и Pac-Man. Модель мира содержит от 26 до 131 тысячи параметров и выполняет примерно 2–8 миллионов умножений с накоплением на кадр. Актору хватает 9–16 тысяч параметров. Обе сети работают на ядре RP2350, а второе ядро обслуживает USB и дисплей. Модель использует один блок transformer с повторным применением одних и тех же весов. Число проходов можно менять от одного до четырёх, выбирая между скоростью и точностью; на Pico обычно применяются два. Кадр разбивается на участки, которые превращаются в 36–80 токенов. Отдельные правила декодирования гарантируют, что мяч, игрок или привидение не появятся одновременно в нескольких копиях. Для Breakout такой подход поднял долю полностью точных кадров с 91,6% до 99,7% на одном из этапов работы. На отложенных данных при двух проходах полное совпадение кадров составило 99,99% для Breakout, 100% для Flappy Bird, 99,45% для Pong, 83,6% для Doom-lite и 86,4% для Pac-Man. Эти показатели исключают кадры сразу после случайных событий. Более строгая проверка во время игры актора сравнивала состояние и награду с настоящими правилами: Pac-Man оказался значительно менее надёжным остальных, а Flappy Bird не дал ошибок состояния за 5000 шагов. Обучение использует записи настоящих игр, квантование int8 и последующую дообучающую выборку из состояний, которые актор находит внутри модели. Это нужно потому, что агенты эксплуатировали ошибки сгенерированного мира: например, получали очки за несуществующие кирпичи. Актор обучается алгоритмом Stream AC(λ) без буфера повторного опыта и может начинать обучение с нуля на самой плате. Прошивка написана на no_std Rust, применяет статические буферы и умещается в 4 МБ flash и доступную SRAM. Самый крупный вариант Pac-Man занимает 600 КБ flash и 460 КБ RAM. Тот же движок компилируется в WebAssembly. При этом автор ещё не измерил частоту кадров на самом Pico, поэтому заявленные вычислительные затраты не равны подтверждённой скорости игры на устройстве.

Читать оригинал →