Künstliche Intelligenz
StreamDiffusion: Eine Pipeline-Lösung für Echtzeit-Interaktionsgenerierung

Aufgrund seines großen Potenzials und der kommerziellen Möglichkeiten, insbesondere in der Gaming-, Broadcasting- und Video-Streaming-Branche, ist die Metaverse derzeit eine der am schnellsten wachsenden Technologien. Moderne Metaverse-Anwendungen nutzen AI-Frameworks, einschließlich Computer-Vision und Diffusionsmodellen, um ihre Realistik zu verbessern. Eine große Herausforderung für Metaverse-Anwendungen ist die Integration verschiedener Diffusionspipelines, die eine geringe Latenz und eine hohe Durchsatzrate bieten, um eine effektive Interaktion zwischen Menschen und diesen Anwendungen zu gewährleisten.
Heutige diffusionbasierte AI-Frameworks sind hervorragend darin, Bilder aus textuellen oder Bild-Prompts zu erstellen, aber sie haben Schwierigkeiten bei Echtzeit-Interaktionen. Diese Einschränkung ist besonders deutlich bei Aufgaben, die kontinuierliche Eingaben und eine hohe Durchsatzrate erfordern, wie z.B. Video-Spiel-Grafiken, Metaverse-Anwendungen, Broadcasting und Live-Video-Streaming.
In diesem Artikel werden wir StreamDiffusion besprechen, eine Echtzeit-Diffusionspipeline, die entwickelt wurde, um interaktive und realistische Bilder zu generieren und die aktuellen Einschränkungen von diffusionbasierten Frameworks bei Aufgaben mit kontinuierlicher Eingabe zu überwinden. StreamDiffusion ist ein innovativer Ansatz, der die sequenzielle Rauschung des Originalbildes in eine Batch-Denoising umwandelt, um eine hohe Durchsatzrate und flüssige Streams zu ermöglichen. Dieser Ansatz weicht von der traditionellen Warte-und-Interagier-Methode ab, die von bestehenden diffusionbasierten Frameworks verwendet wird. In den folgenden Abschnitten werden wir das StreamDiffusion-Framework im Detail besprechen, seine Funktionsweise, Architektur und vergleichbare Ergebnisse gegenüber aktuellen State-of-the-Art-Frameworks. Lassen Sie uns beginnen.
StreamDiffusion: Eine Einführung in Echtzeit-Interaktionsgenerierung
Metaverse sind leistungsintensive Anwendungen, da sie eine große Menge an Daten, einschließlich Texten, Animationen, Videos und Bildern, in Echtzeit verarbeiten, um ihren Benutzern ihre charakteristischen interaktiven Schnittstellen und Erfahrungen zu bieten. Moderne Metaverse-Anwendungen verlassen sich auf AI-basierte Frameworks, einschließlich Computer-Vision, Bildverarbeitung und Diffusionsmodellen, um eine geringe Latenz und eine hohe Durchsatzrate zu gewährleisten und so eine nahtlose Benutzererfahrung zu ermöglichen. Derzeit verlassen sich die meisten Metaverse-Anwendungen auf die Reduzierung der Häufigkeit von Denoising-Iterationen, um eine hohe Durchsatzrate und eine Verbesserung der interaktiven Fähigkeiten in Echtzeit zu gewährleisten. Diese Frameworks verwenden eine gemeinsame Strategie, die entweder die Umformulierung des Diffusionsprozesses mit neuralen ODEs (gewöhnlichen Differentialgleichungen) oder die Reduzierung von Multi-Step-Diffusionsmodellen auf wenige Schritte oder sogar einen Schritt umfasst. Obwohl dieser Ansatz zufriedenstellende Ergebnisse liefert, hat er bestimmte Einschränkungen, einschließlich begrenzter Flexibilität und hoher Rechenkosten.
Andererseits ist StreamDiffusion eine Pipeline-Lösung, die von einem orthogonalen Ansatz ausgeht und die Fähigkeiten des Frameworks zur Generierung interaktiver Bilder in Echtzeit bei gleichzeitiger Gewährleistung einer hohen Durchsatzrate verbessert. StreamDiffusion verwendet eine einfache Strategie, bei der anstelle der Denoising des Original-Eingangs der Denoising-Schritt batchweise durchgeführt wird. Die Strategie wird von asynchroner Verarbeitung inspiriert, da das Framework nicht auf die Fertigstellung des ersten Denoising-Stadiums warten muss, bevor es zum zweiten Stadium übergehen kann, wie in dem folgenden Bild demonstriert wird. Um das Problem der U-Net-Verarbeitungshäufigkeit und der Eingabehäufigkeit synchron zu behandeln, implementiert das StreamDiffusion-Framework eine Warteschlangenstrategie, um den Eingang und die Ausgaben zu zwischenspeichern.

