- DIAMOND est une approche qui, au lieu de compresser l’environnement Atari en jetons latents discrets, le simule avec un modèle du monde par diffusion, puis y entraîne un agent d’apprentissage par renforcement
- L’image suivante est générée à partir de l’action de l’agent et des images précédentes comme conditions, et la répétition de ce processus construit un modèle du monde jouable
- Avec un faible nombre d’étapes de débruitage, DDPM était instable, mais EDM produisait des trajectoires stables même en une seule étape, et DIAMOND utilise n=3 pour assurer la cohérence
- Sur Atari 100k, le système atteint un score humain normalisé moyen de 1,46, établissant un nouveau meilleur résultat pour un agent entraîné à l’intérieur d’un modèle du monde dans la condition 100k images
- Pour l’application à CS:GO, 87 heures de données de jeu humain, un pipeline en deux étapes avec prédiction basse résolution puis suréchantillonnage, et un modèle de 381M paramètres ont été utilisés, avec un jeu possible à environ 10 FPS sur RTX 3090
Le problème de modélisation du monde que DIAMOND cherche à résoudre
- Un modèle du monde est une approche visant à entraîner des agents d’apprentissage par renforcement de manière plus sûre et avec une meilleure efficacité d’échantillonnage
- Les modèles du monde récents modélisent principalement la dynamique de l’environnement comme des séquences de variables latentes discrètes
- Ce type de représentation compressée peut manquer des détails visuels importants pour l’apprentissage par renforcement
- DIAMOND applique à la modélisation du monde les modèles de diffusion, qui ont montré de solides performances en génération d’images
- Le nom complet de DIAMOND est DIffusion As a Model Of eNvironment Dreams
Fonctionnement d’un modèle du monde par diffusion
- Le modèle de diffusion est entraîné à prédire l’image suivante du jeu
- Les entrées incluent les actions de l’agent et les images précédentes
- Si l’agent fournit de nouvelles actions de manière répétée, le modèle de diffusion met à jour l’état du jeu
- Grâce à ce processus de génération autorégressif, le modèle de diffusion joue le rôle d’un modèle du monde dans lequel l’agent peut apprendre et jouer
Conception du débruitage pour une exécution rapide
- Pour construire un modèle du monde rapide, il faut réduire le nombre d’étapes de débruitage
- DDPM devient instable avec peu d’étapes de débruitage, car les erreurs autorégressives s’accumulent
- EDM génère des trajectoires stables même avec un débruitage en une seule étape
- Dans l’environnement Boxing, le débruitage en une étape interpole entre des résultats possibles, ce qui produit un joueur noir flou, difficile à prédire
- Un plus grand nombre d’étapes de débruitage permet de mieux sélectionner un mode particulier parmi plusieurs modes de transition possibles, ce qui améliore la cohérence dans le temps
- Le modèle du monde par diffusion de DIAMOND utilise n=3 étapes de débruitage
- Le mouvement du joueur blanc est contrôlé par la politique, et comme cette action est fournie au modèle du monde, il est correctement prédit quel que soit le nombre d’étapes de débruitage
Performances sur Atari 100k
- DIAMOND modélise mieux les détails visuels importants que IRIS, basé sur des jetons discrets
- En entraînant un agent d’apprentissage par renforcement à l’intérieur du modèle du monde par diffusion, le système atteint un score humain normalisé moyen de 1,46 sur Atari 100k
- Ce score correspond à un niveau supérieur de 46 % à celui de l’humain
- Il s’agit d’un nouveau meilleur résultat parmi les agents entraînés uniquement à l’intérieur d’un modèle du monde dans la condition 100k images
Extension à CS:GO
- Le modèle du monde par diffusion de DIAMOND s’applique aussi à la simulation d’environnements 3D comme Counter-Strike: Global Offensive
- La version CS:GO utilise un jeu de données fixe constitué de 87 heures de jeu humain au lieu de données collectées par un agent d’apprentissage par renforcement
- Pour réduire le coût d’entraînement, un pipeline en deux étapes est utilisé
- D’abord, la dynamique est prédite en basse résolution
- Ensuite, un second modèle effectue le suréchantillonnage
- La taille du modèle passe de 4,4M paramètres pour Atari à 381M paramètres pour CS:GO
- Parmi eux, 51M paramètres correspondent au suréchantillonneur additionnel
- Le suréchantillonneur utilise un échantillonnage stochastique pour améliorer la qualité de génération visuelle
- Le modèle de dynamique n’a pas besoin d’échantillonnage stochastique
- Le modèle CS:GO a été entraîné pendant 12 jours sur RTX 4090, et il est jouable à environ 10 FPS sur RTX 3090
Exécution directe et ressources publiques
- Le code, les agents et le modèle du monde jouable sont publiés dans le dépôt GitHub
- L’exemple d’installation utilise les commandes suivantes
git clone https://github.com/eloialonso/diamond.git
cd diamond
conda create -n diamond python=3.10
conda activate diamond
pip install -r requirements.txt
- Exécuter le modèle du monde Atari :
python src/play.py --pretrained
- Exécuter le modèle du monde CS:GO :
git checkout csgo
python src/play.py
- Plus de détails sont disponibles dans l’article
Modes d’échec restants et limites du passage à l’échelle
- Le modèle du monde par diffusion de DIAMOND présente encore plusieurs modes d’échec
- En augmentant davantage les données et la puissance de calcul, de nombreux aspects devraient s’améliorer
- Cependant, certaines limites ne peuvent pas être résolues uniquement par le passage à l’échelle, comme les problèmes issus de la mémoire limitée du modèle
- Une limite intéressante est que le modèle autorise des sauts consécutifs
- Le modèle généralise l’effet du saut sur la géométrie de la scène
- Comme les sauts consécutifs n’apparaissent pas assez souvent dans les données d’entraînement, il n’a pas appris qu’ils devraient être impossibles
1 commentaires
Avis sur Hacker News
Cette vidéo https://x.com/Sentdex/status/1845146540555243615 ressemble beaucoup à mes rêves
Parfois, quand j’essaie de sauter haut dans un rêve, je suis transporté vers un autre endroit exactement comme ça, et les objets changent sans cesse de la même manière
C’est étonnant de voir à quel point c’est proche d’une véritable expérience de rêve
Quand les modèles de diffusion ont commencé à attirer l’attention, j’ai fait le lien avec le texte corrompu dans les images générées
C’est peut-être un indice qu’une partie de l’inconscient humain fonctionne d’une manière assez proche des principes des modèles de diffusion
C’est moins visible dans le champ visuel, mais cela se manifeste davantage dans l’attention et la pensée elles-mêmes
Mes rêves sont visuellement très cohérents, au point que j’ai déjà utilisé Google Maps dans un rêve ; la géographie était fausse, mais cohérente en interne
Cela dit, je n’ai jamais fait de rêve lucide dans un rêve, donc cette différence pourrait jouer
Dans l’état de rêve, quelque chose est déconnecté, et il y a clairement ici une rupture similaire
Ce modèle semble manquer d’un modèle du monde, comme le fort raisonnement spatial et les attentes de continuité que possèdent les animaux
Bien sûr, cela aussi s’apprend probablement
C’est un modèle à 300 millions de paramètres, soit 1/1300 de la taille d’un grand llama-3, entraîné sur 5 millions de frames pendant 12 jours sur une GTX4090
C’était le genre de travail que faisaient les grandes entreprises tech en 2015
Si l’on faisait la même chose à l’échelle industrielle, comme pour les grands modèles de langage, ce serait vraiment énorme
Counter Strike tourne déjà de façon bien plus fluide que ça, sans gaspiller énormément de calcul
Le rythme des progrès est vraiment stupéfiant
Nous vivons une époque bien intéressante
C’est un résultat assez enthousiasmant
On dirait qu’on peut déjà l’utiliser dans des moteurs de jeu pour générer des approximations physiques réalistes
On pourrait créer beaucoup de fragments de gameplay avec un moteur physique plus lourd et plus réaliste, voire en CGI, puis entraîner le modèle à approximer la physique, ce qui donnerait un moteur physique léger
On pourrait aussi avoir plusieurs modèles spécialisés, par exemple pour la dynamique de la fumée ou les explosions
Même s’il y a des hallucinations, je ne pense pas que ce soit pire que les bugs de physique courants dans les jeux
Les bugs de physique sont fréquents, mais on peut prioriser et corriger d’abord les plus graves, ceux qui bloquent la progression
Avec un modèle boîte noire, ce serait beaucoup plus difficile
La physique newtonienne est déjà très bien connue et assez efficace à calculer
En quoi calculer la physique newtonienne avec une approximation de fonction à des milliards de paramètres pourrait-il être moins cher ?
Ça semble plus coûteux et moins précis qu’une vraie simulation physique
Un modèle de machine learning n’offre aucune garantie de ce genre
Cette approche ne sera probablement acceptable que dans le contexte de jeux volontairement bricolés
Si ce ne sont que des effets visuels, ça va, mais si cela influence le gameplay, les résultats ne risquent-ils pas de différer d’un joueur à l’autre ?
J’aimerais avoir l’avis de quelqu’un qui l’a vraiment essayé
Pendant le traitement, est-ce que le système respecte ou construit une sorte de carte de jeu, ou bien est-ce plutôt une promenade psychédélique de rêve où l’on ne peut jamais revenir deux fois au même endroit et où les dimensions spatiales sont étranges ?
La carte du jeu est-elle finie ?
Il ne semble construire aucune carte, ni avoir une compréhension significative de quelque chose qui ressemblerait à un état de jeu
C’est similaire aux RPG basés sur des LLM
On ramasse une épée, on la met dans un sac vide, puis on peut soudainement en sortir une miche de pain et la manger
Ça ressemble davantage à une carte infinie
Il n’y a aucune forme de conscience de carte
C’est plus proche d’une IA de rappel/relecture, qui restitue assez précisément ce qui se trouve dans le jeu de données d’entraînement ; mais si l’on fait quelque chose qui n’y figure pas, comme marcher dans un mur, tout s’effondre complètement et elle débite n’importe quoi
Du n’importe quoi plausible, mais du n’importe quoi quand même
C’est un travail que le groupe de Schmidhuber avait fait en 2018
https://worldmodels.github.io/
Je tenais à le signaler
Ici, le terme rêve est exact, et les scènes de conduite ressemblent aussi à la sensation de conduire dans un rêve
Je pense avoir à peu près compris le principe de base de Stable Diffusion, à savoir générer des images réalistes en inversant le processus de débruitage
Mais, à ma connaissance, cela se fait toujours au niveau des pixels
Existe-t-il des recherches qui tentent de faire cela au niveau des assets 3D ?
L’idée serait d’insérer des assets de moteur de jeu avec une position et une orientation, puis de les ajuster jusqu’à reconstruire une scène crédible
Si c’était possible, on pourrait « rêver » de vraies cartes et d’une vraie physique, et peut-être éviter les sorties un peu brouillonnes qu’on voit dans ce genre de démos ?
Jusqu’ici, il a surtout servi à apprendre une scène à partir de photos prises sous plusieurs angles, puis à ajuster la densité d’un nuage de points pour la reconstruire en volume
Mais il pourrait aussi être possible d’entraîner un modèle sur plusieurs scènes différentes, puis d’appliquer une diffusion à un nuage de points aléatoire pour générer de nouvelles scènes
Le rendu en temps réel de nuages de points est aussi très efficace, ce qui permettrait de créer des mondes de jeu extrêmement réalistes au lieu d’utiliser de la géométrie polygonale
Quelqu’un semble déjà y avoir pensé : https://ar5iv.labs.arxiv.org/html/2311.11221
La diffusion se produit dans l’espace latent, et c’est l’une des grandes percées qui ont permis à tout cela de bien fonctionner
Il existe un modèle qui encode/décode entre les pixels et l’espace latent
L’espace latent peut encoder les concepts nécessaires dans les dimensions nécessaires, et il a généralement moins de dimensions que l’espace des pixels
On obtient donc un espace latent bruité, on le débruite avec le modèle de diffusion, puis on le décode vers l’espace des pixels avec un autre modèle, un autoencodeur variationnel
Ces véhicules entrent assez souvent en collision
Exemple : https://github.com/NVlabs/CTG
L’approche par rétro-ingénierie que tu décris est séduisante parce qu’elle est facile à comprendre
Mais je pense tout de même que se concentrer sur la génération au niveau des pixels est la bonne approche
Les sorties un peu brouillonnes vont probablement s’améliorer rapidement
Doom (https://gamengen.github.io/) et ce travail ont prouvé que c’était possible, donc il y a sans doute déjà beaucoup plus de recherches en cours pour trouver la bonne architecture afin de passer à la HD avec un minimum d’hallucinations
Comme cela s’est déjà produit pour la vidéo, on devrait voir bientôt une percée du même ordre
La génération d’images se fait dans cet espace, qui comporte moins de sorties que les pixels de l’image finale, puis elle est convertie en pixels via le VAE
Je continue de ne pas comprendre comment les gens ne remarquent pas le bruit infernal dans les images et vidéos de réseaux neuronaux
Pour moi, il a toujours été reconnaissable dès le début, et il me met mal à l’aise
Je ressens aussi que les images sont presque toujours étranges d’une manière ou d’une autre, mais on ne parle peut-être pas de la même chose
Tu peux détailler l’expérience dont tu parles ?
Je viens de vérifier rapidement, et ça fonctionne très bien avec les cartes AMD et ROCM PyTorch
Sur de courtes exécutions, ça a l’air plutôt correct
Avec le temps, les détails disparaissent assez vite, et l’arme a tendance à se transformer en déchet multicolore
Je veux aussi souligner qu’aucune des vidéos ne montre ce qui se passe quand on marche dans un mur
Ce cas n’est pas géré de façon très élégante
Là où cela devient vraiment intéressant, c’est si on l’entraîne avec les GTA récents et des vidéos réelles associées, puis qu’on l’utilise pour améliorer en temps réel les visuels d’un vieux jeu comme Vice City
Cela donnera encore une impression de rêve à cause du manque de cohérence temporelle, mais comme la base est cohérente, je ne pense pas que ce soit un gros problème, et le résultat serait incroyable à regarder
Comme tu l’as signalé, la cohérence temporelle n’est pas bonne
Les pixels verts en basse résolution d’une montagne lointaine peuvent être interprétés comme un arbre fruitier sur une frame, puis comme un pin sur la suivante
Il y a eu une démo similaire en 2021 :
https://www.youtube.com/watch?v=3rYosbwXm1w
Se contenter de conduire sans but dans la ville serait possible, et ce serait déjà très cool
Le point clé n’est pas de pouvoir recréer un monde de jeu vidéo, mais de pouvoir simuler le monde réel
On utilise des vidéos de jeux pour l’entraînement simplement parce qu’on peut synthétiser les données nécessaires facilement et à faible coût
Ce système ne sait pas qu’il simule un jeu
Si on lui donne des milliers à des millions d’heures de vidéos du monde réel et des entrées d’agents, on obtient une simulation du monde réel
https://www.reddit.com/r/aivideo/comments/1fx6zdr/gta_iv_wit...
Ça devient de plus en plus délirant
Avec une boucle forte ancien frame et entrée → nouvelle frame, je me demande ce qui se passerait si on commençait avec une image qui n’est pas Counter-Strike
Ou si on lui donnait une carte que le modèle n’a jamais vue : la suivrait-il, ou reviendrait-il à une carte Counter-Strike connue ?
En voyant ça, j’ai envie d’appeler cela un « rêve », parce qu’on a l’impression qu’il rêve de Dust 2