Engineering

Wie wir KI-Beatmap-Generierung interaktiv schnell gemacht haben

Ein osu! mania-Mapset in etwa 20 Sekunden GPU-Zeit statt einer Minute oder mehr: wohin die Zeit bei ManiaGAI geht und welche Entscheidungen sie eingespart haben.

Ein Generator, auf den du minutenlang wartest, ist ein Batch-Job. Du reichst einen Song ein, machst etwas anderes und kommst zurück zu dem, was er gebaut hat – und wenn es dir nicht gefällt, kostet dich ein anderer Style oder eine andere Auswahl an Schwierigkeiten noch eine Wartezeit. Ein Generator, der in Sekunden antwortet, ist ein Werkzeug: Du probierst, hörst rein, passt an und probierst es noch einmal.

Wegen dieses Unterschieds haben wir Latenz bei ManiaGAI Version 2 als Design-Vorgabe für das ganze System behandelt, statt sie erst am Ende zu optimieren. Version 1 brauchte für ein Mapset eine Minute oder länger. Version 2 braucht etwa 20 Sekunden GPU-Zeit für ein komplettes Mapset bei einem typischen Song – meist 13 bis 25 Sekunden, je nach Song und gewünschten Schwierigkeiten. Hier steht, wohin diese Zeit geht und welche Entscheidungen den Rest herausgeholt haben.

Anatomie einer Anfrage

  1. Dein Browser
  2. Timing ∥ Musik-Features
  3. Planner
  4. Noter
  5. Validierung
  6. Download

Ein gemessener Produktionslauf aus dem Launch von v2: ein 2:50 langer Song,5 Schwierigkeiten, auf einer NVIDIA T4 GPU – 12,7 Sekunden insgesamt.

Laufzeiten der einzelnen Schritte einer ManiaGAI v2-Generierung
SchrittZeit
Timing + Musik-Features (parallel ausgeführt)3,8 s
Planung (alle Schwierigkeiten)1,0 s
Notengenerierung (alle 5 Schwierigkeiten)6,1 s
Gesamter Lauf12,7 s

GPU-Rechenzeit für einen Song auf dem Launch-System von v2 (1. Oktober 2026), ohne Upload, Warteschlange und Download.

1. Die Audio-Arbeit erledigen, bevor jemand auf Erstellen drückt

Jeder hochgeladene Song muss dekodiert, lautheitsnormalisiert und in ein einheitliches Format neu kodiert werden, bevor die Modelle ihn verwenden können. Auf einem Server sind das ein paar Sekunden Arbeit, auf die die GPU sonst warten würde. Bei ManiaGAI passiert das in deinem Browser, sobald du die Datei auswählst – während du noch Tastenzahl und Schwierigkeiten wählst. Wenn du auf Erstellen drückst, ist die Arbeit meist schon erledigt. Dauert die Vorbereitung des Songs auf einem langsamen Gerät länger als 20 Sekunden, übernimmt stattdessen der Server – die Optimierung hält also nie jemanden auf.

2. Timing und Musikverständnis parallel ausführen

Zwei Dinge müssen über den Song bekannt sein, bevor die Planung beginnt: sein Timing-Raster (aus dem Open-Source-Modell Beat This plus unserem eigenen Grid-Fitting) und seine musikalischen Features (aus dem Musikmodell MERT). Sie hängen nicht voneinander ab, also warten sie auch nicht aufeinander: Die GPU führt Beat This und MERT aus, während das Grid-Fitting gleichzeitig auf der CPU läuft. Im Lauf oben hat der gesamte Verständnis-Schritt 3,8 Sekunden gedauert.

3. Jede Schwierigkeit in einem Durchgang generieren

Ein ManiaGAI-Mapset hat bis zu zehn Schwierigkeiten. Sie nacheinander zu generieren, würde die Zeit mit der Anzahl der Schwierigkeiten multiplizieren. Stattdessen wird jede gewünschte Schwierigkeit gemeinsam, in einem einzigen gebatchten GPU-Durchgang geplant und generiert – sie teilen sich denselben Song und dieselben musikalischen Features, nur die Ziele unterscheiden sich. So passen im Lauf oben fünf Schwierigkeiten Notengenerierung in 6,1 Sekunden.

4. Das ganze Chart verfeinern, statt es Note für Note zu schreiben

Das Notenmodell ist nicht-autoregressiv: Es erzeugt das ganze Chart in einer festen Anzahl von Verfeinerungsdurchgängen statt Token für Token vom Anfang des Songs bis zum Ende – die Zahl der Modellschritte ist also fest, egal wie viele Noten das Chart am Ende hat. (Warum das Modell so arbeitet, ist eine eigene Geschichte: der Artikel über Planner + Noter.)

5. Von einem Snapshot starten, nicht bei null

Die Generierung läuft auf serverlosen GPU-Workern – es läuft also nicht immer ein Worker, wenn eine Anfrage ankommt. Die Modelle zu laden und alles aus dem Nichts aufzuwärmen, würde dieser ersten Anfrage viele Sekunden hinzufügen. Stattdessen werden Worker aus einem Speicher-Snapshot wiederhergestellt, der aufgenommen wurde, nachdem alles geladen und aufgewärmt war – so ist ein frischer Worker in etwa einer Sekunde bereit, statt diese Zeit mit dem Laden von Modellen zu verbringen.

6. Nicht an der Ziellinie warten

Die letzten Schritte haben früher ihre eigene Verzögerung hinzugefügt. Jetzt wird die herunterladbare .osz in dem Moment zusammengestellt, in dem die Charts fertig sind, und eine fertige Map wird in dem Augenblick in „Meine Charts“ gespeichert, in dem die Generierung endet – selbst wenn du die Seite verlassen hast. Der Fortschritt im Generator zeigt den tatsächlichen Schritt, in dem sich jede Generierung befindet, damit eine Wartezeit nie ein Rätsel ist.

Noch einmal schneller, mit identischen Charts

Am 8. Oktober 2026 haben wir eine schnellere Implementierung des Generierungssystems ausgeliefert: Maps werden jetzt etwa doppelt so schnell generiert, und die Charts sind exakt dieselben – gleiche Eingabe, gleiche Ausgabe. Für diese Änderung haben wir eine feste Regel aufgestellt: Ein Speed-up, der verändert, was das Modell schreibt, ist eine Modelländerung und muss auch als solche beurteilt werden. Nur die Wartezeit wurde kürzer.

Was Geschwindigkeit bringt

Geschwindigkeit verändert, wie ManiaGAI genutzt wird. Sie macht einen zweiten Style oder eine andere Auswahl an Schwierigkeiten zu einer Sache von Sekunden, lässt einen Ablauf aus Vorschau und anschließendem Download ganz natürlich wirken und macht es möglich, ein kostenloses Angebot am Laufen zu halten. Deshalb optimieren wir auch die gesamte Anfrage – vom Browser bis zum Download – und nicht nur das Modell: Spieler spüren die Wartezeit, nicht die GPU-Zeit.

Wo diese Schritte im System sitzen, zeigt die Technologie-Seite; was sich wann geändert hat, das Changelog.