AI-modeller och plattformar

StreamDiffusion: En introduktion till realtidsinteraktiv generering

mm
Lägg till Unite.AI bland dina föredragna källor på Google
StreamDiffusion: A Pipeline-level Solution for Real-time Interactive Generation

På grund av dess enorma potential och kommersiella möjligheter, särskilt inom spel, sändning och videoströmning, är Metaverse för närvarande en av de snabbast växande teknologierna. Moderna Metaverse-applikationer använder AI-ramverk, inklusive datorseende och diffusionsmodeller, för att förbättra deras realism. En betydande utmaning för Metaverse-applikationer är att integrera olika diffusionspipelines som erbjuder låg latens och hög genomströmning, vilket säkerställer effektiv interaktion mellan människor och dessa applikationer.

I dag är diffusionsbaserade AI-ramverk utmärkta på att skapa bilder från text- eller bildprompt, men de brister i realtidsinteraktioner. Denna begränsning är särskilt tydlig i uppgifter som kräver kontinuerlig inmatning och hög genomströmning, såsom videospelgrafik, Metaverse-applikationer, sändning och livevideoströmning.

I den här artikeln kommer vi att diskutera StreamDiffusion, en realtidsdiffusionspipeline som utvecklats för att generera interaktiva och realistiska bilder, och som löser de nuvarande begränsningarna för diffusionsbaserade ramverk i uppgifter som involverar kontinuerlig inmatning. StreamDiffusion är en innovativ metod som omvandlar den sekventiella bruset av den ursprungliga bilden till batchbrus, i syfte att möjliggöra hög genomströmning och flytande strömmar. Denna metod avviker från den traditionella vänta-och-interagera-metoden som används av befintliga diffusionsbaserade ramverk. I de kommande avsnitten kommer vi att gå in på StreamDiffusion-ramverket i detalj, och undersöka dess funktion, arkitektur och jämförande resultat mot nuvarande state-of-the-art-ramverk. Låt oss börja.

StreamDiffusion: En introduktion till realtidsinteraktiv generering

Metaverse är prestandaintensiva applikationer eftersom de bearbetar stora mängder data, inklusive texter, animeringar, videor och bilder i realtid, för att ge användarna en interaktiv och dynamisk upplevelse. Moderna Metaverse-applikationer förlitar sig på AI-baserade ramverk, inklusive datorseende, bildbehandling och diffusionsmodeller, för att uppnå låg latens och hög genomströmning, och säkerställa en sömlös användarupplevelse. För närvarande förlitar sig de flesta Metaverse-applikationer på att minska antalet brusreduceringsiterationer för att säkerställa hög genomströmning och förbättra applikationens interaktiva förmågor i realtid. Dessa ramverk använder en vanlig strategi som antingen innebär att omforma diffusionsprocessen med neurala ODE (vanliga differentialekvationer) eller att reducera multi-stegs diffusionsmodeller till ett fåtal steg eller till och med ett enda steg. Även om denna strategi ger tillfredsställande resultat, har den vissa begränsningar, inklusive begränsad flexibilitet och höga beräkningskostnader.

Å andra sidan är StreamDiffusion en pipeline-nivå-lösning som börjar från en ortogonal riktning och förbättrar ramverkets förmåga att generera interaktiva bilder i realtid, samtidigt som den säkerställer hög genomströmning. StreamDiffusion använder en enkel strategi där den, istället för att reducera bruset av den ursprungliga inmatningen, batchar brusreduceringssteget. Strategin tar inspiration från asynkron bearbetning, eftersom ramverket inte behöver vänta på att den första brusreduceringsfasen är klar innan det kan gå vidare till den andra fasen, som visas i följande bild. För att hantera problemet med U-Net-bearbetningsfrekvens och inmatningsfrekvens synkront, implementerar StreamDiffusion-ramverket en köstrategi för att cacha inmatningen och utmatningen.