Obwohl das StreamDiffusion-Pipeline asynchrone Verarbeitung inspiriert, ist es auf seine eigene Weise einzigartig, da es GPU-Parallelismus implementiert, der es dem Framework ermöglicht, ein einzelnes UNet-Component zu verwenden, um ein batchweise geräuschtes latentes Merkmal zu denoisen. Darüber hinaus betonen bestehende diffusionbasierte Pipelines die gegebenen Prompts in den generierten Bildern, indem sie Classifier-Free-Guidance einbeziehen, was dazu führt, dass die aktuellen Pipelines mit redundanten und übermäßigen Rechenüberhead belastet sind. Um sicherzustellen, dass das StreamDiffusion-Pipeline nicht mit denselben Problemen konfrontiert ist, implementiert es einen innovativen RCFG- oder Residual-Classifier-Free-Guidance-Ansatz, der virtuelles Restrauschen verwendet, um die negativen Bedingungen zu approximieren, und so ermöglicht, die negativen Rauschbedingungen in den Anfangsstadien des Prozesses selbst zu berechnen. Darüber hinaus reduziert das StreamDiffusion-Pipeline die Rechenanforderungen eines traditionellen Diffusions-Pipelines, indem es eine stochastische Ähnlichkeitsfilterstrategie implementiert, die bestimmt, ob die Pipeline die Eingabebilder verarbeiten sollte, indem sie die Ähnlichkeiten zwischen kontinuierlichen Eingaben berechnet.
Das StreamDiffusion-Framework basiert auf den Erkenntnissen von Diffusionsmodellen und Beschleunigungs-Diffusionsmodellen.

