Modele i platformy AI
StreamDiffusion: Rozwiązanie na poziomie potoku dla generacji interaktywnej w czasie rzeczywistym

Ze względu na ogromny potencjał i możliwości komercyjne, zwłaszcza w grach, nadawaniu i przesyłaniu wideo, Metaverse jest obecnie jedną z najszybciej rozwijających się technologii. Współczesne aplikacje Metaverse wykorzystują ramy AI, w tym wizję komputerową i modele dyfuzyjne, aby poprawić ich realizm. Jednym z istotnych wyzwań dla aplikacji Metaverse jest integracja różnych potoków dyfuzyjnych, które zapewniają niską latencję i wysoką przepustowość, zapewniając skuteczną interakcję między ludźmi a tymi aplikacjami.
Dzisiejsze ramy AI oparte na dyfuzyjności doskonale radzą sobie z tworzeniem obrazów z podpowiedziami tekstowymi lub obrazowymi, ale nie radzą sobie z interakcjami w czasie rzeczywistym. Ograniczenie to jest szczególnie widoczne w zadaniach, które wymagają ciągłego wprowadzania danych i wysokiej przepustowości, takich jak grafika w grach wideo, aplikacje Metaverse, nadawanie i transmisja wideo na żywo.
W tym artykule omówimy StreamDiffusion, potok dyfuzyjny w czasie rzeczywistym, opracowany do generowania interaktywnych i realistycznych obrazów, rozwiązując istniejące ograniczenia ram dyfuzyjnych w zadaniach z ciągłym wprowadzaniem danych. StreamDiffusion to innowacyjne podejście, które przekształca sekwencyjne szumienie oryginalnego obrazu w szumienie partii, mając na celu umożliwienie wysokiej przepustowości i płynnych strumieni. To podejście odsuwa się od tradycyjnej metody “czekaj i interakcja” stosowanej przez istniejące ramy dyfuzyjne. W następnych sekcjach szczegółowo omówimy ramę StreamDiffusion, jej działanie, architekturę i wyniki porównawcze z bieżącymi ramami stanu sztuki. Zaczynajmy.
StreamDiffusion: Wprowadzenie do generacji interaktywnej w czasie rzeczywistym
Aplikacje Metaverse są aplikacjami wymagającymi dużej wydajności, ponieważ przetwarzają duże ilości danych, w tym teksty, animacje, filmy i obrazy w czasie rzeczywistym, aby zapewnić użytkownikom ich znakomite interaktywne interfejsy i doświadczenia. Współczesne aplikacje Metaverse opierają się na ramach AI, w tym wizji komputerowej, przetwarzaniu obrazu i modelach dyfuzyjnych, aby osiągnąć niską latencję i wysoką przepustowość, zapewniając użytkownikom płynne doświadczenie.
StreamDiffusion jest rozwiązaniem na poziomie potoku, które zaczyna się od ortogonalnego kierunku i zwiększa możliwości ramy do generowania interaktywnych obrazów w czasie rzeczywistym, zapewniając wysoką przepustowość. StreamDiffusion wykorzystuje prostą strategię, w której zamiast odhałasowania oryginalnego wejścia, potok grupuje krok odhałasowania. Strategia ta czerpie inspirację z przetwarzania asynchronicznego, ponieważ ramy nie muszą czekać na zakończenie pierwszego etapu odhałasowania, zanim będą mogły przejść do drugiego etapu, jak to pokazano na poniższym obrazie. Aby rozwiązać problem częstotliwości przetwarzania U-Net i częstotliwości wejścia, ramy StreamDiffusion wdrożone strategię kolejki, aby buforować wejście i wyjścia.

Chociaż potok StreamDiffusion czerpie inspirację z przetwarzania asynchronicznego, jest on wyjątkowy, ponieważ wdrożone jest równoległe przetwarzanie GPU, co pozwala ramom wykorzystać pojedynczy komponent U-Net do odhałasowania partii szumu latentnego. Ponadto istniejące potoki dyfuzyjne kładą nacisk na dane wejściowe w generowanych obrazach, włączając w to wolną od klasyfikatora pomoc, w wyniku czego bieżące potoki są obciążone zbędnymi i nadmiernymi obciążeniami obliczeniowymi. Aby uniknąć tych samych problemów, potok StreamDiffusion wdrożone innowacyjne podejście RCFG lub Rezydualnej Wolnej od Klasyfikatora Pomocy, które wykorzystuje wirtualny szum rezydualny do aproksymacji warunków negatywnych, co pozwala ramom obliczyć warunki szumu negatywnego na wczesnych etapach procesu.
Ramy StreamDiffusion opierają się na wiedzy z modeli dyfuzyjnych i przyspieszonych modeli dyfuzyjnych.

