tinyworldformer : des réseaux de neurones créent et jouent à Breakout, Pong et Pac-Man sur un Raspberry Pi Pico 2 W

Le développeur SheepSeb a publié tinyworldformer, un projet open source qui utilise deux petits réseaux de neurones pour créer et jouer à des jeux vidéo dans un Raspberry Pi Pico 2 W, un microcontrôleur à bas coût. Au lieu d'exécuter le code traditionnel d'un jeu, la carte fait rêver chaque image de la partie par un réseau de neurones, tandis qu'un second réseau décide des commandes.

Le premier réseau est le modèle de monde : un transformer en boucle, quantifié en int8, de 26 000 à 131 000 paramètres selon le jeu. À chaque image, il reçoit l'image actuelle et l'action choisie, puis prédit l'image suivante et la récompense. Le second réseau, l'acteur, est un perceptron à deux couches cachées de 9 000 à 16 000 paramètres, qui observe l'image générée et choisit le bouton suivant.

Le détail le plus curieux est que, sur la puce, le vrai jeu ne tourne jamais. L'acteur ne voit que les images rêvées par le modèle de monde, et le modèle ne reçoit que les actions de l'acteur. Les deux réseaux partagent le cœur 1 de la puce RP2350, tandis que le cœur 0 gère l'USB et l'écran. En appuyant sur un bouton, le joueur peut prendre le contrôle et jouer le rêve même de la machine.

Il s'agit de cinq jeux en versions réduites : Breakout, Doom-lite, Flappy Bird, Pong et Pac-Man lite. Selon le développeur, avec deux passages du transformer, le modèle reproduit exactement toutes les images dans 99,99 % des transitions testées sur Breakout, 100 % sur Flappy Bird et 99,45 % sur Pong ; sur Doom-lite et Pac-Man lite, les taux sont de 83,6 % et 86,4 %, en partie parce qu'un seul pixel erroné suffit à compter l'image entière comme incorrecte.

Le projet tient aussi largement dans le matériel : le Pico 2 W dispose de 4 Mo de mémoire flash et de 520 Ko de SRAM, et chaque micrologiciel occupe de 361 Ko à 600 Ko de flash et de 227 Ko à 460 Ko de RAM, selon le jeu. L'agent qui joue peut en outre être remplacé par un agent qui apprend de zéro sur la carte elle-même, grâce à l'algorithme d'apprentissage stream-x implémenté en Rust sans allocation dynamique.

Ceux qui veulent l'essayer sans matériel peuvent exécuter le même moteur dans le navigateur, compilé en WebAssembly, avec les mêmes jeux et le même agent. Le code, le micrologiciel et les outils d'entraînement sont publiés dans le dépôt GitHub du projet, créé le 22 octobre 2026 et qui compte déjà plus de 170 étoiles.

Crédit image : bannière du projet tinyworldformer, publiée par le développeur SheepSeb dans son dépôt GitHub.

Transparence : cet article a été rédigé avec l'aide de l'intelligence artificielle, à partir du recoupement de publications publiques et des sources internet listées ci-dessous. Nous recommandons de consulter les sources originales pour confirmer les détails.

Muse

Sources : tinyworldformer sur GitHub (SheepSeb) ; Wisevoter.