1 Punkte von GN⁺ 2024-10-14 | 1 Kommentare | Auf WhatsApp teilen
  • DIAMOND ist ein Ansatz, bei dem Atari-Umgebungen nicht in diskrete latente Tokens komprimiert werden, sondern mit einem Diffusion-World-Model simuliert werden, in dem anschließend ein Reinforcement-Learning-Agent trainiert wird
  • Der nächste Frame wird bedingt auf der Aktion des Agenten und den vorherigen Frames erzeugt; durch Wiederholung dieses Prozesses entsteht ein spielbares World Model
  • Bei wenigen Denoising-Schritten war DDPM instabil, aber EDM erzeugte selbst mit nur einem Schritt stabile Trajektorien, und DIAMOND verwendet für Konsistenz n=3
  • Auf Atari 100k wird ein durchschnittlicher menschennormalisierter Score von 1.46 erreicht, was unter der 100k-Frame-Bedingung einen neuen Bestwert für innerhalb eines World Models trainierte Agenten darstellt
  • Für die Anwendung auf CS:GO wurden 87 Stunden menschlicher Spieldaten, eine zweistufige Pipeline aus niedrig aufgelöster Vorhersage plus Upsampling sowie ein Modell mit 381M Parametern verwendet; spielbar mit etwa 10 FPS auf einer RTX 3090

Das World-Modeling-Problem, das DIAMOND lösen will

  • World Models sind ein Ansatz, um Reinforcement-Learning-Agenten sicherer und mit höherer Sample-Effizienz zu trainieren
  • Aktuelle World Models modellieren Umgebungsdynamiken meist als Sequenzen diskreter latenter Variablen
  • Solche komprimierten Repräsentationen können für Reinforcement Learning wichtige visuelle Details übersehen
  • DIAMOND überträgt Diffusion-Modelle, die bei der Bildgenerierung starke Ergebnisse erzielt haben, auf World Models
  • DIAMOND steht für DIffusion As a Model Of eNvironment Dreams

So funktioniert das Diffusion-World-Model

  • Das Diffusion-Modell wird darauf trainiert, den nächsten Frame eines Spiels vorherzusagen
  • Zu den Eingaben gehören die Aktionen des Agenten und die vorherigen Frames
  • Wenn der Agent wiederholt neue Aktionen liefert, aktualisiert das Diffusion-Modell den Spielzustand
  • Durch diesen autoregressiven Generierungsprozess fungiert das Diffusion-Modell als World Model, in dem der Agent lernen und spielen kann

Denoising-Design für schnelle Ausführung

  • Um ein World Model schnell zu machen, muss die Anzahl der Denoising-Schritte reduziert werden
  • DDPM wird bei wenigen Denoising-Schritten instabil, weil sich autoregressive Fehler aufaddieren
  • EDM erzeugt selbst mit nur einem Denoising-Schritt stabile Trajektorien
  • In der Boxing-Umgebung interpoliert ein einzelner Denoising-Schritt zwischen möglichen Ergebnissen, wodurch der schwer vorhersehbare schwarze Spieler unscharf erzeugt wird
  • Mehr Denoising-Schritte wählen unter mehreren möglichen Übergangsmodi gezielter einen bestimmten Modus aus und erhöhen so die zeitliche Konsistenz
  • Das Diffusion-World-Model von DIAMOND verwendet n=3 Denoising-Schritte
  • Die Bewegung des weißen Spielers wird von der Policy gesteuert, und da diese Aktion dem World Model gegeben wird, wird sie unabhängig von der Zahl der Denoising-Schritte korrekt vorhergesagt

Leistung auf Atari 100k

  • DIAMOND modelliert wichtige visuelle Details besser als das auf diskreten Tokens basierende IRIS
  • Beim Training eines Reinforcement-Learning-Agenten innerhalb des Diffusion-World-Models wird auf Atari 100k ein durchschnittlicher menschennormalisierter Score von 1.46 erreicht
  • Dieser Wert liegt 46 % über dem menschlichen Niveau
  • Es ist ein neuer Bestwert unter Agenten, die unter der 100k-Frame-Bedingung ausschließlich innerhalb eines World Models trainiert wurden