Även om StreamDiffusion-pipelinen söker inspiration från asynkron bearbetning, är den unik på sitt sätt eftersom den implementerar GPU-parallellism, vilket tillåter ramverket att använda en enda UNet-komponent för att reducera bruset av en batchad bruslatent funktion. Dessutom betonar befintliga diffusionsbaserade pipelines den givna prompten i de genererade bilderna genom att inkorporera klassificeringsfri vägledning, vilket resulterar i att nuvarande pipelines är riggade med onödiga och överflödiga beräkningskostnader. För att säkerställa att StreamDiffusion-pipelinen inte möter samma problem, implementerar den en innovativ RCFG eller Residual Classifier-Free Guidance-approach, som använder en virtuell restbrus för att approximera de negativa villkoren, vilket tillåter ramverket att beräkna de negativa brusvillkoren i de tidiga stadierna av processen. Dessutom minskar StreamDiffusion-pipelinen de beräkningsmässiga kraven för en traditionell diffusionspipeline genom att implementera en stokastisk likhetsfilterstrategi som bestämmer om pipelinen ska bearbeta inmatningsbilderna genom att beräkna likheten mellan kontinuerliga inmatningar.

StreamDiffusion-ramverket är byggt på lärdomarna från diffusionsmodeller och acceleration av diffusionsmodeller.

Diffusionsmodeller är kända för sin exceptionella bildgenereringsförmåga och den mängd kontroll de erbjuder. På grund av deras förmåga har diffusionsmodeller funnit tillämpningar inom bildredigering, text-till-bild-generering och videogenerering. Dessutom har utvecklingen av konsekventa modeller visat potentialen att förbättra sampelbearbetningseffektiviteten utan att kompromissa med kvaliteten på de genererade bilderna, vilket har öppnat nya dörrar för att expandera tillämpbarheten och effektiviteten hos diffusionsmodeller genom att minska antalet sampelsteg. Även om de är extremt kapabla, tenderar diffusionsmodeller att ha en stor begränsning: långsam bildgenerering. För att hantera denna begränsning introducerade utvecklare accelererade diffusionsmodeller, diffusionsbaserade ramverk som inte kräver ytterligare träningssteg eller implementerar prediktor-korrekturstrategier och adaptiva stegstorlekslösare för att öka utmatningshastigheten.

Den avgörande faktorn mellan StreamDiffusion och traditionella diffusionsbaserade ramverk är att medan de senare fokuserar primärt på låg latens för enskilda modeller, introducerar den förra en pipeline-nivå-approach som är utformad för att uppnå hög genomströmning, vilket möjliggör effektiv interaktiv diffusion.

StreamDiffusion: Funktion och arkitektur

StreamDiffusion-pipelinen är en realtidsdiffusionspipeline som utvecklats för att generera interaktiva och realistiska bilder, och den består av 6 nyckelkomponenter: RCFG eller Residual Classifier Free Guidance, Stream Batch-strategi, Stochastic Similarity Filter, en in- och utmatningskö, modellaccelerationsverktyg med autoencoder och en förberäkningsprocedur. Låt oss diskutera dessa komponenter i detalj.

Stream Batch-strategi

Traditionellt utförs brusreduceringsstegen i en diffusionsmodell sekventiellt, vilket resulterar i en betydande ökning av U-Net-bearbetningstiden i förhållande till antalet bearbetningssteg. Emellertid är det nödvändigt att öka antalet bearbetningssteg för att generera högkvalitativa bilder, och StreamDiffusion-ramverket introducerar Stream Batch-strategin för att övervinna hög latens i interaktiva diffusionsramverk.

I Stream Batch-strategin omstruktureras de sekventiella brusreduceringsoperationerna till batchade processer, där varje batch motsvarar ett förbestämt antal brusreduceringssteg, och antalet dessa steg bestäms av batchens storlek. Tack vare denna strategi kan varje element i batchen fortsätta ett steg längre med hjälp av den enskilda passthrough-UNet i brusreduceringssekvensen. Genom att implementera Stream Batch-strategin iterativt kan inmatningsbilderna som kodats vid tidssteg “t” omvandlas till sina respektive bild-till-bild-resultat vid tidssteg “t+n”, vilket strömlinjeformar brusreduceringsprocessen.

Residual Classifier Free Guidance

CFG eller Classifier Free Guidance är en AI-algoritm som utför en mängd vektorberäkningar mellan den ursprungliga villkors-termen och en negativ villkors- eller ovillkors-term för att förbättra effekten av den ursprungliga villkors-termen. Algoritmen förstärker effekten av prompten, även om det är nödvändigt att para individuella inmatningslatenta variabler med negativ villkorsinbäddning, följt av att skicka inbäddningarna genom UNet vid referenstid.

