免訓(xùn)練加速DiT!Meta提出自適應(yīng)緩存新方法,視頻生成快2.6倍
現(xiàn)在,視頻生成模型無需訓(xùn)練即可加速了?!
Meta提出了一種新方法AdaCache,能夠加速DiT模型,而且是無需額外訓(xùn)練的那種(即插即用)。
話不多說,先來感受一波加速feel(最右):
可以看到,與其他方法相比,AdaCache生成的視頻質(zhì)量幾乎無異,而生成速度卻提升了2.61倍。
據(jù)了解,AdaCache靈感源于“并非所有視頻都同等重要”。
啥意思??原來團(tuán)隊(duì)發(fā)現(xiàn):
有些視頻在達(dá)到合理質(zhì)量時(shí)所需的去噪步驟比其他視頻少
因此,團(tuán)隊(duì)在加速DiT時(shí)主打一個(gè)“按需分配,動(dòng)態(tài)調(diào)整”,分別提出基于內(nèi)容的緩存調(diào)度和運(yùn)動(dòng)正則化(MoReg)來控制緩存及計(jì)算分配。
目前這項(xiàng)技術(shù)已在GitHub開源,單個(gè)A100(80G)GPU 上就能運(yùn)行,網(wǎng)友們直呼:
看起來速度提升了2~4倍,Meta讓開源AI再次偉大!
“并非所有視頻都同等重要”
下面我們具體介紹下這項(xiàng)研究。
先說結(jié)論,以O(shè)pen-Sora是否加持AdaCache為例,使用AdaCache能將視頻生成速度提升4.7倍——
質(zhì)量幾乎相同的情況下,前后速度從419.60s降低到89.53s。
具體如何實(shí)現(xiàn)的呢??
眾所周知,DiT(Diffusion Transformers)結(jié)合了擴(kuò)散模型和Transformer架構(gòu)的優(yōu)勢(shì),通過模擬從噪聲到數(shù)據(jù)的擴(kuò)散過程,能夠生成高質(zhì)量圖像和視頻。
不過DiT并非完美無缺,自O(shè)penAI發(fā)布Sora以來(DiT因被視為Sora背后的技術(shù)基礎(chǔ)之一而廣受關(guān)注),人們一直嘗試改進(jìn)它。
這不,Meta的這項(xiàng)研究就瞄準(zhǔn)了DiT為人熟知的痛點(diǎn):
依賴更大的模型和計(jì)算密集型的注意力機(jī)制,導(dǎo)致推理速度變慢。
展開來說——
首先,團(tuán)隊(duì)在研究中發(fā)現(xiàn),有些視頻在達(dá)到合理質(zhì)量時(shí)所需的去噪步驟比其他視頻少。
他們展示了基于Open-Sora的不同視頻序列在不同去噪步驟下的穩(wěn)定性和質(zhì)量變化。
通過逐步減少去噪步驟,他們發(fā)現(xiàn)每個(gè)視頻序列的 “中斷點(diǎn)”(即質(zhì)量開始顯著下降的步驟數(shù)量)是不同的,右側(cè)直方圖也顯示了在不同步驟中特征變化的幅度。
這啟發(fā)了團(tuán)隊(duì),“并非所有視頻都同等重要”。
換句話說,針對(duì)每個(gè)視頻都可以有不同的緩存和計(jì)算分配,以此節(jié)約資源。
于是針對(duì)緩存,Meta推出了一種名為AdaCache(自適應(yīng)緩存)的新方法,核心是:
每次生成視頻時(shí),AdaCache會(huì)按視頻的特定內(nèi)容分配緩存資源,將不同視頻的緩存需求動(dòng)態(tài)調(diào)整到最優(yōu)。
其架構(gòu)如圖所示,下面具體展開。
左側(cè)部分,AdaCache將DiT的原始擴(kuò)散過程分為多個(gè)步驟,并對(duì)每一步進(jìn)行殘差計(jì)算,以生成新的表示。
這些新的表示會(huì)在后續(xù)步驟中被重復(fù)使用,而不需要每次都重新計(jì)算,從而節(jié)省大量計(jì)算資源。
過程中,研究使用一個(gè)距離度量(ct)來判斷當(dāng)前表示和之前緩存的表示之間的變化幅度。
如果變化較小,就可以直接使用緩存,節(jié)省計(jì)算量;如果變化較大,則需要重新計(jì)算。
右側(cè)部分,是DiT內(nèi)部的計(jì)算過程,可以看到空間-時(shí)間注意力(STA)、交叉注意力(CA)和多層感知器(MLP)三個(gè)模塊。
其中每一步生成的新表示(如ft+k和ft)會(huì)使用緩存中的殘差進(jìn)行更新,從而減少重復(fù)計(jì)算的次數(shù)。
總之一句話,這種策略使得計(jì)算資源能夠根據(jù)視頻內(nèi)容的復(fù)雜性和變化率動(dòng)態(tài)分配。
此外,為了進(jìn)一步改進(jìn)AdaCache,團(tuán)隊(duì)還引入運(yùn)動(dòng)正則化(MoReg)來控制計(jì)算分配。
通過考慮視頻特定的運(yùn)動(dòng)信息來優(yōu)化緩存策略
團(tuán)隊(duì)發(fā)現(xiàn),視頻中的運(yùn)動(dòng)內(nèi)容對(duì)于確定最佳的去噪步驟數(shù)量至關(guān)重要,通常高運(yùn)動(dòng)內(nèi)容需要更多去噪步驟來保證生成質(zhì)量。
基于此,MoReg的核心思想是:
對(duì)于運(yùn)動(dòng)內(nèi)容較多的視頻,應(yīng)該減少緩存的使用,從而允許在更多的步驟中進(jìn)行重新計(jì)算。
由于需要在視頻生成過程中實(shí)時(shí)估計(jì)運(yùn)動(dòng),MoReg不能依賴于傳統(tǒng)的、計(jì)算密集型的像素空間運(yùn)動(dòng)估計(jì)算法。
補(bǔ)充一下,這是一種用于視頻編碼中的技術(shù),它通過比較相鄰幀之間的像素差異來估計(jì)運(yùn)動(dòng)向量,從而實(shí)現(xiàn)視頻的壓縮。
因此,MoReg使用殘差幀差異作為噪聲潛在運(yùn)動(dòng)得分(noisy latent motion-score)的度量,其公式如下:
且為了進(jìn)一步提高運(yùn)動(dòng)估計(jì)的準(zhǔn)確性,MoReg引入了運(yùn)動(dòng)梯度(motion-gradient)的概念。
它可以作為一個(gè)更好的趨勢(shì)估計(jì),幫助在視頻生成的早期階段預(yù)測(cè)運(yùn)動(dòng),并作為調(diào)整緩存策略的依據(jù)。
那么,采用AdaCache+MoReg的最終效果如何呢?
實(shí)驗(yàn)結(jié)果:優(yōu)于其他免訓(xùn)練加速方法
最后,團(tuán)隊(duì)使用了VBench基準(zhǔn)測(cè)試來評(píng)估AdaCache在不同視頻生成任務(wù)中的性能。
其中VBench提供了一系列的質(zhì)量指標(biāo),包括峰值信噪比(PSNR)、結(jié)構(gòu)相似性(SSIM)和感知圖像質(zhì)量指標(biāo)(LPIPS)。
同時(shí),還測(cè)量了推理延遲(Latency)和計(jì)算復(fù)雜度(FLOPs)。
測(cè)試對(duì)象包括了AdaCache的多個(gè)變體,包括慢速(slow)、快速(fast)和帶有MoReg的版本。
結(jié)果顯示,fast變體提供了更高的加速比,而slow變體則提供了更高的生成質(zhì)量。
與此同時(shí),與其他無訓(xùn)練加速方法(如?-DiT、T-GATE和PAB)相比,在生成質(zhì)量相當(dāng)或更高的情況下,AdaCache都提供了顯著的加速效果。
另外,隨著GPU的數(shù)量增加,AdaCache的加速比也相應(yīng)增加,這表明它能夠有效地利用并行計(jì)算資源,并減少GPU之間的通信開銷。
更多實(shí)驗(yàn)細(xì)節(jié)歡迎查閱原論文。
論文:https://arxiv.org/abs/2411.02397
項(xiàng)目主頁:https://adacache-dit.github.io/
GitHub:https://github.com/AdaCache-DiT/AdaCache