So wurde auf CS:GO skaliert

  • Das Diffusion-World-Model von DIAMOND wird auch auf die Simulation von 3D-Umgebungen wie Counter-Strike: Global Offensive angewendet
  • Die CS:GO-Version verwendet statt von Reinforcement-Learning-Agenten gesammelter Daten einen festen Datensatz aus 87 Stunden menschlichem Spiel
  • Zur Reduktion der Trainingskosten wird eine zweistufige Pipeline verwendet
    • Zunächst wird die Dynamik in niedriger Auflösung vorhergesagt
    • Danach wird mit einem zweiten Modell hochskaliert
  • Die Modellgröße wächst von 4.4M Parametern für Atari auf 381M Parameter für CS:GO
    • Davon entfallen 51M Parameter auf den zusätzlichen Upsampler
  • Im Upsampler wird stochastisches Sampling verwendet, um die Qualität der visuellen Erzeugung zu verbessern
  • Für das Dynamikmodell ist stochastisches Sampling nicht erforderlich
  • Das CS:GO-Modell wurde 12 Tage lang auf einer RTX 4090 trainiert und ist auf einer RTX 3090 mit etwa 10 FPS spielbar

Direkt ausführen und verfügbare Materialien

  • Code, Agenten und das spielbare World Model sind im GitHub-Repository veröffentlicht
  • Das Installationsbeispiel verwendet die folgenden Befehle
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
  • Atari-World-Model ausführen:
python src/play.py --pretrained
  • CS:GO-World-Model ausführen:
git checkout csgo
python src/play.py
  • Weitere Details finden sich im Paper

Verbleibende Fehlermodi und Skalierungsgrenzen

  • Im Diffusion-World-Model von DIAMOND bleiben mehrere Fehlermodi bestehen
  • Es wird erwartet, dass sich viele Aspekte durch mehr Daten und Rechenleistung verbessern lassen
  • Es gibt jedoch auch Grenzen, die sich nicht allein durch Skalierung lösen lassen, etwa Probleme, die aus begrenztem Modellspeicher entstehen
  • Eine interessante Grenze ist, dass das Modell aufeinanderfolgende Sprünge erlaubt
    • Das Modell verallgemeinert die Auswirkungen von Sprüngen auf die Szenengeometrie
    • Da aufeinanderfolgende Sprünge in den Trainingsdaten nicht häufig genug vorkommen, lernt es nicht, dass sie eigentlich unmöglich sein sollten

