Künstliche Intelligenz
StreamDiffusion: Eine Lösung auf Pipeline-Ebene für die interaktive Generierung in Echtzeit

Aufgrund seines enormen Potenzials und seiner Kommerzialisierungsmöglichkeiten, insbesondere in den Bereichen Spiele, Rundfunk und Video-Streaming, ist das Metaverse derzeit eine der am schnellsten wachsenden Technologien. Moderne Metaverse-Anwendungen nutzen KI-Frameworks, einschließlich Computer Vision und Diffusionsmodellen, um ihren Realismus zu verbessern. Eine große Herausforderung für Metaverse-Anwendungen ist die Integration verschiedener Diffusionspipelines, die eine geringe Latenz und einen hohen Durchsatz bieten und so eine effektive Interaktion zwischen Menschen und diesen Anwendungen gewährleisten.
Heutige diffusionsbasierte KI-Frameworks zeichnen sich durch die Erstellung von Bildern aus Text- oder Bildaufforderungen aus, sind jedoch bei Echtzeitinteraktionen unzureichend. Diese Einschränkung zeigt sich besonders deutlich bei Aufgaben, die eine kontinuierliche Eingabe und einen hohen Durchsatz erfordern, wie z. B. Videospielgrafiken, Metaverse-Anwendungen, Rundfunk und Live-Video-Streaming.
In diesem Artikel besprechen wir StreamDiffusion, eine Echtzeit-Diffusionspipeline, die zur Generierung interaktiver und realistischer Bilder entwickelt wurde und sich mit den aktuellen Einschränkungen diffusionsbasierter Frameworks bei Aufgaben mit kontinuierlicher Eingabe befasst. StreamDiffusion ist ein innovativer Ansatz, der das sequentielle Rauschen des Originalbilds in eine Batch-Rauschunterdrückung umwandelt, um einen hohen Durchsatz und Flüssigkeitsströme zu ermöglichen. Dieser Ansatz entfernt sich von der traditionellen Warte-und-Interaktionsmethode, die von bestehenden Unternehmen verwendet wird diffusionsbasierte Frameworks. In den kommenden Abschnitten werden wir uns im Detail mit dem StreamDiffusion-Framework befassen und dessen Funktionsweise, Architektur und Vergleichsergebnisse mit aktuellen State-of-the-Art-Frameworks untersuchen. Lass uns anfangen.
StreamDiffusion: Eine Einführung in die interaktive Echtzeitgenerierung
Metaverse sind leistungsintensive Anwendungen, da sie große Datenmengen, darunter Texte, Animationen, Videos und Bilder, in Echtzeit verarbeiten, um ihren Benutzern die typischen interaktiven Schnittstellen und Erlebnisse zu bieten. Moderne Metaverse-Anwendungen basieren auf KI-basierten Frameworks, einschließlich Computer Vision, Bildverarbeitung und Diffusionsmodellen, um niedrige Latenzzeiten und einen hohen Durchsatz zu erreichen und so ein nahtloses Benutzererlebnis zu gewährleisten. Derzeit sind die meisten Metaverse-Anwendungen darauf angewiesen, das Auftreten von Denoising-Iterationen zu reduzieren, um einen hohen Durchsatz sicherzustellen und die interaktiven Fähigkeiten der Anwendung in Echtzeit zu verbessern. Diese Frameworks entscheiden sich für eine gemeinsame Strategie, die entweder die Neuformulierung des Diffusionsprozesses mit neuronalen ODEs (Ordinary Differential Equations) oder die Reduzierung mehrstufiger Diffusionsmodelle auf wenige Schritte oder sogar einen einzigen Schritt beinhaltet. Obwohl der Ansatz zufriedenstellende Ergebnisse liefert, weist er bestimmte Einschränkungen auf, darunter begrenzte Flexibilität und hohe Rechenkosten.
Andererseits ist StreamDiffusion eine Lösung auf Pipeline-Ebene, die in einer orthogonalen Richtung beginnt und die Fähigkeiten des Frameworks verbessert, interaktive Bilder in Echtzeit zu generieren und gleichzeitig einen hohen Durchsatz sicherzustellen. StreamDiffusion verwendet eine einfache Strategie, bei der das Framework den Entrauschungsschritt stapelt, anstatt die ursprüngliche Eingabe zu entrauschen. Die Strategie ist von der asynchronen Verarbeitung inspiriert, da das Framework nicht auf den Abschluss der ersten Entrauschungsstufe warten muss, bevor es mit der zweiten Stufe fortfahren kann, wie in der folgenden Abbildung dargestellt. Um das Problem der U-Net-Verarbeitungsfrequenz und der Eingabefrequenz synchron anzugehen, implementiert das StreamDiffusion-Framework eine Warteschlangenstrategie zum Zwischenspeichern der Eingaben und Ausgaben.
Obwohl sich die StreamDiffusion-Pipeline von der asynchronen Verarbeitung inspirieren lässt, ist sie auf ihre Art einzigartig, da sie GPU-Parallelität implementiert, die es dem Framework ermöglicht, eine einzelne UNet-Komponente zu verwenden, um ein latentes Batch-Rauschen-Feature zu entstören. Darüber hinaus vorhanden diffusionsbasierte Pipelines Betonen Sie die gegebenen Eingabeaufforderungen in den generierten Bildern, indem Sie eine klassifikatorfreie Anleitung integrieren, wodurch die aktuellen Pipelines mit redundantem und übermäßigem Rechenaufwand ausgestattet sind. Um sicherzustellen, dass die StreamDiffusion-Pipeline nicht auf dieselben Probleme stößt, implementiert sie einen innovativen RCFG- oder Residual Classifier-Free Guidance-Ansatz, der ein virtuelles Restrauschen verwendet, um die negativen Bedingungen anzunähern, sodass das Framework die negativen Rauschbedingungen zunächst berechnen kann Phasen des Prozesses selbst. Darüber hinaus reduziert die StreamDiffusion-Pipeline auch den Rechenaufwand einer herkömmlichen Diffusions-Pipeline, indem sie eine stochastische Ähnlichkeitsfilterungsstrategie implementiert, die bestimmt, ob die Pipeline die Eingabebilder verarbeiten soll, indem sie die Ähnlichkeiten zwischen kontinuierlichen Eingaben berechnet.
Das StreamDiffusion-Framework basiert auf den Erkenntnissen von Diffusionsmodelle und Beschleunigungsdiffusionsmodelle.
Diffusionsmodelle sind bekannt für ihre außergewöhnlichen Bilderzeugungsfähigkeiten und das hohe Maß an Kontrolle, das sie bieten. Aufgrund ihrer Fähigkeiten haben Diffusionsmodelle ihre Anwendung in der Bildbearbeitung, der Text-zu-Bild-Generierung und der Videogenerierung gefunden. Darüber hinaus hat die Entwicklung konsistenter Modelle das Potenzial gezeigt, die Effizienz der Probenverarbeitung zu verbessern, ohne die Qualität der vom Modell erzeugten Bilder zu beeinträchtigen, was neue Möglichkeiten zur Erweiterung der Anwendbarkeit und Effizienz von Diffusionsmodellen durch die Reduzierung der Anzahl der Probenahmeschritte eröffnet hat. Obwohl Diffusionsmodelle äußerst leistungsfähig sind, weisen sie tendenziell eine große Einschränkung auf: die langsame Bilderzeugung. Um dieser Einschränkung zu begegnen, haben Entwickler beschleunigte Diffusionsmodelle eingeführt, diffusionsbasierte Frameworks, die keine zusätzlichen Trainingsschritte erfordern oder Prädiktor-Korrektur-Strategien und adaptive Schrittgrößenlöser implementieren, um die Ausgabegeschwindigkeiten zu erhöhen.
Der Unterscheidungsfaktor zwischen StreamDiffusion und herkömmlichen diffusionsbasierten Frameworks besteht darin, dass sich letzteres in erster Linie auf die geringe Latenz einzelner Modelle konzentriert, ersteres jedoch einen Ansatz auf Pipeline-Ebene einführt, der darauf ausgelegt ist, hohe Durchsätze zu erreichen und eine effiziente interaktive Diffusion zu ermöglichen.
StreamDiffusion: Arbeiten und Architektur
Die StreamDiffusion-Pipeline ist eine Echtzeit-Diffusionspipeline, die zur Generierung interaktiver und realistischer Bilder entwickelt wurde und sechs Schlüsselkomponenten verwendet, nämlich: RCFG oder Residual Classifier Free Guidance, Stream Batch-Strategie, stochastischer Ähnlichkeitsfilter, eine Eingabe-Ausgabe-Warteschlange und Werkzeuge zur Modellbeschleunigung mit Autoencoder und einem Vorberechnungsverfahren. Lassen Sie uns ausführlich über diese Komponenten sprechen.
Stream-Batch-Strategie
Traditionell erfolgt die Rauschunterdrückung in a Diffusionsmodell werden sequentiell ausgeführt, was zu einer erheblichen Erhöhung der U-Net-Verarbeitungszeit und der Anzahl der Verarbeitungsschritte führt. Es ist jedoch wichtig, die Anzahl der Verarbeitungsschritte zu erhöhen, um Bilder mit hoher Wiedergabetreue zu erzeugen, und das StreamDiffusion-Framework führt die Stream Batch-Strategie ein, um die Auflösung mit hoher Latenz in interaktiven Diffusions-Frameworks zu überwinden.
Bei der Stream-Batch-Strategie werden die sequentiellen Entrauschungsvorgänge in Batch-Prozesse umstrukturiert, wobei jeder Batch einer vorgegebenen Anzahl von Entrauschungsschritten entspricht und die Anzahl dieser Entrauschungsschritte durch die Größe jedes Batches bestimmt wird. Dank des Ansatzes kann jedes Element im Stapel mithilfe des einzelnen Passthrough-UNet in der Rauschunterdrückungssequenz einen Schritt weitergehen. Durch die iterative Implementierung der Stream-Batch-Strategie können die im Zeitschritt „t“ codierten Eingabebilder in ihre jeweiligen Bild-zu-Bild-Ergebnisse im Zeitschritt „t+n“ umgewandelt werden, wodurch der Entrauschungsprozess rationalisiert wird.
Kostenlose Anleitung zum Restklassifikator
CFG oder Classifier Free Guidance ist ein KI-Algorithmus, der eine Vielzahl von Vektorberechnungen zwischen dem ursprünglichen Konditionierungsterm und einem negativen Konditionierungs- oder Unkonditionierungsterm durchführt, um die Wirkung der ursprünglichen Konditionierung zu verstärken. Der Algorithmus verstärkt die Wirkung der Eingabeaufforderung, obwohl es zur Berechnung des negativen Konditionierungsrestrauschens erforderlich ist, einzelne latente Eingabevariablen mit negativer Konditionierungseinbettung zu koppeln und anschließend die Einbettungen zur Referenzzeit durch das UNet zu leiten.
Um dieses Problem des Classifier Free Guidance-Algorithmus zu lösen, führt das StreamDiffusion-Framework den Residual Classifier Free Guidance-Algorithmus ein, mit dem Ziel, die Rechenkosten für zusätzliche UNet-Interferenzen für die Einbettung negativer Konditionierung zu reduzieren. Zunächst wird die codierte latente Eingabe auf die Rauschverteilung übertragen, indem vom Rauschplaner ermittelte Werte verwendet werden. Sobald das latente Konsistenzmodell implementiert wurde, kann der Algorithmus die Datenverteilung vorhersagen und das CFG-Restrauschen verwenden, um die nächste Stufe der Rauschverteilung zu generieren.
Eingabe-Ausgabe-Warteschlange
Das Hauptproblem bei Hochgeschwindigkeits-Bilderzeugungs-Frameworks sind ihre neuronalen Netzwerkmodule, einschließlich der UNet- und VAE-Komponenten. Um die Effizienz und die Gesamtausgabegeschwindigkeit zu maximieren, verschieben Bilderzeugungs-Frameworks Prozesse wie die Vor- und Nachbearbeitung von Bildern, die keine zusätzliche Bearbeitung durch die neuronalen Netzwerkmodule erfordern, außerhalb der Pipeline, wo sie anschließend parallel verarbeitet werden. Darüber hinaus werden im Hinblick auf die Verarbeitung des Eingabebilds bestimmte Vorgänge, einschließlich der Konvertierung des Tensorformats, der Größenänderung von Eingabebildern und der Normalisierung, von der Pipeline sorgfältig ausgeführt.
Um die Ungleichheit in den Verarbeitungsfrequenzen zwischen dem Modelldurchsatz und der menschlichen Eingabe zu beseitigen, integriert die Pipeline ein Eingabe-Ausgabe-Warteschlangensystem, das eine effiziente Parallelisierung ermöglicht, wie in der folgenden Abbildung dargestellt.
Die verarbeiteten Eingabetensoren werden zunächst methodisch für Diffusionsmodelle in die Warteschlange gestellt, und während jedes Frames ruft das Modell den neuesten Tensor aus der Eingabewarteschlange ab und leitet den Tensor an den VAE-Encoder weiter, wodurch der Bilderzeugungsprozess eingeleitet wird. Gleichzeitig wird die Tensorausgabe des VAE-Decoders in die Ausgabewarteschlange eingespeist. Abschließend werden die verarbeiteten Bilddaten an den Rendering-Client übermittelt.
Stochastischer Ähnlichkeitsfilter
In Szenarien, in denen die Bilder ohne statische Umgebung oder ohne aktive Benutzerinteraktion entweder unverändert bleiben oder nur minimale Änderungen aufweisen, werden einander ähnliche Eingabebilder wiederholt in UNet- und VAE-Komponenten eingespeist. Die wiederholte Zuführung führt zur Erzeugung nahezu identischer Bilder und zu einem zusätzlichen Verbrauch von GPU-Ressourcen. Darüber hinaus können in Szenarien mit kontinuierlichen Eingaben gelegentlich unveränderte Eingabebilder auftauchen. Um dieses Problem zu lösen und eine unnötige Nutzung von Ressourcen zu verhindern, verwendet die StreamDiffusion-Pipeline eine stochastische Ähnlichkeitsfilterkomponente in ihrer Pipeline. Der stochastische Ähnlichkeitsfilter berechnet zunächst die Kosinusähnlichkeit zwischen dem Referenzbild und dem Eingabebild und berechnet anhand der Kosinusähnlichkeitsbewertung die Wahrscheinlichkeit, dass die nachfolgenden UNet- und VAE-Prozesse übersprungen werden.
Auf der Grundlage des Wahrscheinlichkeitswerts entscheidet die Pipeline, ob nachfolgende Prozesse wie VAE-Kodierung, VAE-Dekodierung und U-Net übersprungen werden sollen oder nicht. Wenn diese Prozesse nicht übersprungen werden, speichert die Pipeline das Eingabebild zu diesem Zeitpunkt und aktualisiert gleichzeitig das Referenzbild, das in Zukunft verwendet werden soll. Dieser wahrscheinlichkeitsbasierte Überspringmechanismus ermöglicht es der StreamDiffusion-Pipeline, in dynamischen Szenarien mit geringer Inter-Frame-Ähnlichkeit vollständig zu funktionieren, während die Pipeline in statischen Szenarien mit höherer Inter-Frame-Ähnlichkeit arbeitet. Der Ansatz trägt zur Schonung der Rechenressourcen bei und gewährleistet außerdem eine optimale GPU-Auslastung basierend auf der Ähnlichkeit der Eingabebilder.
Vorberechnung
Die UNet-Architektur benötigt sowohl Konditionierungseinbettungen als auch latente Eingabevariablen. Traditionell werden die konditionierenden Einbettungen von sofortigen Einbettungen abgeleitet, die über Frames hinweg konstant bleiben. Um die Ableitung aus Prompt-Einbettungen zu optimieren, hat die StreamDiffusion-Pipeline diese Prompt-Einbettungen vorberechnet und in einem Cache gespeichert, die dann im Streaming- oder interaktiven Modus aufgerufen werden. Innerhalb des UNet-Frameworks wird das Schlüssel-Wert-Paar auf der Grundlage der vorberechneten Eingabeaufforderungseinbettung jedes Frames berechnet, und mit geringfügigen Änderungen im U-Net können diese Schlüssel-Wert-Paare wiederverwendet werden.
Modellbeschleunigung und Tiny AutoEncoder
Die StreamDiffusion-Pipeline nutzt TensorRT, ein Optimierungs-Toolkit von Nvidia für Deep-Learning-Schnittstellen, um die VAE- und UNet-Engines zu erstellen und die Inferenzgeschwindigkeit zu beschleunigen. Um dies zu erreichen, führt die TensorRT-Komponente zahlreiche Optimierungen an neuronalen Netzen durch, die die Effizienz steigern und den Durchsatz für Deep-Learning-Frameworks und -Anwendungen steigern sollen.
Um die Geschwindigkeit zu optimieren, konfiguriert StreamDiffusion das Framework so, dass es feste Eingabedimensionen und statische Stapelgrößen verwendet, um eine optimale Speicherzuweisung und Berechnungsdiagramme für eine bestimmte Eingabegröße sicherzustellen und so schnellere Verarbeitungszeiten zu erreichen.
Die obige Abbildung bietet einen Überblick über die Inferenzpipeline. Die Kerndiffusionspipeline beherbergt die UNet- und VAE-Komponenten. Die Pipeline umfasst einen Denoising-Batch, einen Cache für abgetastetes Rauschen, einen vorberechneten Cache für die Einbettung von Eingabeaufforderungen und einen Cache für Scheduler-Werte, um die Geschwindigkeit und die Fähigkeit der Pipeline, Bilder in Echtzeit zu generieren, zu erhöhen. Der Stochastic Similarity Filter oder SSF wird eingesetzt, um die GPU-Nutzung zu optimieren und auch den Durchgang des Diffusionsmodells dynamisch zu steuern.
StreamDiffusion: Experimente und Ergebnisse
Um ihre Fähigkeiten zu bewerten, wird die StreamDiffusion-Pipeline auf LCM- und SD-Turbo-Frameworks implementiert. Als Modellbeschleuniger wird TensorRT von NVIDIA verwendet. Um VAE mit geringer Effizienz zu ermöglichen, nutzt die Pipeline die TAESD-Komponente. Werfen wir nun einen Blick auf die Leistung der StreamDiffusion-Pipeline im Vergleich zu aktuellen State-of-the-Art-Frameworks.
Quantitative Evaluation
Die folgende Abbildung zeigt den Effizienzvergleich zwischen dem ursprünglichen sequentiellen UNet und den Rauschunterdrückungs-Batch-Komponenten in der Pipeline. Wie man sieht, trägt die Implementierung des Rauschunterdrückungs-Batch-Ansatzes dazu bei, die Verarbeitungszeit im Vergleich zum herkömmlichen UNet deutlich um fast 50 % zu reduzieren Schleifen mit aufeinanderfolgenden Entrauschungsschritten.
Darüber hinaus ist auch die durchschnittliche Inferenzzeit bei verschiedenen Rauschunterdrückungsschritten mit unterschiedlichen Beschleunigungsfaktoren im Vergleich zu aktuellen Pipelines auf dem neuesten Stand der Technik erheblich angestiegen. Die Ergebnisse sind in der folgenden Abbildung dargestellt.
Im weiteren Verlauf weist die StreamDiffusion-Pipeline mit der RCFG-Komponente im Vergleich zu Pipelines mit der herkömmlichen CFG-Komponente eine kürzere Inferenzzeit auf.
Darüber hinaus werden die Auswirkungen der Verwendung der RCFG-Komponente im Vergleich zur Verwendung der CFG-Komponente in den folgenden Bildern deutlich.
Wie man sieht, verstärkt die Verwendung von CFG die Wirkung der Textaufforderung bei der Bildgenerierung, und das Bild ähnelt den Eingabeaufforderungen viel mehr im Vergleich zu den Bildern, die von der Pipeline ohne Verwendung der CFG-Komponente generiert werden. Die Ergebnisse verbessern sich durch die Verwendung der RCFG-Komponente noch weiter, da der Einfluss der Eingabeaufforderungen auf die generierten Bilder im Vergleich zur ursprünglichen CFG-Komponente erheblich ist.
Abschließende Gedanken
In diesem Artikel haben wir über StreamDiffusion gesprochen, eine Echtzeit-Diffusionspipeline, die zur Generierung interaktiver und realistischer Bilder entwickelt wurde, und haben uns mit den aktuellen Einschränkungen befasst, die diffusionsbasierte Frameworks bei Aufgaben mit kontinuierlicher Eingabe mit sich bringen. StreamDiffusion ist ein einfacher und neuartiger Ansatz, der darauf abzielt, das sequentielle Rauschen des Originalbilds in eine Batch-Rauschunterdrückung umzuwandeln. StreamDiffusion zielt darauf ab, einen hohen Durchsatz und flüssige Ströme zu ermöglichen, indem der traditionelle Warte- und Interaktionsansatz eliminiert wird, der von aktuellen diffusionsbasierten Frameworks gewählt wird. Die potenziellen Effizienzgewinne unterstreichen das Potenzial der StreamDiffusion-Pipeline für kommerzielle Anwendungen, die Hochleistungsrechnen und überzeugende Lösungen für generative KI bieten.