Diffusionsmodelle sind bekannt für ihre außergewöhnlichen Bildgenerierungsfähigkeiten und die Menge an Kontrolle, die sie bieten. Aufgrund ihrer Fähigkeiten haben Diffusionsmodelle ihre Anwendungen in Bildbearbeitung, Text-zu-Bild-Generierung und Video-Generierung gefunden. Darüber hinaus hat die Entwicklung konsistenter Modelle das Potenzial gezeigt, die Stichprobenverarbeitungseffizienz zu verbessern, ohne die Qualität der von dem Modell generierten Bilder zu beeinträchtigen, was neue Möglichkeiten eröffnet hat, die Anwendbarkeit und Effizienz von Diffusionsmodellen zu erweitern, indem die Anzahl der Stichproben reduziert wird. Obwohl Diffusionsmodelle extrem leistungsfähig sind, haben sie eine große Einschränkung: langsame Bildgenerierung. Um diese Einschränkung zu überwinden, haben Entwickler beschleunigte Diffusionsmodelle eingeführt, die keine zusätzlichen Trainingschritte erfordern oder Strategien wie Predictor-Corrector-Strategien und adaptive Schrittgrößen-Löser implementieren, um die Ausgabegeschwindigkeit zu erhöhen.
Der Unterschied zwischen StreamDiffusion und traditionellen diffusionbasierten Frameworks besteht darin, dass letztere sich primär auf die geringe Latenz einzelner Modelle konzentrieren, während ersteres einen Pipeline-Ansatz einführt, der für die Erreichung hoher Durchsatzraten konzipiert ist und eine effiziente interaktive Diffusion ermöglicht.
StreamDiffusion: Funktionsweise und Architektur
Die StreamDiffusion-Pipeline ist eine Echtzeit-Diffusionspipeline, die entwickelt wurde, um interaktive und realistische Bilder zu generieren, und sie verwendet 6 Schlüsselkomponenten, nämlich RCFG oder Residual-Classifier-Free-Guidance, Stream-Batch-Strategie, Stochastische-Ähnlichkeits-Filter, eine Eingabe-Ausgabe-Warteschlange, Model-Beschleunigungswerkzeuge mit Autoencoder und ein Pre-Computing-Verfahren. Lassen Sie uns diese Komponenten im Detail besprechen.
Stream-Batch-Strategie
Traditionell werden die Denoising-Schritte in einem Diffusionsmodell sequenziell durchgeführt, was zu einer signifikanten Erhöhung der U-Net-Verarbeitungszeit in Bezug auf die Anzahl der Verarbeitungsschritte führt. Es ist jedoch wichtig, die Anzahl der Verarbeitungsschritte zu erhöhen, um hochauflösende Bilder zu generieren, und das StreamDiffusion-Framework führt die Stream-Batch-Strategie ein, um die hohe Latenz in interaktiven Diffusionsframeworks zu überwinden.
In der Stream-Batch-Strategie werden die sequenziellen Denoising-Operationen in batchweise Prozesse umstrukturiert, wobei jeder Batch einer vorher festgelegten Anzahl von Denoising-Schritten entspricht, und die Anzahl dieser Denoising-Schritte wird durch die Größe jedes Batches bestimmt. Dank dieses Ansatzes kann jedes Element im Batch um einen Schritt weitergehen, indem es den einzelnen Passthrough-UNet in der Denoising-Sequenz verwendet. Durch die iterative Implementierung der Stream-Batch-Strategie können die Eingabebilder, die zu Zeitpunkt “t” codiert werden, in ihre jeweiligen Bild-zu-Bild-Ergebnisse zu Zeitpunkt “t+n” umgewandelt werden, und so den Denoising-Prozess straffen.
Residual-Classifier-Free-Guidance
CFG oder Classifier-Free-Guidance ist ein AI-Algorithmus, der eine Reihe von Vektorberechnungen zwischen dem ursprünglichen Konditionierungsterm und einem negativen Konditionierungsterm oder Unkonditionierungsterm durchführt, um die Wirkung des ursprünglichen Konditionierungsterms zu verbessern. Der Algorithmus verstärkt die Wirkung des Prompts, obwohl es notwendig ist, individuelle Eingabe-Latent-Variable mit negativer Konditionierungsembettierung zu paaren und diese Embettierungen durch den UNet zu Zeitpunkt “t” zu übergeben.
Um dieses Problem, das durch den Classifier-Free-Guidance-Algorithmus aufgeworfen wird, zu überwinden, führt das StreamDiffusion-Framework den Residual-Classifier-Free-Guidance-Algorithmus ein, um die Rechenkosten für zusätzliche UNet-Interferenzen für negative Konditionierungsembettierungen zu reduzieren. Zuerst wird das codierte Latent-Eingabe an die Rauschverteilung übertragen, indem Werte verwendet werden, die durch den Rauschplaner bestimmt werden. Sobald das Latent-Konsistenzmodell implementiert wurde, kann der Algorithmus die Datenverteilung vorhersagen und das CFG-Restrauschen verwenden, um die nächste Rauschverteilung zu generieren.

Eingabe-Ausgabe-Warteschlange
Das Hauptproblem bei Hochgeschwindigkeits-Bildgenerierungsframeworks sind ihre neuronalen Netzwerkmodule, einschließlich der UNet- und VAE-Komponenten. Um die Effizienz und die Gesamtausgabegeschwindigkeit zu maximieren, verlagern Bildgenerierungsframeworks Prozesse wie Vor- und Nachverarbeitung von Bildern, die keine zusätzliche Verarbeitung durch die neuronalen Netzwerkmodule erfordern, außerhalb der Pipeline, und verarbeiten sie dann parallel. Darüber hinaus werden bei der Verarbeitung des Eingabebildes bestimmte Operationen, einschließlich der Umwandlung von Tensor-Formaten, der Größenanpassung von Eingabebildern und der Normalisierung, durch die Pipeline sorgfältig durchgeführt.
Um die Diskrepanz zwischen den Verarbeitungshäufigkeiten des Modells und der menschlichen Eingabe zu überwinden, integriert die Pipeline ein Eingabe-Ausgabe-Warteschlangensystem, das eine effiziente Parallelisierung ermöglicht, wie im folgenden Bild demonstriert wird.