Modele dyfuzyjne są znane ze swoich wyjątkowych możliwości generowania obrazów i ilości kontroli, jaką oferują. Dzięki tym możliwościom, modele dyfuzyjne znalazły zastosowanie w edycji obrazu, generowaniu obrazu z tekstu i generowaniu wideo. Ponadto rozwój spójnych modeli wykazał potencjał do poprawy wydajności przetwarzania próbek bez kompromisów w jakości generowanych obrazów, co otworzyło nowe możliwości zwiększenia wydajności i efektywności modeli dyfuzyjnych poprzez zmniejszenie liczby kroków próbkowania. Chociaż są one niezwykle zdolne, modele dyfuzyjne mają znaczącą wadę: powolne generowanie obrazu. Aby rozwiązać ten problem, deweloperzy wprowadzili przyspieszone modele dyfuzyjne, ramy dyfuzyjne, które nie wymagają dodatkowych kroków szkolenia ani wdrożenia strategii korygujących i rozwiązań rozmiaru kroku, aby zwiększyć prędkość wyjścia.
Różnica między StreamDiffusion a tradycyjnymi ramami dyfuzyjnymi polega na tym, że podczas gdy te ostatnie koncentrują się głównie na niskiej latencji poszczególnych modeli, StreamDiffusion wprowadza podejście na poziomie potoku, zaprojektowane do osiągania wysokiej przepustowości, umożliwiając efektywną dyfuzyjną interakcję.
StreamDiffusion: Działanie i Architektura
Potok StreamDiffusion to potok dyfuzyjny w czasie rzeczywistym, opracowany do generowania interaktywnych i realistycznych obrazów, i składa się z 6 kluczowych komponentów: RCFG lub Rezydualnej Wolnej od Klasyfikatora Pomocy, strategii partii, filtra podobieństwa stochastycznego, kolejki wejścia-wyjścia, narzędzi przyspieszania modelu z autoenkoderem i procedury pre-komputacji. Omówmy te komponenty szczegółowo.
Strategia Partii
Tradycyjnie, kroki odhałasowania w modelu dyfuzyjnym są wykonywane sekwencyjnie, co skutkuje znacznym zwiększeniem czasu przetwarzania U-Net w zależności od liczby kroków przetwarzania. Jednakże, w celu wygenerowania obrazów o wysokiej wierności, konieczne jest zwiększenie liczby kroków przetwarzania, a ramy StreamDiffusion wprowadzają strategię partii, aby pokonać wysoką latencję w interaktywnych ramach dyfuzyjnych.
W strategii partii, sekwencyjne operacje odhałasowania są restrukturyzowane w procesy partii, z każdą partią odpowiadającą określonej liczbie kroków odhałasowania, a liczba tych kroków odhałasowania jest określana przez rozmiar każdej partii. Dzięki temu podejściu, każdy element partii może przejść o jeden krok dalej przy użyciu pojedynczego przejścia U-Net w sekwencji odhałasowania. Wdrożenie strategii partii w sposób iteracyjny pozwala na transformację obrazów wejściowych zakodowanych w czasie “t” w ich odpowiednie wyniki obrazu w czasie “t+n”, co upraszcza proces odhałasowania.
Rezydualna Wolna od Klasyfikatora Pomocy
CFG lub Wolna od Klasyfikatora Pomocy to algorytm AI, który wykonuje szereg obliczeń wektorowych między oryginalnym warunkiem a negatywnym warunkiem lub warunkiem niezależnym, aby wzmocnić efekt oryginalnego warunku. Algorytm wzmacnia efekt podpowiedzi, chociaż do obliczenia szumu rezydualnego negatywnego warunku konieczne jest połączenie poszczególnych zmiennych latentnych wejścia z negatywnym warunkiem i przesłanie ich przez U-Net w czasie odniesienia.
Aby rozwiązać ten problem, ramy StreamDiffusion wprowadzają algorytm Rezydualnej Wolnej od Klasyfikatora Pomocy, który ma na celu zmniejszenie kosztów obliczeniowych dodatkowych interferencji U-Net dla negatywnego warunku. Po przekazaniu zakodowanego wejścia latentnego do rozkładu szumu przy użyciu wartości określonych przez plan szumu, algorytm może przewidzieć rozkład danych i wygenerować następny rozkład szumu przy użyciu szumu rezydualnego CFG.

