Modelli e piattaforme di IA

StreamDiffusion: Una Soluzione a Livello di Pipeline per la Generazione Interattiva in Tempo Reale

mm
Aggiungi Unite.AI alle tue fonti preferite su Google
StreamDiffusion: A Pipeline-level Solution for Real-time Interactive Generation

A causa del suo vasto potenziale e delle opportunità di commercializzazione, in particolare nei settori dei giochi, della trasmissione e dello streaming video, il Metaverso è attualmente una delle tecnologie in più rapida crescita. Le applicazioni del Metaverso moderne utilizzano framework di intelligenza artificiale, tra cui la visione computerizzata e i modelli di diffusione, per migliorare la loro realismo. Una sfida significativa per le applicazioni del Metaverso è l’integrazione di diverse pipeline di diffusione che forniscono bassa latenza e alta velocità di trasferimento, garantendo un’interazione efficace tra gli esseri umani e queste applicazioni.

Le attuali piattaforme di intelligenza artificiale basate sulla diffusione eccellono nella creazione di immagini da promemoria testuali o di immagini, ma sono carenti nelle interazioni in tempo reale. Questa limitazione è particolarmente evidente in compiti che richiedono input continuo e alta velocità di trasferimento, come ad esempio la grafica dei videogiochi, le applicazioni del Metaverso, la trasmissione e lo streaming video live.

In questo articolo, discuteremo di StreamDiffusion, una pipeline di diffusione in tempo reale progettata per generare immagini interattive e realistiche, affrontando le limitazioni attuali delle piattaforme basate sulla diffusione nei compiti che coinvolgono input continuo. StreamDiffusion è un approccio innovativo che trasforma il rumore sequenziale dell’immagine originale in un rumore batch, con l’obiettivo di abilitare un alto throughput e flussi fluidi. Questo approccio si allontana dal metodo tradizionale di attesa e interazione utilizzato dalle piattaforme esistenti basate sulla diffusione. Nei prossimi paragrafi, esploreremo il framework StreamDiffusion in dettaglio, esaminando il suo funzionamento, l’architettura e i risultati comparativi con le piattaforme attuali di stato dell’arte. Iniziamo.

StreamDiffusion: Un’introduzione alla Generazione Interattiva in Tempo Reale

Il Metaverso è un’applicazione intensiva in termini di prestazioni, poiché elabora grandi quantità di dati, tra cui testi, animazioni, video e immagini in tempo reale, per fornire ai suoi utenti le sue caratteristiche interfacce e esperienze interattive. Le applicazioni del Metaverso moderne si basano su framework di intelligenza artificiale, tra cui la visione computerizzata, l’elaborazione delle immagini e i modelli di diffusione, per raggiungere una bassa latenza e un alto throughput, garantendo un’esperienza utente senza soluzione di continuità. Attualmente, la maggior parte delle applicazioni del Metaverso si basa sulla riduzione del numero di iterazioni di denoising per garantire un alto throughput e migliorare le capacità interattive in tempo reale. Questi framework adottano una strategia comune che consiste nel riformulare il processo di diffusione con equazioni differenziali ordinarie (ODE) o ridurre i modelli di diffusione multi-step a pochi passaggi o addirittura a un solo passaggio. Sebbene questo approccio produca risultati soddisfacenti, presenta alcune limitazioni, tra cui la flessibilità limitata e i costi computazionali elevati.

D’altra parte, StreamDiffusion è una soluzione a livello di pipeline che inizia da una direzione ortogonale e migliora le capacità del framework per generare immagini interattive in tempo reale, garantendo un alto throughput. StreamDiffusion utilizza una strategia semplice, in cui invece di denoising l’input originale, il framework batcha il passaggio di denoising. La strategia trae ispirazione dall’elaborazione asincrona, poiché il framework non deve attendere che il primo stadio di denoising sia completato prima di poter passare al secondo stadio, come dimostrato nell’immagine seguente. Per affrontare il problema della frequenza di elaborazione del U-Net e della frequenza di input sincrona, il framework StreamDiffusion implementa una strategia di coda per memorizzare l’input e l’output.