För att hantera problemet som orsakas av Classifier Free Guidance-algoritmen introducerar StreamDiffusion-ramverket Residual Classifier Free Guidance-algoritmen med syftet att minska beräkningskostnaderna för ytterligare UNet-ingrepp för negativ villkorsinbäddning. Först överförs den kodade latenta inmatningen till brusfördelningen med hjälp av värden som bestäms av brusplanen. När den latenta konsekvensmodellen har implementerats kan algoritmen förutsäga datadistributionen och använda CFG-restbruset för att generera nästa stegs brusfördelning.

In- och utmatningskö

Det stora problemet med höghastighetsbildgenereringsramverk är deras neurala nätverksmoduler, inklusive UNet- och VAE-komponenterna. För att maximera effektiviteten och den totala utmatningshastigheten flyttar bildgenereringsramverken processer som för- och efterbearbetning av bilder som inte kräver ytterligare hantering av de neurala nätverksmodulerna utanför pipelinen, varefter de bearbetas parallellt. Dessutom, när det gäller hantering av inmatningsbilden, utförs specifika operationer, inklusive omvandling av tensorformat, omstorleksning av inmatningsbilder och normalisering, noggrant av pipelinen.

För att hantera olikheten i bearbetningsfrekvenser mellan modellens genomströmning och mänsklig inmatning integrerar pipelinen en in- och utmatningskösystem som möjliggör effektiv parallellisering, som visas i följande bild.

De bearbetade inmatningstensorerna köas metodiskt för diffusionsmodeller, och under varje ram hämtar modellen den senaste tensorn från inmatningskön och skickar tensorn till VAE-kodaren, vilket initierar bildgenereringsprocessen. Samtidigt matas tensorutmatningen från VAE-dekodern in i utmatningskön. Slutligen överförs den bearbetade bildinformationen till renderingsklienten.

Stokastisk likhetsfilter

I scenarier där bilderna antingen förblir oförändrade eller visar minimala förändringar utan en statisk miljö eller utan aktiv användarinteraktion, matas inmatningsbilder som liknar varandra in i UNet- och VAE-komponenterna upprepade gånger. Det upprepade matandet leder till generering av nästan identiska bilder och ytterligare konsumtion av GPU-resurser. Dessutom kan omodifierade inmatningsbilder dyka upp ibland i scenarier som involverar kontinuerlig inmatning. För att övervinna detta problem och förhindra onödig användning av resurser använder StreamDiffusion-pipelinen en Stokastisk likhetsfilter-komponent i sin pipeline. Stokastisk likhetsfilter beräknar först kosinuslikheten mellan referensbilden och inmatningsbilden och använder kosinuslikhetspoängen för att beräkna sannolikheten för att hoppa över efterföljande UNet- och VAE-processer.

Baserat på sannolikhetsscoren bestämmer pipelinen om efterföljande processer som VAE-kodning, VAE-dekodning och U-Net ska hoppas över eller inte. Om dessa processer inte hoppas över sparar pipelinen inmatningsbilden vid den tidpunkten och uppdaterar samtidigt referensbilden som ska användas i framtiden. Denna sannolikhetbaserade hoppningsmekanism tillåter StreamDiffusion-pipelinen att fullt ut operera i dynamiska scenarier med låg inter-ram-likhet, medan den i statiska scenarier opererar med högre inter-ram-likhet. Tillvägagångssättet hjälper till att bevara beräkningsresurser och säkerställer också optimal GPU-användning baserat på likheten mellan inmatningsbilderna.

Förberäkning

UNet-arkitekturen behöver både villkorsinbäddningar och inmatningslatenta variabler. Traditionellt härleds villkorsinbäddningarna från promptinbäddningar som förblir konstanta över ramar. För att optimera härledningen från promptinbäddningar förberäknar StreamDiffusion-pipelinen dessa promptinbäddningar och lagrar dem i en cache, som sedan anropas i strömmande eller interaktivt läge. Inom UNet-ramverket beräknas nyckel-värde-paret baserat på varje rams förberäknade promptinbäddning, och med små modifieringar i U-Net kan dessa nyckel-värde-par återanvändas.

Modellacceleration och Tiny AutoEncoder