Kolejka Wejścia-Wyjścia
Głównym problemem w ramach generowania obrazów o wysokiej wydajności jest ich modułów sieci neuronowych, w tym U-Net i VAE. Aby maksymalizować wydajność i prędkość wyjścia, ramy generowania obrazów przenoszą procesy takie jak pre- i post-przetwarzanie obrazów, które nie wymagają dodatkowego przetwarzania przez moduły sieci neuronowych, poza potok, a następnie przetwarzają je równolegle. Ponadto, w odniesieniu do obsługi obrazu wejściowego, określone operacje, w tym konwersja formatu tensora, zmiana rozmiaru obrazu wejściowego i normalizacja, są wykonywane przez potok w sposób staranny.
Aby rozwiązać dysproporcję między częstotliwościami przetwarzania modelu a częstotliwościami wejścia ludzkiego, potok włącza system kolejkowania wejścia-wyjścia, który umożliwia efektywną paralelizację, jak to pokazano na poniższym obrazie.

Przetworzone tensory wejściowe są najpierw kolejkowane w sposób metodyczny dla modeli dyfuzyjnych, a podczas każdej klatki model pobiera najnowszy tensor z kolejki wejściowej i przekazuje go do kodera VAE, co inicjuje proces generowania obrazu. Równocześnie, tensor wyjściowy z dekodera VAE jest kierowany do kolejki wyjściowej. W końcu, przetworzone dane obrazu są przekazywane do klienta renderującego.
Filtr Podobieństwa Stochastycznego
W scenariuszach, w których obrazy pozostają niezmienne lub wykazują minimalne zmiany bez statycznego środowiska lub bez aktywnej interakcji użytkownika, obrazy wejściowe podobne do siebie są wielokrotnie wprowadzane do U-Net i VAE, co prowadzi do generowania prawie identycznych obrazów i dodatkowego zużycia zasobów GPU. Ponadto, w scenariuszach z ciągłym wprowadzaniem danych, niezmienione obrazy wejściowe mogą pojawić się okazjonalnie. Aby pokonać ten problem i uniknąć niepotrzebnego zużycia zasobów, potok StreamDiffusion wykorzystuje komponent filtra podobieństwa stochastycznego w swoim potoku. Filtr podobieństwa stochastycznego najpierw oblicza podobieństwo cosinusowe między obrazem odniesienia a obrazem wejściowym, a następnie wykorzystuje wynik do obliczenia prawdopodobieństwa pominięcia następnych procesów U-Net i VAE.
Na podstawie wyniku, potok decyduje, czy następne procesy, takie jak kodowanie VAE, dekodowanie VAE i U-Net, powinny być pominięte czy nie. Jeśli procesy te nie są pomijane, potok zapisuje obraz wejściowy w tym czasie i jednocześnie aktualizuje obraz odniesienia do użycia w przyszłości. Ten mechanizm pomijania oparty na prawdopodobieństwie pozwala potokowi StreamDiffusion na pełne działanie w dynamicznych scenariuszach o niskim podobieństwie między klatkami, podczas gdy w statycznych scenariuszach potok działa z wyższym podobieństwem między klatkami. Podejście to pomaga w oszczędnościach zasobów obliczeniowych i zapewnia optymalne wykorzystanie GPU w zależności od podobieństwa obrazów wejściowych.
Pre-komputacja
Architektura U-Net wymaga zarówno osadzeń warunkowych, jak i zmiennych latentnych. Tradycyjnie, osadzenia warunkowe są pochodzone z osadzeń podpowiedzi, które pozostają stałe w czasie. Aby zoptymalizować pochodzenie z osadzeń podpowiedzi, potok StreamDiffusion pre-komputuje te osadzenia podpowiedzi i przechowuje je w buforze, które są następnie wywoływane w trybie strumieniowym lub interaktywnym. W ramach struktury U-Net, para klucz-wartość jest obliczana na podstawie każdego osadzenia podpowiedzi na klatkę, a przy niewielkich modyfikacjach w U-Net, pary te mogą być ponownie wykorzystane.
Przyspieszanie Modelu i Mały Autoenkoder
Potok StreamDiffusion wykorzystuje TensorRT, narzędzie optymalizacyjne Nvidia (NVDA ) dla interfejsów głębokiego uczenia, do budowy silników VAE i U-Net, aby przyspieszyć prędkość inferencji. Aby to osiągnąć, komponent TensorRT wykonuje wiele optymalizacji na sieciach neuronowych, które są zaprojektowane do zwiększenia wydajności i przepustowości dla ram i aplikacji głębokiego uczenia.
Aby zoptymalizować prędkość, potok StreamDiffusion konfiguruje ramy do użycia stałych wymiarów wejściowych i statycznych rozmiarów partii, aby zapewnić optymalną alokację pamięci i wykresy obliczeniowe dla określonego rozmiaru wejściowego, w celu osiągnięcia szybszych czasów przetwarzania.