Die verarbeiteten Eingabetensoren werden methodisch in die Eingabewarteschlange für Diffusionsmodelle eingereiht, und bei jedem Frame ruft das Modell den neuesten Tensor aus der Eingabewarteschlange ab und leitet den Tensor an den VAE-Encoder weiter, um so den Bildgenerierungsprozess zu initiieren. Gleichzeitig wird der Tensor-Ausgang des VAE-Decoders in die Ausgabewarteschlange eingegeben. Schließlich wird die verarbeitete Bildinformation an den Rendering-Client übertragen.
Stochastische Ähnlichkeitsfilter
In Szenarien, in denen die Bilder entweder unverändert bleiben oder nur minimale Änderungen aufweisen, ohne eine statische Umgebung oder ohne aktive Benutzerinteraktion, werden Eingabebilder, die einander ähneln, wiederholt in die UNet- und VAE-Komponenten eingegeben. Die wiederholte Eingabe führt zur Generierung von nahezu identischen Bildern und zu einer zusätzlichen Auslastung von GPU-Ressourcen. Darüber hinaus können in Szenarien mit kontinuierlichen Eingaben unveränderte Eingabebilder gelegentlich auftreten. Um dieses Problem zu überwinden und eine unnötige Auslastung von Ressourcen zu vermeiden, verwendet die StreamDiffusion-Pipeline eine stochastische Ähnlichkeitsfilter-Komponente in ihrer Pipeline. Der stochastische Ähnlichkeitsfilter berechnet zunächst die Kosinus-Ähnlichkeit zwischen dem Referenzbild und dem Eingabebild und verwendet den Kosinus-Ähnlichkeitswert, um die Wahrscheinlichkeit zu berechnen, die nachfolgenden UNet- und VAE-Prozesse zu überspringen.
Basierend auf dem Wahrscheinlichkeitswert entscheidet die Pipeline, ob nachfolgende Prozesse wie VAE-Codierung, 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 Übersprungsmechanismus ermöglicht es der StreamDiffusion-Pipeline, vollständig in dynamischen Szenarien mit geringer Inter-Frame-Ähnlichkeit zu funktionieren, während in statischen Szenarien die Pipeline mit höherer Inter-Frame-Ähnlichkeit funktioniert. Der Ansatz hilft bei der Konservierung von Rechenressourcen und gewährleistet eine optimale GPU-Auslastung basierend auf der Ähnlichkeit der Eingabebilder.
Pre-Computing
Die UNet-Architektur benötigt sowohl Konditionierungsembettierungen als auch Eingabe-Latent-Variable. Traditionell werden die Konditionierungsembettierungen aus Prompt-Embettierungen abgeleitet, die über Frames konstant bleiben. Um die Ableitung aus Prompt-Embettierungen zu optimieren, berechnet die StreamDiffusion-Pipeline diese Prompt-Embettierungen im Voraus und speichert sie in einem Cache, der dann im Streaming- oder interaktiven Modus abgerufen wird. Innerhalb des UNet-Frameworks wird das Key-Value-Paar auf der Grundlage der vorab berechneten Prompt-Embettierung jedes Frames berechnet, und mit geringen Modifikationen im U-Net können diese Key-Value-Paare wiederverwendet werden.
Model-Beschleunigung und Tiny-Autoencoder
Die StreamDiffusion-Pipeline verwendet TensorRT, ein Optimierungstoolkit von Nvidia für Deep-Learning-Schnittstellen, um die VAE- und UNet-Engines zu konstruieren und die Inferenzgeschwindigkeit zu beschleunigen. Um dies zu erreichen, führt die TensorRT-Komponente zahlreiche Optimierungen auf neuronalen Netzen durch, die darauf ausgelegt sind, die Effizienz und die Durchsatzrate für Deep-Learning-Frameworks und -Anwendungen zu steigern.
Um die Geschwindigkeit zu optimieren, konfiguriert die StreamDiffusion die Frameworks so, dass sie feste Eingabedimensionen und statische Batch-Größen verwendet, um eine optimale Speicherzuweisung und Rechengraphen für eine bestimmte Eingabegröße zu gewährleisten und so schnellere Verarbeitungszeiten zu erzielen.

