Seguici sui social

StreamDiffusion: una soluzione a livello di pipeline per la generazione interattiva in tempo reale

Intelligenza Artificiale

StreamDiffusion: una soluzione a livello di pipeline per la generazione interattiva in tempo reale

mm
StreamDiffusion: una soluzione a livello di pipeline per la generazione interattiva in tempo reale

Grazie al suo vasto potenziale e alle opportunità di commercializzazione, in particolare nei giochi, nelle trasmissioni e nello streaming video, il Metaverso è attualmente una delle tecnologie in più rapida crescita. Le moderne applicazioni Metaverse utilizzano strutture di intelligenza artificiale, inclusi modelli di visione artificiale e diffusione, per migliorare il loro realismo. Una sfida significativa per le applicazioni Metaverse è l'integrazione di varie pipeline di diffusione che forniscono bassa latenza e throughput elevato, garantendo un'interazione efficace tra gli esseri umani e queste applicazioni.

Gli odierni framework di intelligenza artificiale basati sulla diffusione eccellono nella creazione di immagini da suggerimenti testuali o di immagini, ma non sono all'altezza delle interazioni in tempo reale. Questa limitazione è particolarmente evidente nelle attività che richiedono input continuo e throughput elevato, come la grafica dei videogiochi, le applicazioni Metaverse, la trasmissione e lo streaming video in diretta.

In questo articolo discuteremo di StreamDiffusion, una pipeline di diffusione in tempo reale sviluppata per generare immagini interattive e realistiche, affrontando le attuali limitazioni dei framework basati sulla diffusione in attività che comportano input continui. StreamDiffusion è un approccio innovativo che trasforma il rumore sequenziale dell'immagine originale in denoising batch, con l'obiettivo di consentire un rendimento elevato e flussi fluidi. Questo approccio si allontana dal tradizionale metodo di attesa e interazione utilizzato dagli esistenti strutture basate sulla diffusione. Nelle prossime sezioni, approfondiremo il framework StreamDiffusion in dettaglio, esplorandone il funzionamento, l'architettura e i risultati comparativi rispetto agli attuali framework all'avanguardia. Iniziamo.

StreamDiffusion: un'introduzione alla generazione interattiva in tempo reale

Metaverse sono applicazioni ad alta prestazione poiché elaborano una grande quantità di dati inclusi testi, animazioni, video e immagini in tempo reale per fornire ai propri utenti le interfacce e l'esperienza interattive del marchio. Le moderne applicazioni Metaverse si basano su framework basati sull'intelligenza artificiale, tra cui visione artificiale, elaborazione di immagini e modelli di diffusione per ottenere una bassa latenza e un throughput elevato per garantire un'esperienza utente senza interruzioni. Attualmente, la maggior parte delle applicazioni Metaverse si affida alla riduzione del verificarsi di iterazioni di denoising per garantire un throughput elevato e migliorare le capacità interattive dell'applicazione in tempo reale. Questi quadri optano per una strategia comune che prevede la riformulazione del processo di diffusione con ODE neurali (equazioni differenziali ordinarie) o la riduzione dei modelli di diffusione multi-fase in pochi passaggi o addirittura in un singolo passaggio. Sebbene l'approccio fornisca risultati soddisfacenti, presenta alcune limitazioni tra cui flessibilità limitata e costi computazionali elevati. 

D’altra parte, StreamDiffusion è una soluzione a livello di pipeline che parte da una direzione ortogonale e migliora le capacità del framework di generare immagini interattive in tempo reale garantendo al contempo un throughput elevato. StreamDiffusion utilizza una strategia semplice in cui invece di eliminare il rumore dall'input originale, il framework raggruppa la fase di rimozione del rumore. La strategia si ispira all'elaborazione asincrona poiché il framework non deve attendere il completamento della prima fase di denoising prima di poter passare alla seconda fase, come dimostrato nell'immagine seguente. Per affrontare il problema della frequenza di elaborazione U-Net e della frequenza di input in modo sincrono, il framework StreamDiffusion implementa una strategia di coda per memorizzare nella cache l'input e gli output. 

