1 puntos por GN⁺ 2024-10-14 | 1 comentarios | Compartir por WhatsApp
  • 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

 
GN⁺ 2024-10-14
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 tuve un sueño lúcido, todas las letras se veían rotas.
      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.
    • Si se observa con atención, incluso estando despierto parece que la mente a menudo hace lo mismo.
      En el campo visual se nota menos, pero se ve más claramente en la atención y el pensamiento mismos.
    • Es interesante lo mucho que varían los sueños de una persona a otra.
      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.
    • Por eso me genera expectativas, pero limitadas.
      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.
    • Se parece demasiado a cuando probé DMT-5 hace tiempo.
  • 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.

    • ¿Qué ventaja tiene exactamente eso?
      Counter Strike ya corre mucho más fluido que esto y no desperdicia una cantidad enorme de cómputo.
    • Si 12 días con una RTX4090 bastan, pronto cualquiera en Internet va a empezar a entrenar su propio modelo.
    • Vine a decir casi lo mismo y vi este comentario.
      El ritmo de avance es realmente asombroso.
      Vivimos en una época muy interesante.
    • Son dos 4090, pero en general sí.
  • 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.

    • No estoy tan seguro de que, “aunque haya alucinaciones, no 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.
    • Me da curiosidad saber en qué se basa la idea de que la inferencia de una red neuronal sería más barata.
      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.
    • ¿Crees que la inferencia de una red neuronal de 13 millones de parámetros es más liviana que ejecutar un motor físico tradicional?
    • Los bugs de física son problemas coherentes que se pueden arreglar.
      En los modelos de machine learning no existe esa garantía.
      Este enfoque probablemente solo sea aceptable en el contexto de juegos deliberadamente torpes.
    • ¿Funcionaría también en multijugador?
      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?

    • Con solo ver el primer video, hay una parte en la que aparece de golpe una estructura frente al jugador.
      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.
    • Leí el texto por encima, pero parece que sería una experiencia onírica en la que, aunque gires 180 grados y camines en dirección contraria, no corresponde con el lugar del que acabas de venir.
      Parece más cercano a un mapa infinito.
    • Lo probé personalmente, y no.
      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.

    • Definitivamente se adelantó a su tiempo.
      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.
    • Está incluido en la primera referencia del paper y recibe el crédito que corresponde, así que puede verse como que solo se proporciona el enlace por comodidad para quienes no miran hasta las referencias.
    • Lo jugué y fue divertido; si sobrevives demasiado tiempo, se vuelve tremendamente inestable.
  • 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?

    • Creo que lo más cercano hoy es 3D Gaussian Splatting
      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
    • Los modelos de imagen no eliminan ruido a nivel de píxeles
      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
    • No son exactamente assets 3D, pero los modelos de difusión se usan para generación de tráfico en la evaluación de algoritmos de conducción autónoma, por ejemplo para generar trayectorias de vehículos
      Estos vehículos chocan con bastante frecuencia
      Ejemplo: https://github.com/NVlabs/CTG
    • Creo que generar esto a nivel de píxeles es el siguiente paso
      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
    • Normalmente no se hace a nivel de píxeles, sino a nivel de espacio latente de modelos como un VAE
      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

    • Me da curiosidad qué quieres decir exactamente con ruido infernal
      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?
    • Si te refieres a una especie de murmullo, alboroto o disonancia sutil pero inquietante, creo que más o menos entiendo lo que quieres decir
    • Los ojos también tienen mucho ruido
  • 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

    • Redibujar las imágenes generadas por un motor de juego existente funciona y produce resultados sorprendentes
      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
    • Creo que un juego como GTA sería difícil de hacer funcionar porque tiene demasiadas funciones y demasiadas ramas complejas
      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
    • No entiendo que se enfoquen tanto en usar esto solo para videojuegos
      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
    • Además de ejemplos más antiguos, hay un trabajo nuevo hecho con GTA
      https://www.reddit.com/r/aivideo/comments/1fx6zdr/gta_iv_wit...
    • Usarlo como mejora visual suena plausible, porque se parece bastante a lo que hace DLSS
  • 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?

    • Por lo visto, como todos los “sueños” son de ese mapa, parece que solo conoce Dust 2
      Al ver cosas así, dan ganas de llamarlo “sueño”, porque se siente como si estuviera soñando con Dust 2