Powyższy rysunek przedstawia przegląd potoku inferencji. Rdzeń potoku dyfuzyjnego zawiera komponenty U-Net i VAE. Potok włącza partię odhałasowania, bufor szumu próbkowanego, bufor osadzeń podpowiedzi pre-komputowanych i bufor wartości planu szumu, aby zwiększyć prędkość i zdolność potoku do generowania obrazów w czasie rzeczywistym. Filtr podobieństwa stochastycznego lub SSF jest wdrożony, aby zoptymalizować wykorzystanie GPU i dynamicznie bramkę przejścia modelu dyfuzyjnego.
StreamDiffusion: Eksperymenty i Wyniki
Aby ocenić swoje możliwości, potok StreamDiffusion jest wdrożony w ramach LCM i SD-turbo. TensorRT od Nvidia jest używany jako przyspieszacz modelu, a aby umożliwić lekkość i wydajność VAE, potok wykorzystuje komponent TAESD. Zobaczmy, jak potok StreamDiffusion działa w porównaniu z bieżącymi ramami stanu sztuki.
Ocena Ilościowa
Poniższy rysunek przedstawia porównanie wydajności między oryginalnym sekwencyjnym U-Net a komponentem partii odhałasowania w potoku, i jak widać, wdrożenie podejścia partii pomaga w znacznym zmniejszeniu czasu przetwarzania, o prawie 50%, w porównaniu z tradycyjnymi pętlami U-Net przy sekwencyjnych krokach odhałasowania.

Ponadto, średni czas inferencji na różnych krokach odhałasowania również doświadcza znacznego przyspieszenia z różnymi czynnikami prędkości w porównaniu z bieżącymi ramami stanu sztuki, a wyniki są przedstawione na poniższym rysunku.

Potok StreamDiffusion z komponentem RCFG wykazuje krótszy czas inferencji w porównaniu z potokami, które zawierają tradycyjny komponent CFG.

Wpływ komponentu RCFG jest widoczny na poniższym rysunku w porównaniu z użyciem komponentu CFG.

Jak widać, użycie CFG zwiększa wpływ podpowiedzi tekstowej na generowany obraz, a obraz wygląda bardziej jak podpowiedź wejściowa w porównaniu z obrazami generowanymi przez potok bez użycia komponentu CFG. Wyniki są jeszcze lepsze z użyciem komponentu RCFG, ponieważ wpływ podpowiedzi na generowany obraz jest znacząco większy w porównaniu z oryginalnym komponentem CFG.
Podsumowanie
W tym artykule omówiliśmy StreamDiffusion, potok dyfuzyjny w czasie rzeczywistym, opracowany do generowania interaktywnych i realistycznych obrazów, rozwiązując istniejące ograniczenia ram dyfuzyjnych w zadaniach z ciągłym wprowadzaniem danych. StreamDiffusion to proste i nowatorskie podejście, które ma na celu przekształcić sekwencyjne szumienie oryginalnego obrazu w szumienie partii. StreamDiffusion ma na celu umożliwienie wysokiej przepustowości i płynnych strumieni, eliminując tradycyjne podejście “czekaj i interakcja” stosowane przez bieżące ramy dyfuzyjne. Potencjalne zyski wydajności podkreślają potencjał potoku StreamDiffusion dla aplikacji komercyjnych oferujących wysoką wydajność obliczeniową i atrakcyjne rozwiązania dla generatywnej sztucznej inteligencji.