Sebbene la pipeline StreamDiffusion tragga ispirazione dall'elaborazione asincrona, è unica nel suo genere in quanto implementa il parallelismo della GPU che consente al framework di utilizzare un singolo componente UNet per eliminare il rumore da una funzionalità latente di rumore in batch. Inoltre, esistente condutture basate sulla diffusione enfatizzare le istruzioni fornite nelle immagini generate incorporando una guida priva di classificatori, di conseguenza le pipeline attuali sono dotate di spese computazionali ridondanti ed eccessive. Per garantire che la pipeline StreamDiffusion non incontri gli stessi problemi, implementa un innovativo approccio RCFG o Residual Classifier-Free Guidance che utilizza un rumore residuo virtuale per approssimare le condizioni negative, consentendo così al framework di calcolare le condizioni di rumore negativo nella fase iniziale fasi del processo stesso. Inoltre, la pipeline StreamDiffusion riduce anche i requisiti computazionali di una pipeline di diffusione tradizionale implementando una strategia di filtro di somiglianza stocastica che determina se la pipeline deve elaborare le immagini di input calcolando le somiglianze tra input continui. 

Il framework StreamDiffusion si basa sugli apprendimenti di modelli di diffusione e modelli di diffusione con accelerazione

I modelli di diffusione sono noti per le loro eccezionali capacità di generazione di immagini e per la quantità di controllo che offrono. Grazie alle loro capacità, i modelli di diffusione hanno trovato le loro applicazioni nell'editing di immagini, nella generazione di testo in immagini e nella generazione di video. Inoltre, lo sviluppo di modelli coerenti ha dimostrato il potenziale per migliorare l'efficienza dell'elaborazione del campione senza compromettere la qualità delle immagini generate dal modello che ha aperto nuove porte per espandere l'applicabilità e l'efficienza dei modelli di diffusione riducendo il numero di fasi di campionamento. Sebbene estremamente capaci, i modelli di diffusione tendono ad avere una limitazione importante: la generazione lenta delle immagini. Per affrontare questa limitazione, gli sviluppatori hanno introdotto modelli di diffusione accelerata, strutture basate sulla diffusione che non richiedono fasi di addestramento aggiuntive o implementano strategie predittore-correttore e risolutori adattivi di dimensione del passo per aumentare le velocità di output. 

Il fattore distintivo tra StreamDiffusion e i tradizionali framework basati sulla diffusione è che mentre quest'ultimo si concentra principalmente sulla bassa latenza dei singoli modelli, il primo introduce un approccio a livello di pipeline progettato per ottenere throughput elevati che consentono un'efficiente diffusione interattiva. 

StreamDiffusion: Lavoro e Architettura

La pipeline StreamDiffusion è una pipeline di diffusione in tempo reale sviluppata per generare immagini interattive e realistiche e impiega 6 componenti chiave, vale a dire: RCFG o guida libera del classificatore residuo, strategia Stream Batch, filtro di similarità stocastica, una coda di input-output, strumenti di accelerazione del modello con autoencoder e una procedura di precalcolo. Parliamo di questi componenti in dettaglio. 

Strategia batch di streaming

Tradizionalmente, il denoising avviene in a modello di diffusione vengono eseguiti in sequenza, con un conseguente aumento significativo del tempo di elaborazione U-Net rispetto al numero di fasi di elaborazione. Tuttavia, è essenziale aumentare il numero di fasi di elaborazione per generare immagini ad alta fedeltà e il framework StreamDiffusion introduce la strategia Stream Batch per superare la risoluzione ad alta latenza nei framework di diffusione interattiva. 

Nella strategia Stream Batch, le operazioni sequenziali di denoising vengono ristrutturate in processi batch con ciascun batch corrispondente a un numero predeterminato di passaggi di denoising e il numero di questi passaggi di denoising è determinato dalla dimensione di ciascun batch. Grazie a questo approccio, ogni elemento del batch può procedere ulteriormente utilizzando il singolo passthrough UNet nella sequenza di denoising. Implementando la strategia batch di flusso in modo iterativo, le immagini di input codificate nel passo temporale “t” possono essere trasformate nei rispettivi risultati da immagine a immagine nel passo temporale “t+n”, semplificando così il processo di denoising. 

Guida gratuita per il classificatore residuo

CFG o Classifier Free Guidance è un algoritmo AI che esegue una serie di calcoli vettoriali tra il termine di condizionamento originale e un termine di condizionamento o non condizionamento negativo per migliorare l'effetto del condizionamento originale. L'algoritmo rafforza l'effetto del prompt anche se per calcolare il rumore residuo del condizionamento negativo, è necessario accoppiare le singole variabili latenti di input con l'inclusione di condizionamento negativo seguito dal passaggio degli incorporamenti attraverso UNet al momento di riferimento. 