Sebbene la pipeline StreamDiffusion tragga ispirazione dall’elaborazione asincrona, è unica a suo modo, poiché implementa il parallelismo GPU che consente al framework di utilizzare un solo componente U-Net per denoising una funzione di rumore batchata. Inoltre, le pipeline basate sulla diffusione esistenti enfatizzano i prompt dati nelle immagini generate, incorporando la guida senza classificatore, come risultato del quale le pipeline attuali sono gravate da sovraccarichi computazionali ridondanti ed eccessivi. Per garantire che la pipeline StreamDiffusion non incontri gli stessi problemi, implementa un approccio innovativo di guida senza classificatore residuale (RCFG) che utilizza un rumore residuale virtuale per approssimare le condizioni negative, consentendo al framework di calcolare le condizioni di rumore negative nelle fasi iniziali del processo stesso. Inoltre, la pipeline StreamDiffusion riduce anche i requisiti computazionali di una pipeline di diffusione tradizionale, implementando una strategia di filtro di similarità stocastica che determina se la pipeline debba elaborare le immagini di input calcolando le similarità tra input continui.

Il framework StreamDiffusion si basa sulle conoscenze dei modelli di diffusione e dei modelli di diffusione accelerati.

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 applicazioni nella modifica delle immagini, nella generazione di immagini da testo e nella generazione di video. Inoltre, lo sviluppo di modelli coerenti ha dimostrato il potenziale per migliorare l’efficienza di campionamento senza compromettere la qualità delle immagini generate dal modello, aprendo nuove porte per espandere l’applicabilità e l’efficienza dei modelli di diffusione riducendo il numero di passaggi di campionamento. Sebbene estremamente capaci, i modelli di diffusione tendono ad avere una limitazione principale: la generazione di immagini lenta. Per affrontare questa limitazione, gli sviluppatori hanno introdotto modelli di diffusione accelerati, framework basati sulla diffusione che non richiedono passaggi di formazione aggiuntivi o implementano strategie di predizione-correzione e solutori di dimensione di passo adattiva per aumentare le velocità di output.

Il fattore distintivo tra StreamDiffusion e le piattaforme basate sulla diffusione tradizionali è che mentre queste ultime si concentrano principalmente sulla bassa latenza dei singoli modelli, StreamDiffusion introduce un approccio a livello di pipeline progettato per raggiungere un alto throughput, abilitando una diffusione interattiva efficiente.

StreamDiffusion: Funzionamento e Architettura

La pipeline StreamDiffusion è una pipeline di diffusione in tempo reale progettata per generare immagini interattive e realistiche e impiega 6 componenti chiave, ovvero: RCFG o guida senza classificatore residuale, strategia di batch di flusso, filtro di similarità stocastica, coda di input-output, strumenti di accelerazione del modello con autoencoder e procedura di pre-elaborazione. Parliamo di questi componenti in dettaglio.

Strategia di Batch di Flusso

Tradizionalmente, i passaggi di denoising in un modello di diffusione vengono eseguiti sequenzialmente, risultando in un aumento significativo del tempo di elaborazione del U-Net in relazione al numero di passaggi di elaborazione. Tuttavia, è essenziale aumentare il numero di passaggi di elaborazione per generare immagini ad alta fedeltà e il framework StreamDiffusion introduce la strategia di batch di flusso per superare la risoluzione della latenza alta nelle piattaforme di diffusione interattive.

Nella strategia di batch di flusso, le operazioni di denoising sequenziali vengono ristrutturate in processi batchati, con ogni batch corrispondente a un numero predeterminato di passaggi di denoising, e il numero di questi passaggi di denoising è determinato dalle dimensioni di ogni batch. Grazie a questo approccio, ogni elemento nel batch può procedere un passo ulteriore utilizzando il singolo passaggio del U-Net nella sequenza di denoising. Implementando la strategia di batch di flusso in modo iterativo, le immagini di input codificate al momento “t” possono essere trasformate nei rispettivi risultati di immagine su immagine al momento “t+n”, semplificando così il processo di denoising.