1 Kommentare

 
GN⁺ 2024-10-14
Meinungen auf Hacker News
  • Dieses Video https://x.com/Sentdex/status/1845146540555243615 sieht meinen Träumen extrem ähnlich.
    Wenn ich im Traum manchmal hoch springen will, wechselt es genau so an einen anderen Ort, und auch Objekte verändern sich ständig auf diese Weise.
    Es ist erstaunlich zu sehen, wie nah das an einer echten Traumerfahrung ist.

    • Als ich einen Klartraum hatte, sahen alle Buchstaben kaputt aus.
      Als Diffusionsmodelle Aufmerksamkeit bekamen, fiel mir die Verbindung auf, dass auch kaputter Text in generierten Bildern ähnlich ist.
      Vielleicht ist das ein Hinweis darauf, dass ein Teil des menschlichen Unbewussten ziemlich ähnlich wie das Prinzip von Diffusionsmodellen funktioniert.
    • Wenn man genauer hinsieht, scheint der Geist auch im Wachzustand oft dasselbe zu tun.
      Im Sichtfeld fällt es weniger auf, aber bei Aufmerksamkeit und Denken selbst wird es deutlicher.
    • Es ist interessant, wie unterschiedlich Träume von Mensch zu Mensch sind.
      Meine Träume sind visuell ziemlich vollständig konsistent; ich habe im Traum sogar schon Google Maps benutzt, und die Geografie war zwar falsch, aber intern konsistent.
      Allerdings hatte ich im Traum noch nie einen Klartraum, daher könnte dieser Unterschied eine Rolle spielen.
    • Deshalb bin ich nur eingeschränkt erwartungsvoll.
      Im Traumzustand ist irgendetwas entkoppelt, und auch hier gibt es eindeutig eine ähnliche Unterbrechung.
      Diesem Modell scheint ein Weltmodell zu fehlen, wie es Tiere besitzen: starkes räumliches Schlussfolgern und Erwartungen an Kontinuität.
      Natürlich ist vermutlich auch das etwas, das gelernt wird.
    • Sieht extrem ähnlich aus wie damals, als ich DMT-5 genommen habe.
  • Das hier ist ein Modell mit 300 Millionen Parametern, also 1/1300 der Größe eines großen llama-3, und es wurde 12 Tage lang auf einer GTX4090 mit 5 Millionen Frames trainiert.
    Das war 2015 Arbeit auf dem Niveau großer Tech-Unternehmen.
    Wenn man dasselbe im industriellen Maßstab wie bei großen Sprachmodellen macht, dürfte das wirklich enorm werden.

    • Welchen Vorteil hat das genau?
      Counter Strike läuft schon jetzt viel flüssiger als das hier und verschwendet auch keine massiven Rechenressourcen.
    • Wenn 12 Tage auf einer RTX4090 reichen, wird bald jeder im Internet anfangen, sein eigenes Modell zu trainieren.
    • Ich wollte fast dasselbe schreiben und habe dann diesen Kommentar gesehen.
      Das Entwicklungstempo ist wirklich erstaunlich.
      Wir leben in sehr interessanten Zeiten.
    • Es waren zwei 4090, aber im Großen und Ganzen stimmt es.
  • Ein ziemlich aufregendes Ergebnis.
    Es sieht so aus, als könnte man es bereits in Game Engines verwenden, um realistische Physik-Approximationen zu erzeugen.
    Man erzeugt viele Gameplay-Schnipsel mit einer schwereren und realistischeren Physik-Engine, vielleicht CGI, und trainiert dann ein Modell darauf, die Physik zu approximieren; daraus entsteht eine leichtgewichtige Physik-Engine.
    Man könnte auch mehrere spezialisierte Modelle haben, etwa für Rauchdynamik oder Explosionen.
    Selbst wenn es halluziniert, wäre das vermutlich nicht schlimmer als die üblichen Physik-Bugs in Spielen.

    • Ob „selbst wenn es halluziniert, wäre das vermutlich nicht schlimmer als die üblichen Physik-Bugs in Spielen“ stimmt, weiß ich nicht.
      Physik-Bugs sind häufig, aber man kann die schlimmsten spielblockierenden Bugs priorisieren und beheben.
      Bei einem Black-Box-Modell wird das deutlich schwieriger.
    • Mich würde interessieren, worauf die Annahme beruht, dass Inferenz mit neuronalen Netzen billiger ist.
      Newtonsche Physik ist bereits sehr gut verstanden und rechnerisch ziemlich effizient.
      Wie kann es günstiger sein, Newtonsche Physik mit einer Funktionsapproximation aus Milliarden Parametern zu berechnen?
      Das wirkt teurer und ungenauer als eine richtige Physiksimulation.
    • Glaubst du, dass die Inferenz eines neuronalen Netzes mit 13 Millionen Parametern leichter ist als der Betrieb einer traditionellen Physik-Engine?
    • Physik-Bugs sind konsistente Probleme, die man beheben kann.
      Bei Machine-Learning-Modellen gibt es diese Garantie nicht.
      Dieser Ansatz dürfte wahrscheinlich nur im Kontext von absichtlich schlampig gemachten Spielen okay sein.
    • Würde das auch im Multiplayer funktionieren?
      Wenn es nur visuelle Effekte sind, wäre es in Ordnung; aber wenn es das Gameplay beeinflusst, bekäme dann nicht jeder Spieler andere Ergebnisse?
  • Ich frage mich bei Leuten, die es tatsächlich ausprobiert haben:
    Respektiert oder erstellt der Prozess irgendeine Spielkarte, oder ist es eher ein psychedelischer Traumspaziergang, bei dem man nie zweimal an denselben Ort zurückkehren kann und auch die räumlichen Dimensionen seltsam sind?
    Ist die Spielkarte endlich?

    • Schon im ersten Video gibt es eine Stelle, an der vor dem Spieler plötzlich ein Bauwerk erscheint.
      Es scheint keinerlei Karte zu erstellen und auch kein sinnvolles Verständnis von so etwas wie Spielzustand zu haben.
      Es ist ähnlich wie ein LLM-basiertes RPG.
      Man hebt ein Schwert auf, steckt es in eine leere Tasche und kann dann plötzlich einen Laib Brot herausziehen und essen.
    • Ich habe den Artikel nur grob überflogen, aber es dürfte eine traumartige Erfahrung sein, bei der es nicht mit dem Ort übereinstimmt, von dem man gerade kam, selbst wenn man sich um 180 Grad dreht und in die Gegenrichtung läuft.
      Es wirkt eher wie eine unendliche Karte.
    • Ich habe es selbst ausprobiert, und nein.
      Es gibt keinerlei Kartenverständnis.
      Es ist eher eine Abruf-/Replay-KI, die Dinge aus dem Trainingsdatensatz ziemlich genau erinnert; wenn man etwas tut, das nicht in den Daten vorkam, etwa in eine Wand hineinlaufen, bricht sie völlig zusammen und gibt Unsinn aus.
      Plausiblen Unsinn, aber trotzdem Unsinn.
  • Das ist die Arbeit, die Schmidhubers Gruppe 2018 gemacht hat.
    https://worldmodels.github.io/
    Das wollte ich anmerken.

    • Definitiv seiner Zeit voraus.
      Hier ist die Bezeichnung Traum treffend, und auch die Fahrszene ähnelt dem Gefühl, im Traum Auto zu fahren.
    • Es steht in der ersten Referenz des Papers und bekommt die verdiente Anerkennung; man kann den Link also als praktische Hilfe für Leute verstehen, die nicht bis zu den Referenzen schauen.
    • Ich habe es gespielt, und es hat Spaß gemacht; wenn man zu lange überlebt, wird es extrem instabil.
  • Die Grundannahme von Stable Diffusion – also durch Umkehrung des Entrauschungsprozesses realistische Bilder zu erzeugen – glaube ich grob verstanden zu haben.
    Soweit ich weiß, passiert das allerdings immer auf Pixelebene.
    Gibt es Forschung, die das auf Ebene von 3D-Assets versucht?
    Also etwa Game-Engine-Assets mit Position und Ausrichtung einzusetzen und so lange anzupassen, bis eine plausible Szene rekonstruiert ist.
    Wenn das möglich wäre, könnte man reale Karten und reale Physik „erträumen“ und vielleicht die etwas schmutzigen Outputs vermeiden, die man in solchen Demos sieht?

    • Am nächsten dran ist derzeit meiner Meinung nach 3D Gaussian Splatting.
      Bisher wurde es genutzt, um eine Szene aus Fotos aus mehreren Blickwinkeln zu lernen und sie durch Anpassung der Dichte einer Punktwolke volumetrisch zu rekonstruieren.
      Aber es könnte auch möglich sein, ein Modell mit vielen unterschiedlichen Szenen zu trainieren und Diffusion auf einer zufälligen Punktwolke auszuführen, um neue Szenen zu erzeugen.
      Punktwolken lassen sich zudem sehr effizient in Echtzeit rendern, sodass man sie statt polygonaler Geometrie für extrem realistische Spielwelten nutzen könnte.
      Offenbar hatte schon jemand diese Idee: https://ar5iv.labs.arxiv.org/html/2311.11221
    • Bildmodelle entrauschen nicht auf Pixelebene.
      Die Diffusion findet im latenten Raum statt, und das war einer der großen Durchbrüche, die dafür gesorgt haben, dass alles so gut funktioniert.
      Es gibt ein Modell, das zwischen Pixeln und latentem Raum kodiert/dekodiert.
      Der latente Raum kann die benötigten Konzepte in den benötigten Dimensionen kodieren und hat in der Regel weniger Dimensionen als der Pixelraum.
      Man erhält also einen verrauschten latenten Raum, entrauscht ihn mit dem Diffusionsmodell und dekodiert ihn anschließend mit einem anderen Modell, einem Variational Autoencoder, zurück in den Pixelraum.
    • Nicht genau 3D-Assets, aber Diffusionsmodelle werden für Verkehrsgenerierung zur Bewertung von Algorithmen für autonomes Fahren verwendet, etwa zur Erzeugung von Fahrzeugtrajektorien.
      Diese Fahrzeuge kollidieren ziemlich häufig.
      Beispiel: https://github.com/NVlabs/CTG
    • Ich denke, der nächste Schritt ist, das auf Pixelebene zu erzeugen.
      Der beschriebene Reverse-Engineering-Ansatz wirkt attraktiv, weil er leicht zu verstehen ist.
      Trotzdem glaube ich, dass die Konzentration auf Erzeugung auf Pixelebene der richtige Ansatz ist.
      Die etwas unsauberen Outputs werden sich vermutlich in kurzer Zeit verbessern.
      Mit Doom(https://gamengen.github.io/) und dieser Arbeit wurde bewiesen, dass es möglich ist; daher ist wahrscheinlich bereits deutlich mehr Forschung im Gange, um die richtige Architektur für eine Skalierung auf HD und minimale Halluzinationen zu finden.
      Bei Video ist so etwas ebenfalls bereits passiert, daher dürften wir bald einen ähnlichen Durchbruch sehen.
    • Üblicherweise geschieht das nicht auf Pixelebene, sondern auf Ebene des latenten Raums eines Modells wie eines VAE.
      Die Bilderzeugung erfolgt in diesem Raum, der weniger Ausgabewerte hat als die Pixel des finalen Bildes, und wird anschließend über den VAE in Pixel umgewandelt.
  • Ich verstehe weiterhin nicht, wie Leute den höllischen Noise in neuronalen Bildern und Videos nicht bemerken.
    Für mich war er von Anfang an immer erkennbar und beängstigend.

    • Ich frage mich, was genau mit höllischem Noise gemeint ist.
      Ich empfinde Bilder fast immer auf irgendeine Weise als grotesk, aber vielleicht meinst du nicht dasselbe.
      Kannst du genauer beschreiben, wie sich das anfühlt?
    • Wenn es um so etwas wie ein subtiles, aber beunruhigendes Murmeln, Getöse oder eine Dissonanz geht, glaube ich, ungefähr zu verstehen, was gemeint ist.
    • Auch die Augen haben viel Noise.
  • Ich habe es gerade schnell ausprobiert: Mit AMD-Karten und ROCm PyTorch funktioniert es sehr gut.
    Bei kurzen Läufen sieht es ziemlich ordentlich aus.
    Mit der Zeit verschwinden Details recht schnell, und die Waffe neigt dazu, sich in bunten Müll zu verwandeln.
    Außerdem möchte ich anmerken, dass keines der Videos zeigt, was passiert, wenn man in eine Wand hineinläuft.
    Diese Situation wird nicht besonders elegant behandelt.

  • Wirklich interessant wird es, wenn man es mit den neuesten GTA-Teilen und dazugehörigem echtem Videomaterial trainiert und dann nutzt, um die Optik alter Spiele wie Vice City in Echtzeit aufzuwerten.
    Wegen fehlender zeitlicher Konsistenz würde es sich zwar immer noch traumartig anfühlen, aber da die Grundlage konsistent ist, dürfte das kein großes Problem sein, und es würde fantastisch aussehen.

    • Der Ansatz, von einer bestehenden Game-Engine gerenderte Bilder neu zu zeichnen, funktioniert und liefert beeindruckende Ergebnisse.
      Wie erwähnt ist die zeitliche Konsistenz nicht gut.
      Die niedrig aufgelösten grünen Pixel eines entfernten Bergs könnten in einem Frame als Obstbaum und im nächsten als Kiefer interpretiert werden.
      Es gibt eine Demo aus dem Jahr 2021, die etwas Ähnliches gemacht hat:
      https://www.youtube.com/watch?v=3rYosbwXm1w
    • Ein Spiel wie GTA hat so viele Funktionen und komplexe Verzweigungen, dass es schwer sein dürfte, es zum Laufen zu bringen.
      Ziellos durch die Stadt zu fahren wäre machbar, und allein das wäre schon ziemlich cool.
    • Ich verstehe nicht, warum man sich so sehr darauf konzentriert, das für Videospiele zu nutzen.
      Der Kernpunkt ist nicht, dass man eine Videospielwelt nachbilden kann, sondern dass man die reale Welt simulieren kann.
      Man verwendet Spielvideos nur fürs Training, weil sich die benötigten Daten günstig und einfach synthetisieren lassen.
      Dieses System weiß nicht, dass es ein Spiel simuliert.
      Wenn man ihm Tausende bis Millionen Stunden Videos aus der realen Welt plus Agenten-Inputs gibt, erhält man eine Simulation der realen Welt.
    • Neben älteren Beispielen gibt es auch eine neuere Arbeit mit GTA.
      https://www.reddit.com/r/aivideo/comments/1fx6zdr/gta_iv_wit...
    • Als visuelles Upgrade klingt das ziemlich plausibel, weil es dem, was DLSS macht, recht nahekommt.
  • Das wird immer absurder.
    Wenn es eine starke Schleife aus altem Frame und Eingabe → neuem Frame ist, frage ich mich, was passiert, wenn man mit einem Bild startet, das nicht Counter-Strike ist.
    Oder wenn man eine Karte eingibt, die das Modell nie gesehen hat: Folgt es ihr, oder fällt es auf eine bekannte Counter-Strike-Karte zurück?

    • Wenn alle „Träume“ nur diese Karte zeigen, scheint es nur Dust 2 zu kennen.
      Bei so etwas fühlt es sich an, als würde es von Dust 2 träumen, daher möchte ich es „Traum“ nennen.