Per affrontare questo problema posto dall'algoritmo Classifier Free Guidance, il framework StreamDiffusion introduce l'algoritmo Residual Classifier Free Guidance con l'obiettivo di ridurre i costi computazionali per ulteriori interferenze UNet per l'incorporamento di condizionamenti negativi. Innanzitutto, l'input latente codificato viene trasferito alla distribuzione del rumore utilizzando i valori determinati dallo schedulatore del rumore. Una volta implementato il modello di coerenza latente, l'algoritmo può prevedere la distribuzione dei dati e utilizzare il rumore residuo CFG per generare la distribuzione del rumore del passaggio successivo. 

Coda di ingresso e uscita

Il problema principale con i framework di generazione di immagini ad alta velocità sono i moduli di rete neurale, inclusi i componenti UNet e VAE. Per massimizzare l'efficienza e la velocità di output complessiva, i framework di generazione di immagini spostano processi come immagini di pre e post elaborazione che non richiedono una gestione aggiuntiva da parte dei moduli della rete neurale all'esterno della pipeline, dopo la quale vengono elaborati in parallelo. Inoltre, in termini di gestione dell'immagine di input, operazioni specifiche tra cui la conversione del formato del tensore, il ridimensionamento delle immagini di input e la normalizzazione vengono eseguite meticolosamente dalla pipeline. 

Per affrontare la disparità nelle frequenze di elaborazione tra il throughput del modello e l'input umano, la pipeline integra un sistema di accodamento input-output che consente una parallelizzazione efficiente, come dimostrato nell'immagine seguente. 

I tensori di input elaborati vengono prima messi in coda metodicamente per i modelli di diffusione e, durante ciascun fotogramma, il modello recupera il tensore più recente dalla coda di input e inoltra il tensore al codificatore VAE, avviando così il processo di generazione dell'immagine. Allo stesso tempo, l'uscita del tensore dal decodificatore VAE viene immessa nella coda di uscita. Infine, i dati dell'immagine elaborata vengono trasmessi al client di rendering. 

Filtro di somiglianza stocastica

Negli scenari in cui le immagini rimangono invariate o mostrano modifiche minime senza un ambiente statico o senza l'interazione attiva dell'utente, le immagini di input somiglianti tra loro vengono inserite ripetutamente nei componenti UNet e VAE. L'alimentazione ripetuta porta alla generazione di immagini quasi identiche e al consumo aggiuntivo di risorse GPU. Inoltre, in scenari che coinvolgono input continui, occasionalmente potrebbero emergere immagini di input non modificate. Per superare questo problema ed evitare un utilizzo non necessario delle risorse, la pipeline StreamDiffusion utilizza un componente Filtro di somiglianza stocastica nella sua pipeline. Il filtro di somiglianza stocastica calcola innanzitutto la somiglianza del coseno tra l'immagine di riferimento e l'immagine di input e utilizza il punteggio di somiglianza del coseno per calcolare la probabilità di saltare i successivi processi UNet e VAE. 

Sulla base del punteggio di probabilità, la pipeline decide se i processi successivi come codifica VAE, decodifica VAE e U-Net devono essere saltati o meno. Se questi processi non vengono saltati, la pipeline salva l'immagine di input in quel momento e contemporaneamente aggiorna l'immagine di riferimento da utilizzare in futuro. Questo meccanismo di salto basato sulla probabilità consente alla pipeline StreamDiffusion di funzionare pienamente in scenari dinamici con una bassa somiglianza tra frame, mentre negli scenari statici la pipeline funziona con una maggiore somiglianza tra frame. L'approccio aiuta a conservare le risorse computazionali e garantisce inoltre un utilizzo ottimale della GPU in base alla somiglianza delle immagini di input. 

Precalcolo

L'architettura UNet necessita sia di incorporamenti condizionanti sia di variabili latenti di input. Tradizionalmente, gli incorporamenti condizionanti derivano da incorporamenti rapidi che rimangono costanti tra i frame. Per ottimizzare la derivazione dagli incorporamenti di prompt, la pipeline StreamDiffusion ha precalcolato questi incorporamenti di prompt e li archivia in una cache, che vengono quindi richiamati in modalità streaming o interattiva. All'interno del framework UNet, la coppia chiave-valore viene calcolata sulla base dell'incorporamento del prompt precalcolato di ciascun frame e, con lievi modifiche in U-Net, queste coppie chiave-valore possono essere riutilizzate. 

