- DIAMOND es un enfoque que no comprime los entornos Atari en tokens latentes discretos, sino que los simula con un modelo de mundo por difusión y luego entrena dentro de él a un agente de aprendizaje por refuerzo
- El siguiente frame se genera condicionado por la acción del agente y los frames anteriores; al repetir este proceso, se construye un modelo de mundo jugable
- Con pocos pasos de denoising, DDPM resultó inestable, pero EDM generó trayectorias estables incluso con 1 paso; DIAMOND usa n=3 para mantener la coherencia
- En Atari 100k logró un puntaje promedio normalizado humano de 1.46, marcando un nuevo máximo rendimiento para agentes entrenados dentro de un modelo de mundo bajo la condición de 100k frames
- Para aplicarlo a CS:GO se usaron 87 horas de datos de juego humano, un pipeline de dos etapas de predicción en baja resolución + upsampling, y un modelo de 381M parámetros; es jugable a unos 10 FPS en una RTX 3090
El problema de modelado de mundos que DIAMOND busca resolver
- Un modelo de mundo es un enfoque para entrenar agentes de aprendizaje por refuerzo de forma más segura y eficiente en muestras
- Los modelos de mundo recientes suelen modelar la dinámica del entorno como secuencias de variables latentes discretas
- Estas representaciones comprimidas pueden perder detalles visuales importantes para el aprendizaje por refuerzo
- DIAMOND aplica a los modelos de mundo los modelos de difusión, que han tenido resultados sólidos en generación de imágenes
- El nombre completo de DIAMOND es DIffusion As a Model Of eNvironment Dreams
Cómo funciona el modelo de mundo por difusión
- El modelo de difusión se entrena para predecir el siguiente frame del juego
- La entrada incluye la acción del agente y los frames anteriores
- Cuando el agente entrega nuevas acciones de forma repetida, el modelo de difusión actualiza el estado del juego
- Gracias a este proceso de generación autorregresiva, el modelo de difusión funciona como un modelo de mundo en el que el agente puede aprender y jugar
Diseño de denoising para ejecución rápida
- Para que el modelo de mundo sea rápido, hay que reducir la cantidad de pasos de denoising
- DDPM se vuelve inestable con pocos pasos de denoising, ya que acumula errores autorregresivos
- EDM genera trayectorias estables incluso con denoising de 1 paso
- En el entorno Boxing, el denoising de 1 paso interpola entre resultados posibles, por lo que el jugador negro, difícil de predecir, se genera borroso
- Más pasos de denoising permiten elegir mejor un modo específico entre varios modos de transición posibles, aumentando la coherencia temporal
- El modelo de mundo por difusión de DIAMOND usa n=3 pasos de denoising
- El movimiento del jugador blanco está controlado por la política, y como esa acción se entrega al modelo de mundo, se predice correctamente independientemente de la cantidad de pasos de denoising
Rendimiento en Atari 100k
- DIAMOND modela mejor los detalles visuales importantes que IRIS, basado en tokens discretos
- Al entrenar un agente de aprendizaje por refuerzo dentro del modelo de mundo por difusión, logró en Atari 100k un puntaje promedio normalizado humano de 1.46
- Este puntaje es 46% superior al nivel humano
- Es el nuevo máximo rendimiento entre los agentes entrenados únicamente dentro de un modelo de mundo bajo la condición de 100k frames
Cómo se escaló a CS:GO
- El modelo de mundo por difusión de DIAMOND también se aplica a simulaciones de entornos 3D como Counter-Strike: Global Offensive
- La versión para CS:GO usa un dataset fijo compuesto por 87 horas de juego humano, en lugar de datos recolectados por un agente de aprendizaje por refuerzo
- Para reducir el costo de entrenamiento, se aplica un pipeline de dos etapas
- Primero predice la dinámica en baja resolución
- Luego hace upsampling con un segundo modelo
- El tamaño del modelo aumenta de 4.4M parámetros para Atari a 381M parámetros para CS:GO
- De ellos, 51M parámetros corresponden al upsampler adicional
- En el upsampler se usa muestreo estocástico para mejorar la calidad de generación visual
- El modelo de dinámica no necesita muestreo estocástico
- El modelo de CS:GO se entrenó durante 12 días en una RTX 4090, y es jugable a unos 10 FPS en una RTX 3090
Ejecución directa y materiales publicados
- El código, los agentes y los modelos de mundo jugables están publicados en el repositorio de GitHub
- Un ejemplo de instalación usa los siguientes comandos
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
- Ejecutar el modelo de mundo de Atari:
python src/play.py --pretrained
- Ejecutar el modelo de mundo de CS:GO:
git checkout csgo
python src/play.py
- Más detalles pueden consultarse en el paper
Modos de falla restantes y límites del escalado
- El modelo de mundo por difusión de DIAMOND todavía tiene varios modos de falla
- Se espera que ampliar más los datos y el cómputo mejore muchos aspectos
- Sin embargo, también hay límites que no se resuelven solo con escalado, como los problemas derivados de la memoria limitada del modelo
- Un límite interesante es que el modelo permite saltos consecutivos
- El modelo generaliza el efecto que los saltos tienen sobre la geometría de la escena
- Como los saltos consecutivos no aparecen con suficiente frecuencia en los datos de entrenamiento, no aprende que deberían ser imposibles
1 comentarios
Opiniones en Hacker News
Este video https://x.com/Sentdex/status/1845146540555243615 se parece muchísimo a mis sueños.
A veces, cuando intento saltar alto en un sueño, cambio a otro lugar exactamente de esa forma, y los objetos también siguen cambiando así.
Es sorprendente ver lo cerca que está de una experiencia onírica real.
Cuando los modelos de difusión empezaron a llamar la atención, se me ocurrió la conexión de que el texto roto en las imágenes generadas era parecido.
Tal vez sea una pista de que una parte del inconsciente humano funciona de una manera bastante similar al principio de los modelos de difusión.
En el campo visual se nota menos, pero se ve más claramente en la atención y el pensamiento mismos.
Mis sueños suelen ser visualmente totalmente coherentes, al punto de que alguna vez usé Google Maps dentro de un sueño; la geografía estaba mal, pero internamente era coherente.
Aunque nunca he tenido un sueño lúcido dentro de un sueño, así que esa diferencia podría influir.
En el estado de sueño hay algo desconectado, y aquí claramente también hay una desconexión similar.
A este modelo parece faltarle un modelo del mundo como el fuerte razonamiento espacial y la expectativa de continuidad que tienen los animales.
Claro que eso probablemente también se aprende.
Este es un modelo de 300 millones de parámetros, 1/1300 del tamaño de un llama-3 grande, entrenado con 5 millones de frames durante 12 días en una GTX4090.
Era el tipo de trabajo que hacían las grandes tecnológicas en 2015.
Si se hace lo mismo a escala industrial, como con los grandes modelos de lenguaje, sería realmente impresionante.
Counter Strike ya corre mucho más fluido que esto y no desperdicia una cantidad enorme de cómputo.
El ritmo de avance es realmente asombroso.
Vivimos en una época muy interesante.
Es un resultado bastante emocionante.
Ya parece útil para generar aproximaciones físicas realistas en motores de juegos.
Si se crean muchos fragmentos de gameplay con un motor físico más pesado y realista, quizá con CGI, y se entrena al modelo para aproximar la física, se obtiene un motor físico liviano.
También se podrían tener varios modelos especializados, por ejemplo para dinámica de humo o para explosiones.
Aunque haya alucinaciones, no creo que sean peores que los bugs de física habituales en los juegos.
Los bugs de física son comunes, pero se pueden priorizar y corregir empezando por los más graves, los que impiden avanzar en el juego.
Con un modelo de caja negra, hacer eso se vuelve mucho más difícil.
La física newtoniana ya se conoce muy bien y su cálculo también es bastante eficiente.
¿Cómo podría ser más barato calcular física newtoniana con una aproximación de función de miles de millones de parámetros?
Parece más caro y menos preciso que una simulación física adecuada.
En los modelos de machine learning no existe esa garantía.
Este enfoque probablemente solo sea aceptable en el contexto de juegos deliberadamente torpes.
Si solo son efectos visuales, estaría bien, pero si afecta el gameplay, ¿no produciría resultados distintos para cada jugador?
Me da curiosidad saber de alguien que lo haya probado.
Durante el procesamiento, ¿respeta o va construyendo algún mapa del juego, o es más bien un paseo psicodélico dentro de un sueño, donde no se puede volver dos veces al mismo lugar y las dimensiones espaciales también son raras?
¿El mapa del juego es finito?
No parece construir ningún mapa ni tener una comprensión significativa de algo parecido al estado del juego.
Es similar a un RPG basado en LLM.
Como recoger una espada, meterla en una mochila vacía y luego, de pronto, sacar una barra de pan y comértela.
Parece más cercano a un mapa infinito.
No tiene ningún tipo de reconocimiento de mapas.
Se parece más a una IA de recuerdo/reproducción, que evoca con bastante precisión lo que está en el dataset de entrenamiento; si haces algo que no estaba en los datos, como caminar contra una pared, se derrumba por completo y empieza a decir tonterías.
Tonterías plausibles, pero tonterías al fin.
Esto es trabajo que ya había hecho el grupo de Schmidhuber en 2018.
https://worldmodels.github.io/
Quería señalarlo.
Aquí la expresión sueño es precisa, y la escena de manejo también se parece a la sensación de conducir en un sueño.
Creo que entiendo más o menos la premisa básica de Stable Diffusion: generar imágenes realistas invirtiendo el proceso de eliminación de ruido
Pero, por lo que sé, esto siempre ocurre a nivel de píxeles
¿Hay investigaciones que intenten hacer esto a nivel de assets 3D?
Algo así como insertar assets de un motor de juegos con posición y orientación, y ajustarlos hasta reconstruir una escena convincente
Si fuera posible, ¿no se podrían “soñar” mapas reales y física real, evitando las salidas algo sucias que aparecen en estas demos?
Hasta ahora se ha usado para aprender una escena a partir de fotos tomadas desde varios ángulos y reconstruirla volumétricamente ajustando la densidad de una nube de puntos
Pero también podría ser posible entrenar un modelo con muchas escenas distintas y aplicar difusión sobre una nube de puntos aleatoria para generar escenas nuevas
Renderizar nubes de puntos en tiempo real también es muy eficiente, así que podría usarse para crear mundos de juego tremendamente realistas en vez de geometría poligonal
Parece que alguien ya pensó en eso: https://ar5iv.labs.arxiv.org/html/2311.11221
La difusión ocurre en el espacio latente, y ese fue uno de los grandes avances que hizo que todo funcionara bien
Hay un modelo que codifica/decodifica entre los píxeles y el espacio latente
El espacio latente puede codificar los conceptos necesarios en las dimensiones necesarias y, por lo general, tiene menos dimensiones que el espacio de píxeles
Así que se obtiene un espacio latente con ruido, se le quita el ruido con el modelo de difusión y luego se decodifica al espacio de píxeles con otro modelo, un autoencoder variacional
Estos vehículos chocan con bastante frecuencia
Ejemplo: https://github.com/NVlabs/CTG
El enfoque de ingeniería inversa que describes puede parecer atractivo porque es fácil de entender
Aun así, creo que centrarse en la generación a nivel de píxeles es el enfoque correcto
Las salidas algo sucias probablemente mejoren en poco tiempo
Como ya demostraron que es posible con Doom (https://gamengen.github.io/) y con este trabajo, es muy probable que ya haya más investigación en marcha para encontrar la arquitectura correcta que escale a HD y con mínimas alucinaciones
Eso ya pasó con el video, así que parece que pronto veremos un avance similar
La generación de imágenes ocurre en este espacio, que tiene menos salidas que los píxeles de la imagen final, y después se transforma a píxeles mediante el VAE
Sigo sin entender cómo la gente no nota el ruido infernal en las imágenes y videos de redes neuronales
Para mí siempre fue reconocible y aterrador desde el principio
Yo también siento que las imágenes casi siempre son grotescas de alguna manera, pero quizá no estamos hablando de lo mismo
¿Puedes explicar un poco más cómo es esa experiencia?
Acabo de hacer una prueba rápida y funciona muy bien con tarjetas AMD y ROCm PyTorch
En ejecuciones cortas se ve bastante bien
Con el tiempo, los detalles desaparecen bastante rápido y el arma tiende a convertirse en basura multicolor
También quiero señalar que ninguno de los videos muestra qué pasa si caminas hacia una pared
Esa situación no la maneja con mucha elegancia
Donde esto se pone realmente interesante es si se entrena con los GTA más recientes y también con videos reales relacionados, y luego se usa para mejorar en tiempo real los visuales de juegos viejos como Vice City
Seguiría sintiéndose como un sueño por la falta de consistencia temporal, pero como la base es consistente, no creo que sea un gran problema, y se vería increíble
Como señalas, la consistencia temporal no es buena
Un píxel verde de baja resolución de una montaña lejana podría interpretarse como un árbol frutal en un fotograma y como un pino en el siguiente
Hay una demo de 2021 que hizo algo parecido:
https://www.youtube.com/watch?v=3rYosbwXm1w
Tal vez sea posible si solo se trata de manejar por la ciudad sin rumbo, y eso por sí solo ya sería muy genial
Lo importante no es que pueda recrear mundos de videojuegos, sino que puede simular el mundo real
Se usan videos de juegos para el entrenamiento solo porque los datos necesarios se pueden sintetizar de forma barata y sencilla
Este sistema no sabe que está simulando un juego
Si le das miles o millones de horas de video del mundo real y entradas de agentes, obtendrás una simulación del mundo real
https://www.reddit.com/r/aivideo/comments/1fx6zdr/gta_iv_wit...
Esto se está volviendo cada vez más absurdo
Si hay un bucle fuerte de fotogramas antiguos y entradas → fotograma nuevo, me pregunto qué pasaría si empiezas con una imagen que no sea de Counter-Strike
O si le metes un mapa que el modelo nunca vio, ¿lo seguirá o volverá a un mapa conocido de Counter-Strike?
Al ver cosas así, dan ganas de llamarlo “sueño”, porque se siente como si estuviera soñando con Dust 2