StreamDiffusion-pipelinen använder TensorRT, ett optimeringsverktyg från Nvidia (NVDA ) för djupinlärningsgränssnitt, för att konstruera VAE- och UNet-motorer, för att accelerera inferenstiden. För att uppnå detta utför TensorRT-komponenten flera optimeringar av neurala nätverk som är utformade för att förbättra effektivitet och öka genomströmning för djupinlärningsramverk och applikationer.

För att optimera hastighet konfigurerar StreamDiffusion-ramverket att använda fasta inmatningsdimensioner och statiska batchstorlekar för att säkerställa optimal minnesallokering och beräkningsgrafer för en specifik inmatningsstorlek, i ett försök att uppnå snabbare bearbetningstider.

Ovanstående figur ger en översikt av inferenspipelinen. Den centrala diffusionspipelinen innehåller UNet- och VAE-komponenterna. Pipelinen inkorporerar en brusreduceringsbatch, en sampad bruscache, en förberäknad promptinbäddningscache och en schemaläggningsvärdecache för att förbättra hastigheten och förmågan att generera bilder i realtid. Stokastisk likhetsfilter eller SSF används för att optimera GPU-användning och också för att styra passagen av diffusionsmodellen dynamiskt.

StreamDiffusion: Experiment och resultat

För att utvärdera dess förmåga implementeras StreamDiffusion-pipelinen på LCM- och SD-turbo-ramverk. TensorRT från Nvidia används som modellaccelerator, och för att möjliggöra lätthanterlig effektivitet används VAE-komponenten TAESD. Låt oss nu se hur StreamDiffusion-pipelinen presterar när den jämförs med nuvarande state-of-the-art-ramverk.

Kvantitativ utvärdering

Följande figur visar effektivitetsjämförelsen mellan den ursprungliga sekventiella UNet och den brusreduceringsbatch-komponenten i pipelinen, och som det kan ses, hjälper implementeringen av den brusreduceringsbatch-strategin till att minska bearbetningstiden betydligt, med nästan 50%, jämfört med de traditionella UNet-slingorna vid sekventiella brusreduceringssteg.

Dessutom ser den genomsnittliga inferenstiden vid olika brusreduceringssteg också en betydande förbättring med olika hastighetsförhöjningsfaktorer när den jämförs med nuvarande state-of-the-art-pipelines, och resultaten visas i följande bild.

StreamDiffusion-pipelinen med RCFG-komponenten visar också en lägre inferenstid när den jämförs med pipelines som innehåller den traditionella CFG-komponenten.

Dessutom är effekten av att använda RCFG-komponenten tydlig i följande bilder när den jämförs med att använda CFG-komponenten.

Som det kan ses, intensifierar användningen av CFG effekten av den textbaserade prompten i bildgenerering, och bilden liknar inmatningsprompten mycket mer när den jämförs med bilderna som genereras av pipelinen utan att använda CFG-komponenten. Resultaten förbättras ytterligare med användningen av RCFG-komponenten, eftersom påverkan av prompten på de genererade bilderna är betydande när den jämförs med den ursprungliga CFG-komponenten.

Slutliga tankar

I den här artikeln har vi diskuterat StreamDiffusion, en realtidsdiffusionspipeline som utvecklats för att generera interaktiva och realistiska bilder, och som löser de nuvarande begränsningarna för diffusionsbaserade ramverk i uppgifter som involverar kontinuerlig inmatning. StreamDiffusion är en enkel och innovativ metod som syftar till att omvandla den sekventiella bruset av den ursprungliga bilden till batchbrus, i syfte att möjliggöra hög genomströmning och flytande strömmar. StreamDiffusion syftar till att möjliggöra hög genomströmning och flytande strömmar genom att eliminera den traditionella vänta-och-interagera-metoden som används av nuvarande diffusionsbaserade ramverk. De potentiella effektivitetsvinsterna lyfter fram potentialen för StreamDiffusion-pipelinen för kommersiella applikationer som erbjuder högpresterande beräkningar och övertygande lösningar för generativ AI.

En ingenjör till yrket, en författare av hjärtat. Kunal är en teknisk skribent med ett djupt kärlek och förståelse för AI och ML, dedikerad till att förenkla komplexa begrepp inom dessa områden genom sin engagerande och informativa dokumentation.