Accelerazione del modello e Tiny AutoEncoder

La pipeline StreamDiffusion utilizza TensorRT, un toolkit di ottimizzazione di Nvidia per interfacce di deep learning, per costruire i motori VAE e UNet, per accelerare la velocità di inferenza. Per raggiungere questo obiettivo, il componente TensorRT esegue numerose ottimizzazioni sulle reti neurali progettate per aumentare l’efficienza e migliorare il throughput per framework e applicazioni di deep learning. 

Per ottimizzare la velocità, StreamDiffusion configura il framework per utilizzare dimensioni di input fisse e dimensioni batch statiche per garantire un'allocazione di memoria ottimale e grafici di calcolo per una dimensione di input specifica nel tentativo di ottenere tempi di elaborazione più rapidi. 

La figura precedente fornisce una panoramica della pipeline di inferenza. La pipeline di diffusione principale ospita i componenti UNet e VAE. La pipeline incorpora un batch di denoising, una cache del rumore campionato, una cache di incorporamento dei prompt precalcolata e una cache dei valori dello scheduler per migliorare la velocità e la capacità della pipeline di generare immagini in tempo reale. Il filtro di similarità stocastica o SSF viene utilizzato per ottimizzare l'utilizzo della GPU e anche per controllare dinamicamente il passaggio del modello di diffusione. 

StreamDiffusion: esperimenti e risultati

Per valutarne le capacità, la pipeline StreamDiffusion è implementata su framework LCM e SD-turbo. TensorRT di NVIDIA viene utilizzato come acceleratore del modello e, per consentire VAE ad efficienza leggera, la pipeline utilizza il componente TAESD. Diamo ora un'occhiata a come si comporta la pipeline StreamDiffusion rispetto ai framework all'avanguardia attuali. 

Valutazione quantitativa

La figura seguente mostra il confronto dell'efficienza tra l'UNet sequenziale originale e i componenti batch di denoising nella pipeline e, come si può vedere, l'implementazione dell'approccio batch di denoising aiuta a ridurre significativamente il tempo di elaborazione di quasi il 50% rispetto al tradizionale UNet cicli a passaggi sequenziali di denoising. 

Inoltre, anche il tempo di inferenza medio in diverse fasi di denoising testimonia un aumento sostanziale con diversi fattori di accelerazione rispetto alle pipeline attuali e all'avanguardia, e i risultati sono dimostrati nell'immagine seguente. 

Andando avanti, la pipeline StreamDiffusion con il componente RCFG dimostra un tempo di inferenza inferiore rispetto alle pipeline che includono il componente CFG tradizionale. 

Inoltre, l'impatto dell'utilizzo del componente RCFG è evidente nelle immagini seguenti rispetto all'utilizzo del componente CFG.

Come si può vedere, l'uso di CFG intensifica l'impatto del prompt testuale nella generazione dell'immagine, e l'immagine assomiglia molto di più ai prompt di input rispetto alle immagini generate dalla pipeline senza utilizzare il componente CFG. I risultati migliorano ulteriormente con l'uso del componente RCFG poiché l'influenza dei prompt sulle immagini generate è piuttosto significativa rispetto al componente CFG originale. 

Considerazioni finali

In questo articolo abbiamo parlato di StreamDiffusion, una pipeline di diffusione in tempo reale sviluppata per generare immagini interattive e realistiche e affrontare le attuali limitazioni poste dai framework basati sulla diffusione su attività che comportano input continui. StreamDiffusion è un approccio semplice e innovativo che mira a trasformare il rumore sequenziale dell'immagine originale in denoising batch. StreamDiffusion mira a consentire un throughput elevato e flussi fluidi eliminando il tradizionale approccio di attesa e interazione scelto dagli attuali framework basati sulla diffusione. I potenziali miglioramenti in termini di efficienza evidenziano il potenziale della pipeline StreamDiffusion per applicazioni commerciali che offrono elaborazione ad alte prestazioni e soluzioni convincenti per l’intelligenza artificiale generativa. 

"Un ingegnere di professione, uno scrittore a memoria". Kunal è uno scrittore tecnico con un profondo amore e comprensione di AI e ML, dedito a semplificare concetti complessi in questi campi attraverso la sua documentazione coinvolgente e informativa.