Guida senza Classificatore Residuale

La guida senza classificatore (CFG) è un algoritmo di intelligenza artificiale che esegue una serie di calcoli vettoriali tra il termine di condizionamento originale e un termine di condizionamento negativo o non condizionato per migliorare l’effetto del condizionamento originale. L’algoritmo rafforza l’effetto del prompt, anche se per calcolare il rumore di condizionamento negativo residuale è necessario accoppiare le variabili latenti di input individuali con l’incorporazione del condizionamento negativo, seguito dal passaggio delle incorporazioni attraverso il U-Net al momento di riferimento.

Per affrontare questo problema posto dall’algoritmo di guida senza classificatore, il framework StreamDiffusion introduce l’algoritmo di guida senza classificatore residuale con l’obiettivo di ridurre i costi computazionali per l’interferenza aggiuntiva del U-Net per l’incorporazione del condizionamento negativo. In primo luogo, l’input latente codificato viene trasferito alla distribuzione di rumore utilizzando i valori determinati dal programma di rumore. Una volta implementato il modello di coerenza latente, l’algoritmo può prevedere la distribuzione dei dati e utilizzare il rumore residuale della CFG per generare la distribuzione di rumore successiva.

Coda di Input-Output

Il principale problema delle piattaforme di generazione di immagini ad alta velocità è costituito dai moduli della rete neurale, tra cui i componenti del U-Net e del VAE. Per massimizzare l’efficienza e la velocità di output complessiva, le piattaforme di generazione di immagini spostano processi come la pre-elaborazione e la post-elaborazione delle immagini che non richiedono un’elaborazione aggiuntiva da parte dei moduli della rete neurale al di fuori della pipeline, dopo di che 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 dalla pipeline in modo meticoloso.

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

I tensori di input elaborati vengono inizialmente memorizzati in modo metodico per i modelli di diffusione e, durante ogni frame, il modello recupera il tensore più recente dalla coda di input e lo inoltra all’encoder del VAE, avviando così il processo di generazione di immagini. Allo stesso tempo, il tensore di output del decoder del VAE viene inserito nella coda di output. Infine, i dati dell’immagine elaborati vengono trasmessi al client di rendering.

Filtro di Similarità Stocastica

In scenari in cui le immagini rimangono invariate o mostrano cambiamenti minimi senza un ambiente statico o senza interazione attiva dell’utente, le immagini di input che si assomigliano vengono alimentate ripetutamente nel U-Net e nel 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, le immagini di input non modificate possono occasionalmente emergere. Per superare questo problema e prevenire l’utilizzo non necessario di risorse, la pipeline StreamDiffusion impiega un componente di filtro di similarità stocastica nella sua pipeline. Il filtro di similarità stocastica calcola inizialmente la similarità del coseno tra l’immagine di riferimento e l’immagine di input e utilizza il punteggio di similarità del coseno per calcolare la probabilità di saltare i processi successivi del U-Net e del VAE.

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

Pre-elaborazione

L’architettura del U-Net richiede sia le incorporazioni di condizionamento che le variabili latenti di input. Tradizionalmente, le incorporazioni di condizionamento vengono derivate dalle incorporazioni di prompt che rimangono costanti tra i frame. Per ottimizzare la derivazione dalle incorporazioni di prompt, la pipeline StreamDiffusion pre-elabora queste incorporazioni di prompt e le memorizza in una cache, che vengono poi richiamate in modalità di flusso o interattiva. All’interno del framework del U-Net, la coppia di chiave-valore viene calcolata in base all’incorporazione di prompt pre-elaborata di ogni frame e, con leggere modifiche nel U-Net, queste coppie di chiave-valore possono essere riutilizzate.