Das obige Bild bietet eine Übersicht über die Inferenz-Pipeline. Die Kern-Diffusions-Pipeline umfasst die UNet- und VAE-Komponenten. Die Pipeline integriert eine Denoising-Batch, einen zufälligen Rausch-Cache, einen vorab berechneten Prompt-Embettierungscache und einen Scheduler-Wert-Cache, um die Geschwindigkeit und die Fähigkeit der Pipeline zu steigern, Bilder in Echtzeit zu generieren. Der stochastische Ähnlichkeitsfilter oder SSF wird eingesetzt, um die GPU-Auslastung zu optimieren und die Diffusions-Pipeline dynamisch zu steuern.
StreamDiffusion: Experimente und Ergebnisse
Um ihre Fähigkeiten zu bewerten, wird die StreamDiffusion-Pipeline auf LCM- und SD-Turbo-Frameworks implementiert. Die TensorRT von Nvidia wird als Model-Beschleuniger verwendet, und um eine leichte Effizienz zu ermöglichen, verwendet die Pipeline den TAESD-Komponent. Lassen Sie uns nun sehen, wie die StreamDiffusion-Pipeline im Vergleich zu aktuellen State-of-the-Art-Frameworks abschneidet.
Quantitative Bewertung
Das folgende Bild zeigt den Effizienzvergleich zwischen dem ursprünglichen sequenziellen UNet und den Denoising-Batch-Komponenten in der Pipeline, und wie man sehen kann, hilft die Implementierung des Denoising-Batch-Ansatzes dabei, die Verarbeitungszeit um etwa 50% zu reduzieren, im Vergleich zu den traditionellen UNet-Schleifen bei sequenziellen Denoising-Schritten.

Darüber hinaus zeigt sich auch bei der durchschnittlichen Inferenzzeit bei verschiedenen Denoising-Schritten eine erhebliche Steigerung mit verschiedenen Beschleunigungsfaktoren im Vergleich zu aktuellen State-of-the-Art-Pipelines, und die Ergebnisse werden im folgenden Bild demonstriert.

Wenn man weitergeht, zeigt die StreamDiffusion-Pipeline mit der RCFG-Komponente eine geringere Inferenzzeit im Vergleich zu Pipelines, die die traditionelle CFG-Komponente enthalten.

Darüber hinaus ist der Einfluss der Verwendung der RCFG-Komponente in den folgenden Bildern im Vergleich zur Verwendung der CFG-Komponente deutlich erkennbar.

Wie man sehen kann, verstärkt die Verwendung von CFG den Einfluss des textuellen Prompts auf die Bildgenerierung, und das Bild ähnelt dem Eingabeprompt viel mehr im Vergleich zu den Bildern, die von der Pipeline ohne die Verwendung der CFG-Komponente generiert werden. Die Ergebnisse verbessern sich weiter durch die Verwendung der RCFG-Komponente, da der Einfluss der Prompts auf die generierten Bilder im Vergleich zur ursprünglichen CFG-Komponente erheblich ist.
Final Thoughts
In diesem Artikel haben wir über StreamDiffusion gesprochen, eine Echtzeit-Diffusionspipeline, die entwickelt wurde, um interaktive und realistische Bilder zu generieren und die aktuellen Einschränkungen von diffusionbasierten Frameworks bei Aufgaben mit kontinuierlicher Eingabe zu überwinden. StreamDiffusion ist ein einfacher und innovativer Ansatz, der darauf abzielt, die sequenzielle Rauschung des Originalbildes in eine Batch-Denoising umzuwandeln. StreamDiffusion zielt darauf ab, eine hohe Durchsatzrate und flüssige Streams zu ermöglichen, indem es den traditionellen Warte-und-Interagier-Ansatz eliminiert, der von aktuellen diffusionbasierten Frameworks verwendet 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.












