Le 20 juillet 2026, une petite équipe soutenue par Reactor a poussé quelque chose d'inhabituel sur GitHub : ni une démo, ni un article de recherche, mais la totalité du pipeline d'entraînement d'un modèle du monde de niveau frontière — accompagné du récit détaillé de tout ce qui a mal tourné en chemin.
Le projet s'appelle OpenDreamer, et il s'agit d'une reproduction ouverte de Dreamer 4 de DeepMind. En quelques jours il a dépassé la centaine d'étoiles, avec une démo navigateur qui permet de basculer, image par image, entre un flux Minecraft réel et un flux halluciné par un réseau de neurones.
Pour qui construit des agents en 2026, cela mérite attention. Non pas parce que vous allez entraîner un modèle du monde Minecraft le trimestre prochain, mais parce que l'architecture sous-jacente constitue le plan public le plus clair à ce jour de ce qui manque à la plupart des stacks d'agents : un simulateur dans lequel l'agent peut s'entraîner.
Ce qu'est réellement un modèle du monde
Un LLM prédit le token suivant. Un modèle du monde prédit l'état suivant d'un environnement, conditionné par une action.
Donnez-lui l'image courante et l'action « déplacer la souris vers la gauche, maintenir le clic gauche », et il renvoie l'image qui suivrait. Enchaînez ces prédictions et vous obtenez un simulateur qui n'a jamais été programmé — il a été appris à partir de vidéo.
Cette distinction pèse plus lourd qu'il n'y paraît. Les frameworks d'agents actuels gèrent la planification en demandant à un modèle de langage de raisonner en texte sur ce qui pourrait arriver. Un modèle du monde permet à l'agent de dérouler le futur et de regarder. Il peut essayer une action mille fois dans sa propre tête, à faible coût, avant de s'engager une seule fois dans l'environnement réel.
Dreamer 4 de DeepMind a prouvé l'approche à une échelle jamais atteinte. Il est devenu le premier agent à obtenir des diamants dans Minecraft en étant entraîné uniquement sur des données hors ligne — sans jamais s'exercer dans le jeu réel. La tâche exige des séquences de plus de 20 000 actions souris et clavier choisies à partir de pixels bruts. Il a surpassé l'agent hors ligne VPT d'OpenAI en utilisant environ 100 fois moins de données.
Le hic : l'article décrivait le résultat, pas la recette. La reproduction était laissée en exercice.
Ce que publie OpenDreamer
OpenDreamer est une implémentation JAX/Flax NNX couvrant le pipeline complet :
- Un tokenizer vidéo causal qui compresse les images brutes en latents
- L'outillage pour tokeniser des jeux de données MP4 de type Minecraft/VPT en shards ArrayRecord
- Un modèle de dynamique latente conditionné par l'action — le modèle du monde proprement dit
- La génération de rollouts et le calcul du FVD pour mesurer la qualité
Les auteurs sont Diego Martì Monso, Francesco Sacco et Edward Hu, avec le calcul et le runtime fournis par Reactor. Le dépôt est next-state/open-dreamer, et un dépôt d'inférence séparé exécute les checkpoints entraînés sur vos propres vidéos et séquences d'actions.
La boucle d'agent — clonage de comportement et RL, la partie qui transforme le modèle du monde en véritable agent Dreamer 4 — figure à la feuille de route mais n'est pas encore livrée. Ce qui existe aujourd'hui, c'est la partie difficile : le simulateur.
L'architecture, en bref
Tokenizer
Un auto-encodeur masqué à base de transformer atteignant environ 100x de compression. L'équipe a délibérément écarté les pertes KL et adversariales au profit du masquage, au motif que cela « rend l'espace latent plus diffusable » — autrement dit, le modèle de dynamique, qui est un modèle de diffusion, a une cible plus facile à atteindre. L'entraînement est aussi plus rapide et l'échelle plus prévisible.
Le prototypage s'est fait sur CoinRun, un jeu de plateforme 2D à génération procédurale qui tient sur un seul GPU, avant de passer à Minecraft. Sur CoinRun, ils ont mesuré une mise à l'échelle compute-optimale d'environ N ∝ C^0,56 pour la taille du modèle et D ∝ C^0,44 pour les données — proche d'une racine carrée dans les deux cas.
Modèle de dynamique
C'est là que résident les choix intéressants. Le modèle de dynamique est un transformer block-causal doté de deux chemins d'attention distincts :
- une couche espace, où l'information se propage au sein d'une même image
- une couche temps causale, où l'information se propage entre les images
Les séquences sont repliées en blocs de la forme (action précédente, état, politique). Chaque état porte des tokens latents spatiaux pour le contenu visuel, plus des tokens de niveau de bruit et de taille de pas, plus des tokens registres qui servent de bloc-notes partagé.
L'entraînement repose sur le diffusion forcing avec flow matching, combiné à des shortcut models pour le contrôle de la taille de pas. Le shortcut forcing est l'astuce qui a rendu Dreamer 4 exploitable : il réduit drastiquement le nombre d'étapes de débruitage nécessaires, ce qui permet à un modèle vidéo par diffusion d'atteindre une inférence interactive en temps réel sur un seul GPU au lieu de peiner plusieurs secondes par image.
La perte est une x-prédiction (prédire les données propres) évaluée dans l'espace v, que l'équipe a trouvée nettement plus stable qu'une v-prédiction pure.
Les notes d'ingénierie sont le vrai trésor
La plupart des reproductions ouvertes livrent du code et restent muettes sur les six semaines de runs ratés. Le compte rendu d'OpenDreamer fait l'inverse, et se lit comme un guide de terrain pour l'entraînement de modèles vidéo par diffusion. Quelques éléments qui se généralisent bien au-delà de ce projet :
Muon plutôt que LaProp. LaProp produisait des pics de perte aléatoires. Muon s'est révélé stable. La comparaison seule a coûté environ 400 heures-B200 — un rappel qu'à cette échelle, le choix de l'optimiseur relève de l'expérience, pas de la préférence.
L'EMA n'est pas optionnelle. Utiliser les poids en ligne à l'inférence « donne des résultats médiocres ». Pour les modèles de diffusion en particulier, la moyenne mobile exponentielle des paramètres est l'artefact que vous livrez réellement.
Les frontières de précision décident de la stabilité. Leur répartition : paramètres en float32, multiplications matricielles et entrées d'attention en BF16, normalisation en float32, et tête de sortie du flux de dynamique en float32. Se tromper sur ces frontières déstabilisait l'entraînement — leçon bien plus précise que « utilisez la précision mixte ».
Le goulot d'étranglement était le chargement des données, pas le GPU. Décoder les MP4 à la volée avec ffmpeg n'arrivait pas à alimenter un B200. La solution : pré-tokeniser l'ensemble au format .arrayrecord, charger avec Grain, et maintenir un buffer de prefetch côté GPU. Résultat : 57–58 % d'utilisation des FLOPs modèle sur B200, fermement dans la région compute-bound au-delà du point de croisement roofline à 292 FLOP/octet.
Le parallélisme simple l'a emporté. À 1,6 milliard de paramètres et environ 24 Gio d'état modèle, l'équipe a évalué FSDP et a malgré tout retenu le parallélisme de données classique — le surcoût de communication dépassait le bénéfice du sharding. Les longues séquences vidéo ont été gérées par activation checkpointing et un batch d'une séquence par GPU.
La μ-paramétrisation a été écartée, les tailles de modèles ne couvrant qu'environ un ordre de grandeur et Muon étant suffisamment stable sans elle.
Ce dernier ensemble de décisions est typiquement le genre de savoir qu'on n'acquiert qu'en brûlant un budget d'entraînement.
Le faire tourner
Le workflow tient en quatre scripts et un jeu de configs YAML :
pip install uv
uv sync
source .venv/bin/activate
# 1. Entraîner le tokenizer vidéo causal
uv run scripts/train_tokenizer.py
# 2. Encoder les épisodes complets en ArrayRecords latents
uv run scripts/tokenize_minecraft_dataset.py
# 3. Entraîner le modèle de dynamique conditionné par l'action
uv run scripts/train_dynamics.py
# 4. Générer les rollouts et les évaluer
uv run scripts/eval_fvd.pyEntre les étapes 2 et 3 se glisse un transfert manuel facile à manquer : la tokenisation écrit metadata/latent_stats.npz, et la moyenne et l'écart-type latents de ce fichier doivent être recopiés dans la config du dataset latent avant l'entraînement de la dynamique.
import numpy as np
stats = np.load("/path/to/tokenized_data/metadata/latent_stats.npz")
print("latent_mean:", stats["mean"].tolist())
print("latent_std:", stats["std"].tolist())
print("num_videos:", int(stats["num_videos"]))Les prérequis sont Python 3.11, uv, et un environnement JAX compatible CUDA 12. Les données brutes arrivent sous forme de fichiers shard-*.array_record, chaque enregistrement étant un dict picklé contenant les octets MP4, la forme de la vidéo et les actions. Les statistiques de pixels sont propres au dataset et doivent être recalculées à chaque changement de source vidéo.
Une note pratique : le tokenizer peut s'entraîner sur des fenêtres bien plus courtes que les épisodes finalement encodés. Des enregistrements fixes de 256 images s'entraînent très bien avec des fenêtres de 16 images, puis sont tokenisés en épisodes latents complets de 256 images. Ce découplage économise beaucoup de mémoire durant la phase d'itération.
Pourquoi cela compte au-delà de Minecraft
Il serait facile de ranger les modèles du monde au rayon « recherche sur les jeux » et de passer à autre chose. Ce serait une erreur, et la raison tient à la forme du problème plutôt qu'au domaine.
Les modèles du monde deviennent rentables quand une tâche exige un état persistant, une prédiction conditionnée par l'action et une évaluation contrefactuelle bon marché. Minecraft est un banc d'essai commode pour exactement ces propriétés — horizons longs, récompenses rares, observations en pixels — mais ces propriétés se retrouvent partout : robotique d'entrepôt, conduite autonome, contrôle de procédés industriels, et tout agent devant s'engager dans une action irréversible.
Le cadrage 2026 n'est pas « les modèles du monde remplacent les LLM ». C'est une division du travail. Les modèles de langage excellent dans l'abstraction, les interfaces symboliques, l'orchestration d'outils et l'explication aux humains. Les modèles du monde excellent dans la dynamique, les rollouts et les contrefactuels au sein d'un domaine plus étroit. Une stack d'agents solide finit par vouloir les deux — le LLM fixe l'objectif et le décompose, le modèle du monde vérifie si le plan survit au contact de l'environnement.
C'est le même écart architectural que celui décrit dans Des boucles aux graphes : le tournant des architectures d'agents IA et dans notre analyse des modèles de raisonnement face aux modèles rapides. Les frameworks d'agents sont devenus bons en orchestration. Il leur manque encore un moyen économique de demander « que se passe-t-il si je fais ça ? » sans le faire réellement.
L'argument économique est tout aussi direct. La famille Cosmos de NVIDIA a été entraînée sur l'ordre de 20 millions d'heures de vidéo du monde réel ; une échelle que seules quelques organisations peuvent atteindre. L'apport d'OpenDreamer est de montrer qu'un modèle du monde de 1,6 milliard de paramètres, entraîné sur un jeu de données de gameplay public, donne un simulateur interactif en temps réel sur un seul GPU — en publiant chaque décision qui l'a rendu possible. Voir notre couverture de NVIDIA Cosmos 3 Edge pour l'extrémité industrielle du même spectre.
À surveiller ensuite
Trois éléments décideront si cela devient une infrastructure ou reste un artefact de recherche.
La boucle d'agent. Le dépôt livre le modèle du monde mais pas la boucle de clonage de comportement et de RL qui se construit dessus. Tant qu'elle n'est pas là, OpenDreamer est un simulateur, pas un agent. C'est à la feuille de route.
Le transfert de domaine. La vidéo Minecraft est abondante et étiquetée en actions presque gratuitement. La plupart des domaines réels ne sont ni l'un ni l'autre. La question ouverte, pour tout cas d'usage robotique ou industriel, est la quantité de vidéo étiquetée en actions réellement nécessaire — et si l'histoire de mise à l'échelle CoinRun-vers-Minecraft tient quand l'environnement cesse d'être un jeu.
La licence. GitHub signale actuellement une licence non standard pour ce dépôt. Si vous comptez bâtir commercialement dessus, lisez le fichier de licence avant le code.
À retenir
OpenDreamer ne va pas changer votre stack de production ce mois-ci. Ce qu'il change, c'est ce que vous pouvez inspecter. Un modèle du monde de niveau frontière — tokenizer, dynamique, recette d'entraînement et liste franche de ce qui a cassé — est désormais public, en JAX lisible, avec une démo navigateur qui rend l'idée concrète en une trentaine de secondes.
Pour les équipes qui réfléchissent sérieusement aux agents au-delà du schéma prompt-et-appel-d'outil, c'est un meilleur point de départ qu'un framework de plus.
Chez Noqta, nous construisons des agents IA et de l'automatisation pour des entreprises en Tunisie, en Arabie saoudite et dans toute la région MENA. Si vous cherchez où les agents s'insèrent dans vos opérations, contactez-nous.
Sources : Compte rendu OpenDreamer · next-state/open-dreamer sur GitHub · Page projet Dreamer 4 · Training Agents Inside of Scalable World Models (arXiv:2509.24527)