Accelerazione del Modello e Autoencoder Tiny

La pipeline StreamDiffusion impiega TensorRT, un toolkit di ottimizzazione di Nvidia (NVDA ) per le interfacce di apprendimento profondo, per costruire i motori del VAE e del U-Net, 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 il throughput per le applicazioni di apprendimento profondo.

Per ottimizzare la velocità, la pipeline StreamDiffusion configura il framework per utilizzare dimensioni di input fisse e dimensioni di batch statiche per garantire un’allocazione di memoria ottimale e grafici computazionali per una dimensione di input specifica, al fine di raggiungere tempi di elaborazione più rapidi.

La figura sopra fornisce una panoramica della pipeline di inferenza. La pipeline di diffusione principale ospita i componenti del U-Net e del VAE. La pipeline incorpora un batch di denoising, una cache di rumore campionato, una cache di incorporazione di prompt pre-elaborata e una cache di valori del programma per migliorare la velocità e la capacità della pipeline di generare immagini in tempo reale. Il filtro di similarità stocastica (SSF) viene impiegato per ottimizzare l’utilizzo della GPU e per controllare dinamicamente il passaggio del modello di diffusione.

StreamDiffusion: Esperimenti e Risultati

Per valutare le sue capacità, la pipeline StreamDiffusion viene implementata sui framework LCM e SD-turbo. Il TensorRT di NVIDIA viene utilizzato come acceleratore del modello e, per abilitare l’efficienza leggera del VAE, la pipeline impiega il componente TAESD. Vediamo ora come la pipeline StreamDiffusion si comporta quando viene confrontata con le piattaforme attuali di stato dell’arte.

Valutazione Quantitativa

La figura seguente dimostra il confronto di efficienza tra il U-Net sequenziale originale e il componente di batch di denoising nella pipeline e, come si può vedere, l’implementazione dell’approccio di batch di denoising aiuta a ridurre il tempo di elaborazione in modo significativo, quasi del 50%, rispetto ai cicli del U-Net tradizionali ai passaggi di denoising sequenziali.

Inoltre, il tempo di inferenza medio ai diversi passaggi di denoising subisce anche un sostanziale aumento con diversi fattori di velocizzazione quando confrontato con le piattaforme attuali di stato dell’arte e i risultati vengono dimostrati nell’immagine seguente.

La pipeline StreamDiffusion con il componente RCFG dimostra un tempo di inferenza inferiore rispetto alle piattaforme che includono il componente CFG tradizionale.

Inoltre, l’impatto dell’utilizzo del componente RCFG è evidente nelle immagini seguenti quando confrontato con l’utilizzo del componente CFG.

Come si può vedere, l’utilizzo del CFG intensifica l’impatto del prompt testuale nella generazione di immagini e l’immagine somiglia molto di più al prompt di input quando confrontata con le immagini generate dalla pipeline senza l’utilizzo del componente CFG. I risultati migliorano ulteriormente con l’utilizzo del componente RCFG, poiché l’influenza dei prompt sulle immagini generate è molto significativa rispetto al componente CFG originale.

Pensieri Finali

In questo articolo, abbiamo discusso di StreamDiffusion, una pipeline di diffusione in tempo reale progettata per generare immagini interattive e realistiche, affrontando le limitazioni attuali delle piattaforme basate sulla diffusione nei compiti che coinvolgono input continuo. StreamDiffusion è un approccio semplice e innovativo che mira a trasformare il rumore sequenziale dell’immagine originale in un rumore batchato. StreamDiffusion mira a consentire un alto throughput e flussi fluidi eliminando l’approccio tradizionale di attesa e interazione utilizzato dalle piattaforme basate sulla diffusione attuali. I potenziali guadagni di efficienza evidenziano il potenziale della pipeline StreamDiffusion per le applicazioni commerciali che offrono calcolo ad alte prestazioni e soluzioni convincenti per l’intelligenza artificiale generativa.

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