* 本文原創(chuàng)發(fā)布于差評(píng)孵化的商業(yè)財(cái)經(jīng)類帳號(hào) “ 知危 ”
當(dāng)前,各大商業(yè)視頻生成模型幾乎都是基于純擴(kuò)散模型。
擴(kuò)散模型( Diffusion model )與自回歸模型( Autoregressive model )作為視頻生成的兩大技術(shù)路徑,各自展現(xiàn)了不同的特性與優(yōu)勢(shì)。
為深入探討兩種模型的優(yōu)劣勢(shì)、融合趨勢(shì),以及視頻生成未來(lái)的發(fā)展前景,我們特邀 Sand.ai 聯(lián)合創(chuàng)始人、首席科學(xué)家張拯進(jìn)行深度對(duì)話。
張拯是華中科技大學(xué)軟件工程專業(yè)本碩,《 Swin Transformer 》作者之一,ACM 亞洲金牌獲得者,微軟亞洲研究院 MSRA 研究員( 在 MSRA 期間和曹越合作五年 ),ICCV2021 最佳論文獎(jiǎng)獲得者( 馬爾獎(jiǎng) Marr Prize ) ,目前谷歌學(xué)術(shù)總引用近 5 萬(wàn)次。
張拯及其團(tuán)隊(duì)對(duì)視覺(jué)模型技術(shù)界的貢獻(xiàn)是突破性的。此前,Vision Transformer( ViT )是第一篇將純 Transformer 架構(gòu)成功應(yīng)用于圖像分類任務(wù)的論文,在 ViT 之前,圖像識(shí)別任務(wù)幾乎被卷積神經(jīng)網(wǎng)絡(luò)( CNN )完全主導(dǎo)。但 ViT 計(jì)算復(fù)雜度還是太高,難以實(shí)現(xiàn)工程化落地。
而由當(dāng)時(shí)在 MSRA 的張拯、曹越等學(xué)者聯(lián)合提出的《 Swin Transformer 》是 ViT 在視覺(jué)領(lǐng)域落地應(yīng)用的關(guān)鍵進(jìn)化形式,解決了 ViT 在效率等方面的局限,是 ViT 的工程化增強(qiáng)版本,為視覺(jué)基礎(chǔ)模型領(lǐng)域奠定了一塊新基石,該論文現(xiàn)被引次數(shù)已超過(guò) 3 萬(wàn)。
知危與張拯的整場(chǎng)對(duì)話全文近 3 萬(wàn)字,以防您閱讀時(shí)間不充裕,我們先列出對(duì)話全文的觀點(diǎn)總結(jié)。
以下是本次對(duì)話的核心觀點(diǎn)總結(jié)。
關(guān)于自回歸模型與擴(kuò)散模型:
Sora 發(fā)布之后,Transformer 架構(gòu)成為擴(kuò)散模型主流。之后大部分的模型都偏純擴(kuò)散模型,跟 Sora 的區(qū)別不大。
早期的視頻自回歸方法,和LLM比較像,是純自回歸的,目前這條路線上特別成功的、相對(duì)來(lái)說(shuō)大一點(diǎn)的模型,應(yīng)該還沒(méi)有。
從視頻質(zhì)量上,擴(kuò)散模型至少在現(xiàn)階段是最領(lǐng)先的,但這只是現(xiàn)狀,而不是基于算法的第一性原理推導(dǎo)出的最優(yōu)解。
相比擴(kuò)散模型,但凡涉及非常長(zhǎng)時(shí)間的視頻生成,自回歸模型都是更合適的。
自回歸模型天然包含時(shí)間序列關(guān)系,對(duì)于基于時(shí)間的因果關(guān)系的建模比完全不考慮因果結(jié)構(gòu)的方式更完整。
長(zhǎng)遠(yuǎn)來(lái)看,幾乎所有的模態(tài)都會(huì)嘗試融合到一個(gè)統(tǒng)一的大模型里,如果一開(kāi)始就用自回歸的方式來(lái)建模視頻,后續(xù)更容易融合到模態(tài)統(tǒng)一的大模型中。
擴(kuò)散模型目前最大的一個(gè)劣勢(shì),即便在學(xué)界都還是非常前沿的課題,就是擴(kuò)散模型的 Scalability( 可擴(kuò)展性 )效能似乎存疑。
自回歸模型目前為止的最大挑戰(zhàn)是誤差累積。比如生成的單一鏡頭時(shí)間過(guò)長(zhǎng)時(shí),畫(huà)質(zhì)可能會(huì)開(kāi)始變得銳化、模糊不清,或者顏色會(huì)逐漸發(fā)生異常變化。
自回歸加雙向擴(kuò)散模型在建模效率和視頻生成質(zhì)量上與純擴(kuò)散模型的當(dāng)前差距,不代表中長(zhǎng)期的劣勢(shì),依然取決于模型能力的演進(jìn)、結(jié)構(gòu)設(shè)計(jì)和訓(xùn)練方式的進(jìn)一步發(fā)展。
自回歸模型在建模物理上有優(yōu)勢(shì)的一個(gè)跡象是,它有一個(gè)特點(diǎn):對(duì) “ 走路 ”、“ 跑步 ” 這樣的動(dòng)作刻畫(huà)得非常好。
純擴(kuò)散模型主要基于基于前一段視頻的最后一幀進(jìn)行視頻續(xù)寫(xiě),但它很難獲取之前整段視頻中較長(zhǎng)時(shí)間范圍的信息,導(dǎo)致新片段在動(dòng)作連續(xù)性上經(jīng)常出現(xiàn)問(wèn)題。
如果是非常短比如就幾秒的視頻片段,擴(kuò)散模型和自回歸模型之間的差距并不大。如果希望生成比較長(zhǎng)的、具有復(fù)雜敘事結(jié)構(gòu)的視頻,或者希望做真正意義上的視頻續(xù)寫(xiě),自回歸模型都會(huì)有比較明顯的優(yōu)勢(shì)。
現(xiàn)在的視頻生成的自回歸模型更多是指像 MAGI-1 ( 張拯團(tuán)隊(duì)的創(chuàng)業(yè)項(xiàng)目 )這種本質(zhì)上由自回歸和擴(kuò)散耦合在一起的模型,因此天然就會(huì)繼承兩種模型的復(fù)雜性,在系統(tǒng)設(shè)計(jì)和訓(xùn)練過(guò)程中的復(fù)雜性,顯著高于純粹的擴(kuò)散模型或純粹的自回歸模型。
具體實(shí)現(xiàn)里,由于都是基于 Transformer 架構(gòu)來(lái)實(shí)現(xiàn)的,要很好地統(tǒng)一并高效地調(diào)度兩種模型不同的 Attention 模式,在架構(gòu)設(shè)計(jì)上的復(fù)雜度顯著增加。
除了 video 領(lǐng)域,在很多其他模態(tài)和任務(wù)里,擴(kuò)散 + 自回歸的混合范式已經(jīng)成為主流做法。比如 Audio、Robotics、圖像等。
一方面,自回歸加擴(kuò)散模型,結(jié)合了自回歸模型在建模因果結(jié)構(gòu)上的能力,另一方面,又結(jié)合了擴(kuò)散模型在建模細(xì)粒度、高保真度內(nèi)容上的能力。
語(yǔ)言模型也在探索兩種模型的結(jié)合,一類是純好奇向的學(xué)術(shù)探索,一類是更偏工程和系統(tǒng)性能導(dǎo)向的探索,源于自回歸語(yǔ)言模型存在并行性瓶頸。相比之下,視頻方向的擴(kuò)散+自回歸結(jié)合則更加自然, 因?yàn)橐曨l天然就涉及時(shí)間建模和空間細(xì)節(jié)建模這兩個(gè)維度。
在非常短的時(shí)間范圍內(nèi),是否建模因果關(guān)系其實(shí)影響不大,但當(dāng)處理的是更長(zhǎng)的視頻序列時(shí),時(shí)間維度上的結(jié)構(gòu)性就變得更重要了。
基于文本實(shí)現(xiàn)逐塊文本控制,從表達(dá)能力角度來(lái)說(shuō),雙向擴(kuò)散模型不是做不到,但在實(shí)際應(yīng)用中極難做到。相比之下,自回歸結(jié)構(gòu)由于是分階段推進(jìn)、邊生成邊處理,其訓(xùn)練方式也可以更自然地暴露在復(fù)雜語(yǔ)義切換、節(jié)奏控制的真實(shí)任務(wù)分布下。
關(guān)于視頻生成行業(yè):
從視覺(jué)效果角度看,目前大部分視頻生成公司關(guān)注的是讓視頻看起來(lái)夠自然、有表現(xiàn)力,所以偏向柔性動(dòng)作、人物行為、自然運(yùn)動(dòng),而不是物理精準(zhǔn)。從物理仿真角度看,目前行業(yè)內(nèi)面臨的最大問(wèn)題之一就是數(shù)據(jù)準(zhǔn)備還遠(yuǎn)遠(yuǎn)不夠。
閉源本身其實(shí)并不能真正讓一個(gè)團(tuán)隊(duì)在技術(shù)上保持長(zhǎng)期的領(lǐng)先優(yōu)勢(shì), 甚至不要說(shuō)長(zhǎng)期,在中期維度上保持技術(shù)壁壘都比較困難。閉源所帶來(lái)的,更多只是一個(gè)相對(duì)短期的時(shí)間窗口。但除非模型在能力上實(shí)現(xiàn)了真正的斷檔式領(lǐng)先, 否則,模型本身并不足以直接帶來(lái)快速的商業(yè)收益。
視頻生成和機(jī)器人在中長(zhǎng)期的發(fā)展過(guò)程中,本質(zhì)上可能要解決的是同一類問(wèn)題,但可能 “ 視頻生成 ” 會(huì)走在機(jī)器人前面。
整場(chǎng)對(duì)話中,張拯還結(jié)合了他的創(chuàng)業(yè)項(xiàng)目 MAGI-1 進(jìn)行了諸多實(shí)踐中技術(shù)細(xì)節(jié)的闡述和對(duì)技術(shù)路線的思考,由于與實(shí)操相關(guān),只看觀點(diǎn)提煉會(huì)有些許抽象難以理解,所以我們誠(chéng)邀您直接觀看全文。
以下是對(duì)話原文,這是一場(chǎng)學(xué)術(shù)前沿相關(guān)的對(duì)話,所以知危編輯部并未作刪減,僅進(jìn)行了部分不改變張拯原意的編輯。正文長(zhǎng)度較長(zhǎng),我們推薦您使用公眾號(hào)的文章“ 浮窗 ”或“ 星標(biāo) ”功能來(lái)提高閱讀體驗(yàn),以便閱讀被打斷后您可快速返回繼續(xù)閱讀。
行業(yè)篇
:請(qǐng)簡(jiǎn)短介紹擴(kuò)散模型和自回歸模型在視頻生成方向的研究發(fā)展歷程,以及都有哪些代表性的成果?
:傳統(tǒng)的敘事里常會(huì)把自回歸模型和擴(kuò)散模型對(duì)立起來(lái)。但其實(shí)現(xiàn)在的整體發(fā)展趨勢(shì),反而是兩邊在融合:各自吸收對(duì)方的優(yōu)點(diǎn),結(jié)合起來(lái)形成新的模式。
早期的研究方向里確實(shí)存在兩條路線:一邊是純粹的自回歸模型,另一邊是純粹的擴(kuò)散模型。在視頻生成這個(gè)領(lǐng)域,純擴(kuò)散模型的代表性成果里,OpenAI 發(fā)布的 Sora 是一個(gè)非常重要的節(jié)點(diǎn)。它可以說(shuō)開(kāi)啟了用擴(kuò)散模型進(jìn)行視頻生成的新時(shí)代,尤其是在商業(yè)機(jī)構(gòu)和 Production 級(jí)別的應(yīng)用中,Sora 成為了一個(gè)標(biāo)志性項(xiàng)目。
但其實(shí)在這之前,在學(xué)界里也有跟 Sora 非常像的模型,有一個(gè)特別有代表性的叫 SVD,Stable Video Diffusion,是 Stability AI 做的。當(dāng)然,由于一些歷史原因,SVD 當(dāng)時(shí)還是基于卷積( CNN ),而沒(méi)有基于 Transformer。到了 Sora 發(fā)布之后,大家開(kāi)始更多用 Transformer 架構(gòu)去做。之后其實(shí)大部分的模型都偏向于純粹的擴(kuò)散模型,跟 Sora 的區(qū)別整體而言都不是特別大,都是在各自的數(shù)據(jù)集和細(xì)節(jié)上做改進(jìn),然后推出商業(yè)化的 Model。
而學(xué)界早期的自回歸( Autoregressive )模型,最有代表性的一篇 Paper 應(yīng)該是 VideoPoet,是 Google 的蔣路( 現(xiàn)已加入 TikTok )的團(tuán)隊(duì)研發(fā)的。
早期的視頻自回歸方法,基本上會(huì)利用跟現(xiàn)在的大語(yǔ)言模型比較像的思路,就是把整個(gè)視頻按照時(shí)間和空間分解,將每個(gè)像素或幾個(gè)像素表示成一個(gè)離散化的 video token,然后通過(guò)不斷地利用大模型去預(yù)測(cè)下一個(gè) video token 的方式來(lái)進(jìn)行。但是目前這條路線上特別成功的、相對(duì)來(lái)說(shuō)大一點(diǎn)的模型,目前應(yīng)該還沒(méi)有。
如果是試圖去結(jié)合自回歸和 Diffusion 兩類模型優(yōu)點(diǎn)的工作,近乎都是偏商業(yè)化的模型,可能 MAGI-1 是第一個(gè)。
學(xué)界在過(guò)去一年多也有很多研究在做類似的探索。印象比較深刻的是由英國(guó)自動(dòng)駕駛創(chuàng)業(yè)公司 Wayve 提出的GAIA,其實(shí) GAIA 嚴(yán)格來(lái)說(shuō)不是做視頻生成,而是做自動(dòng)駕駛的,但 GAIA 試圖用自動(dòng)駕駛采集到的車(chē)載第一人稱視角的數(shù)據(jù)來(lái)建模,這項(xiàng)工作很有啟發(fā)性。他們?cè)?23 年 9 月份就給出了一個(gè)自回歸+Diffusion 的技術(shù)方案,并且支持通過(guò) Action 來(lái)控制視頻生成的內(nèi)容。國(guó)內(nèi)像智源的 NOVA 也比較有代表性。
:請(qǐng)綜合比較視頻生成方向上擴(kuò)散模型和自回歸模型的優(yōu)缺點(diǎn)?
:首先,從商業(yè)化這個(gè)層面來(lái)看,擴(kuò)散模型主要的優(yōu)點(diǎn)是,OpenAI 在比較早的時(shí)候證明了,通過(guò)不引入任何自回歸特性的純擴(kuò)散模型來(lái)做視頻建模,起碼對(duì)于一個(gè)相對(duì)比較短的視頻片段,是能夠達(dá)到比較好的效果的。這使得大家在技術(shù)路線上的探索風(fēng)險(xiǎn)低了很多。
其次,對(duì)于純粹的擴(kuò)散模型,學(xué)界研究的時(shí)間也有四五年了,在技術(shù)實(shí)現(xiàn)細(xì)節(jié)上的積累比較深,也使得技術(shù)實(shí)現(xiàn)的風(fēng)險(xiǎn)相對(duì)降低。
從實(shí)際視頻生成的質(zhì)量等維度上,擴(kuò)散模型至少在現(xiàn)階段的表現(xiàn)中是最領(lǐng)先的,但我認(rèn)為這只是現(xiàn)狀,而不是基于算法的第一性原理推導(dǎo)出的最優(yōu)解。關(guān)于自回歸模型的優(yōu)點(diǎn),從視頻生成應(yīng)用角度,視頻生成肯定不應(yīng)該只能生成幾秒鐘的短片段,我們還是希望模型不僅能生成短劇級(jí)別的內(nèi)容,還可以生成電影、電視劇甚至是游戲的非常長(zhǎng)時(shí)間的內(nèi)容。而但凡涉及這種非常長(zhǎng)時(shí)間的視頻生成,自回歸模型都是更合適的。
主要有兩個(gè)原因:第一個(gè)原因是,對(duì)于用戶,不希望隨著生成視頻時(shí)間越長(zhǎng),需要等待至可以觀看的時(shí)間也越長(zhǎng)。這個(gè)等待時(shí)間至少應(yīng)該是一個(gè)常數(shù)。這就要求模型能夠以片段生成、甚至是逐幀生成的方式進(jìn)行。而逐幀生成,在學(xué)術(shù)上通常被稱為自回歸( Autoregressive )方式,或者是 Streaming( 流式 )生成方式。第二個(gè)原因是,純粹的 “ 生成 ” 并沒(méi)有滿足用戶的最終目標(biāo),用戶還是希望在生成過(guò)程中,模型能夠不斷地與人或外部世界交互,從而實(shí)時(shí)或非實(shí)時(shí)地去改變后續(xù)生成的內(nèi)容。這種方式從中長(zhǎng)期來(lái)看,會(huì)產(chǎn)生一種全新的內(nèi)容形態(tài)。這也對(duì)應(yīng)了自回歸模型的基本特點(diǎn):它天然更適合逐步、交互式的生成過(guò)程。
從我的經(jīng)驗(yàn)來(lái)看,MAGI-1 能生成的最復(fù)雜的運(yùn)動(dòng),是包含連續(xù)多階段、情節(jié)演進(jìn)、跨物體轉(zhuǎn)換和擬人動(dòng)作的 “ 敘事性運(yùn)動(dòng) ”。比如我自己在用的時(shí)候,更常見(jiàn)的方式是:用一個(gè)簡(jiǎn)單的 Prompt,生成兩三秒視頻;然后再換一個(gè)新的 Prompt,繼續(xù)生成兩三秒,甚至用這種方式做過(guò)完整一鏡到底、30 多秒、包含完整故事線的內(nèi)容生成。
我自己嘗試的一個(gè)比較復(fù)雜的例子是這樣的:一個(gè)人坐在椅子上;他快速站起來(lái),拿出一把槍,對(duì)準(zhǔn)屏幕前的你;但扣動(dòng)扳機(jī)后不是子彈,而是飛出一朵鮮花;這朵鮮花開(kāi)始在空中緩慢漂?。黄∵^(guò)程中,鮮花逐漸變形為一只鳥(niǎo);鳥(niǎo)落在這個(gè)人的身上;他朝你微笑,然后轉(zhuǎn)身離開(kāi)。然后他在轉(zhuǎn)身的過(guò)程中,兩邊會(huì)有這種類似于劇院的簾子拉上,你以為結(jié)束了,但實(shí)際上這個(gè)人又把簾子拉開(kāi),然后又沖你笑了一下,最后整個(gè)畫(huà)面慢慢變黑,并且出現(xiàn)了一個(gè) Logo。
這其實(shí)是最能體現(xiàn) MAGI-1 在產(chǎn)品上的優(yōu)勢(shì)場(chǎng)景:每次只生成一小段視頻;并且在每一段生成之后,可以實(shí)時(shí)修改 Prompt 來(lái)調(diào)整接下來(lái)的內(nèi)容;這樣用戶就可以通過(guò)一種 “ 邊生成、邊構(gòu)思、邊調(diào)整 ” 的方式,去完成一個(gè)復(fù)雜內(nèi)容的創(chuàng)作。從我自己的使用體驗(yàn)出發(fā),我發(fā)現(xiàn)和其他生成工具很不一樣的一點(diǎn)是:用其他模型的時(shí)候,我通常是會(huì)提前構(gòu)思好整個(gè)故事結(jié)構(gòu), 然后讓工具一次性生成某一段素材,更多地把它當(dāng)成“素材庫(kù)工具”來(lái)用;但在我們自己的產(chǎn)品里,創(chuàng)作方式會(huì)變得更動(dòng)態(tài)。
總結(jié)來(lái)說(shuō),如果你希望生成一個(gè)非常短比如就幾秒的視頻片段,擴(kuò)散模型和自回歸模型之間的差距并不大。但如果你希望生成比較長(zhǎng)的、具有復(fù)雜敘事結(jié)構(gòu)的視頻,或者你希望做真正意義上的視頻續(xù)寫(xiě),自回歸模型都會(huì)有比較明顯的優(yōu)勢(shì)。
如果從科學(xué)或理論的角度,盡管并不是所有視頻內(nèi)容都嚴(yán)格遵循物理規(guī)律,但大部分視頻中確實(shí)包含了一定的物理規(guī)律信息。而因?yàn)闀r(shí)間本身是線性演進(jìn)的,如果在建模之初就能夠把基于時(shí)間的因果特性納入,那么對(duì)于因果關(guān)系的建模就會(huì)比完全不考慮因果結(jié)構(gòu)的方式更完整一些,也更有可能學(xué)到真正穩(wěn)定的規(guī)律。這也是自回歸模型序列式生成方式天然能夠?qū)崿F(xiàn)的。
最后,從非常長(zhǎng)期的角度來(lái)看,幾乎所有的模態(tài)都會(huì)嘗試融合到一個(gè)統(tǒng)一的大模型里,這些模態(tài)肯定會(huì)包括語(yǔ)言、語(yǔ)音、圖像等,視頻最終也會(huì)成為不可或缺的一部分。考慮到目前像語(yǔ)言這種被認(rèn)為 “ 智力密度 ” 較高的模態(tài),主流的建模方式幾乎都是自回歸形式,如果我們一開(kāi)始就用自回歸的方式來(lái)建模視頻,那后續(xù)在模態(tài)統(tǒng)一的大模型中,視頻的建模路徑也會(huì)更順暢和自然。
關(guān)于兩者的相對(duì)劣勢(shì),擴(kuò)散模型目前最大的一個(gè)劣勢(shì),即便在學(xué)界都還是非常前沿的課題,就是擴(kuò)散模型的 Scalability( 可擴(kuò)展性 )效能似乎存疑。無(wú)論是我們這邊的一些初期實(shí)驗(yàn),還是跟其他同行相互交流,都有這樣的觀察:擴(kuò)散模型的 Scaling 效果雖然不是沒(méi)有,但性價(jià)比不高。或者說(shuō)通過(guò)擴(kuò)展參數(shù)數(shù)量、增加訓(xùn)練計(jì)算量,確實(shí)也能看到效果有所提升,但這個(gè)提升與投入的成本不成正比。但這究竟是因?yàn)闆](méi)有把事情做對(duì),還是擴(kuò)散模型本身就存在這方面的結(jié)構(gòu)性缺陷,目前還沒(méi)有完全搞清楚。因?yàn)檎麄€(gè)擴(kuò)散模型系統(tǒng)還是很復(fù)雜的,牽涉的變量非常多。各個(gè)組織的人,包括學(xué)界、Startup 和大公司,都還在這方面做探索。
對(duì)于自回歸模型,目前為止的最大挑戰(zhàn),還是誤差累積。比如 MAGI-1,盡管理論上可以支持無(wú)限時(shí)長(zhǎng)的視頻生成,但當(dāng)生成的單一鏡頭時(shí)間過(guò)長(zhǎng)時(shí),確實(shí)會(huì)出現(xiàn)誤差逐步積累的現(xiàn)象。主觀視覺(jué)上的體現(xiàn)就是:畫(huà)質(zhì)可能會(huì)開(kāi)始變得銳化、模糊不清,或者顏色會(huì)逐漸發(fā)生異常變化。
我們也跟很多做語(yǔ)言模型的同行交流過(guò),但他們很難像在視頻或者語(yǔ)音里那樣,直觀地感受到 “ 誤差累積 ” 的現(xiàn)象,只是有時(shí)候會(huì)對(duì)語(yǔ)言模型中的某些錯(cuò)誤 Case ,懷疑它是不是一種 “ 誤差累積 ”。比如語(yǔ)言模型中經(jīng)常出現(xiàn)的一種情況是:一旦語(yǔ)言模型開(kāi)始重復(fù)輸出某些詞或句子,后面就會(huì)一直重復(fù),怎么也拽不回來(lái)。
:基于自回歸模型的視頻生成,對(duì)于已有內(nèi)容的可編輯性是否比擴(kuò)散模型更差?以及在生成質(zhì)量方面也更差?
:其實(shí)原理上不一定是這樣。比如我們現(xiàn)在做的視頻生成,即使是自回歸的形式,但在一些處理數(shù)據(jù)的方式上,和雙向擴(kuò)散模型還是挺相似的。
MAGI-1 采用的其實(shí)還是自回歸和雙向模型混合建模的方法。并且還存在很多其它不同的自回歸和擴(kuò)散模型相結(jié)合的建模策略。
如果只是討論 “ 編輯 ”,可以參考像 GPT-4o Image 這樣的生成模型。它大概率是一個(gè)自回歸和擴(kuò)散融合的模型,而且主架構(gòu)應(yīng)該是自回歸。但它的通過(guò)多輪對(duì)話交互的編輯能力,其實(shí)表現(xiàn)得還是比較好的。所以說(shuō),自回歸模型在編輯能力上的限制,更多是當(dāng)前模型能力和訓(xùn)練范式的問(wèn)題,而不完全是自回歸這個(gè)建模方式本身的缺陷。 關(guān)于擴(kuò)散模型和自回歸模型目前在質(zhì)量方面的差距,首先,自回歸模型因?yàn)橐恍┨匦裕热缧枰?per-frame 或 per-token 的逐步建模,如果在算法上不做任何優(yōu)化,特別是在自回歸和擴(kuò)散結(jié)合的混合結(jié)構(gòu)中,訓(xùn)練效率相較于純雙向擴(kuò)散模型是明顯偏低的。
其次,整個(gè)自回歸加雙向擴(kuò)散模型目前在學(xué)界的研究坦率來(lái)說(shuō)還沒(méi)有特別多,遠(yuǎn)不如雙向擴(kuò)散模型那樣成熟。因此,這里面可能會(huì)出現(xiàn)一些像前面提到的 “ 誤差累積 ” 的問(wèn)題,從視覺(jué)效果上看,有時(shí)會(huì)比擴(kuò)散模型更明顯。但我覺(jué)得這一部分問(wèn)題都是當(dāng)下的階段性現(xiàn)象,它不代表自回歸模型從中長(zhǎng)期來(lái)看在建模效率和視頻生成質(zhì)量上一定會(huì)劣于雙向模型。這依然取決于模型能力的演進(jìn)、結(jié)構(gòu)設(shè)計(jì)和訓(xùn)練方式的進(jìn)一步發(fā)展。
:自回歸能天然地實(shí)現(xiàn)因果建模,還是只實(shí)現(xiàn)了一部分?或者需要更多的因果約束才能實(shí)現(xiàn)足夠逼真的物理效果?
:MAGI-1 目前也只是實(shí)現(xiàn)了部分的因果建模,還不是能夠徹底讓模型百分百進(jìn)行因果建模的形式。我們現(xiàn)在也在探索是否有更好的形式,能夠明確地保證模型進(jìn)行完全的因果建模,相信最終一定是可以找到解決辦法的。
關(guān)于 “ 是否需要更多因果約束 ”,我覺(jué)得這取決于兩個(gè)方面:第一,算法層面:如果因果約束設(shè)計(jì)得更充分,它會(huì)迫使模型從數(shù)據(jù)中更主動(dòng)地去學(xué)習(xí)因果關(guān)系。第二,數(shù)據(jù)本身也極為關(guān)鍵:我們?nèi)粘K玫囊曨l數(shù)據(jù),特別是從互聯(lián)網(wǎng)上收集的,比如電影、電視劇、動(dòng)畫(huà),其實(shí)很多內(nèi)容并不嚴(yán)格遵循現(xiàn)實(shí)物理規(guī)律。哪怕模型在結(jié)構(gòu)上具備了建模因果關(guān)系的能力,如果數(shù)據(jù)中充滿了 “ 反物理 ” 的例子,那模型最終學(xué)到的也可能是錯(cuò)亂或非現(xiàn)實(shí)的因果模式。當(dāng)數(shù)據(jù)本身蘊(yùn)含了較多真實(shí)的物理規(guī)律,配合上更合適、更強(qiáng)的建模方式,模型就更容易學(xué)到符合物理世界的因果結(jié)構(gòu)和動(dòng)態(tài)邏輯。
所以最終來(lái)看,建模方式和數(shù)據(jù)質(zhì)量是相輔相成的:缺一不可。
嚴(yán)格來(lái)說(shuō),像無(wú)人駕駛這種場(chǎng)景,或者是通過(guò)真實(shí)鏡頭拍攝出來(lái)的視頻,基本上都是符合物理規(guī)律的,但在美學(xué)表達(dá)或視覺(jué)精致度上相對(duì)弱一些。而一些偏特效制作類的視頻,雖然在視覺(jué)效果上更突出,但往往會(huì)有不少不符合物理規(guī)律的成分,比如不自然的光影、夸張的動(dòng)作、失真的重力等。這兩者之間的權(quán)衡其實(shí)是很難做到完美的。從數(shù)據(jù)量的角度,目前基于現(xiàn)實(shí)世界拍攝的數(shù)據(jù)遠(yuǎn)多于人工制作的數(shù)據(jù)。
如果我們?nèi)タ醋罱母鞣N模型的新版本發(fā)布的情況,可以大致看出,這種在物理和運(yùn)動(dòng)表現(xiàn)上的提升,主要還是由于 Scaling 帶來(lái)的。當(dāng)你擁有了更大的模型,再加上質(zhì)量更高、結(jié)構(gòu)更合理的數(shù)據(jù)集之后,對(duì)于一些更復(fù)雜的內(nèi)容——無(wú)論是人體運(yùn)動(dòng),還是一些偏物理效果的內(nèi)容( 比如重力、碰撞、慣性反應(yīng)、柔體運(yùn)動(dòng)等 )——模型的建模能力都會(huì)比之前顯著提升。
我們現(xiàn)在會(huì)同時(shí)關(guān)注兩個(gè)維度:一個(gè)是物理的真實(shí)性,另一個(gè)是美學(xué)上的體驗(yàn)。
因?yàn)槟壳罢麄€(gè)行業(yè)里,偏商業(yè)化落地的還是以 “ 視頻生成 ” 為核心場(chǎng)景為主,從這個(gè)角度出發(fā),我們肯定希望生成結(jié)果在美學(xué)層面是令人滿意的、有表現(xiàn)力的,能帶來(lái)視覺(jué)沖擊或者藝術(shù)感染力。
但與此同時(shí),我們也不會(huì)把長(zhǎng)期目標(biāo)完全局限在視頻內(nèi)容生成這件事本身。從更長(zhǎng)遠(yuǎn)的視角來(lái)看,我們其實(shí)更關(guān)注的是模型是否具備對(duì)物理世界、對(duì)客觀規(guī)律進(jìn)行結(jié)構(gòu)性建模和刻畫(huà)的能力。
:可否用一些代表性例子說(shuō)明自回歸模型與擴(kuò)散模型在建模物理效果上的天然差距?
:有兩個(gè)代表性的例子可以說(shuō)明。第一個(gè)是我們?cè)谟?xùn)練自己模型的非常早期,就發(fā)現(xiàn)自回歸模型有一個(gè)特點(diǎn):對(duì) “ 走路 ”、“ 跑步 ” 這樣的動(dòng)作刻畫(huà)得非常好。
如果我們回頭去看第一版 Sora 剛發(fā)布時(shí)放的一些 demo,以及后來(lái)其他一些友商的案例,即便是相對(duì)比較大的 model 生成的 demo,其實(shí)在 “ 走路 ” 或 “ 跑步 ” 這個(gè)動(dòng)作上經(jīng)常會(huì)出現(xiàn)一些問(wèn)題。比如說(shuō):人物在走路時(shí)會(huì)順拐;原本應(yīng)該是左右腿交替前進(jìn),但在某個(gè)瞬間,突然就會(huì)變成連續(xù)兩次邁左腿,或者連續(xù)兩次邁右腿;這些動(dòng)作在視覺(jué)上看起來(lái)不協(xié)調(diào)、不自然,很容易 “ 穿幫 ”。
知危在 MAGI-1 上測(cè)試的 “ 走路 ” 案例
而像這類情況,在 MAGI-1 的架構(gòu)下,我們?cè)诜浅P〉哪P?、非常早期的階段就發(fā)現(xiàn):對(duì)于 “ 走路 ” 這種在時(shí)序上有明確節(jié)奏和規(guī)律的運(yùn)動(dòng),模型的刻畫(huà)效果就非常好。幾乎不會(huì)出現(xiàn)像順拐、左右腿交替出錯(cuò)這類問(wèn)題。這確實(shí)是一個(gè)很重要的證據(jù)點(diǎn),說(shuō)明自回歸建模對(duì)時(shí)序規(guī)律、物理效果的捕捉有天然優(yōu)勢(shì)。
知危在 MAGI-1 上測(cè)試的 “ 跑步 ” 案例
第二個(gè)例子是關(guān)于 video 續(xù)寫(xiě)( video continuation ) 。如果單純指從一段已經(jīng)生成的視頻后面接著繼續(xù)生成的能力,很多其它模型也可以做。但其它模型大多數(shù)采用的策略是基于前一段視頻的最后一幀,以 “ 圖像續(xù)寫(xiě) ” 的方式來(lái)進(jìn)行生成。這種方式有一個(gè)明顯的弱點(diǎn)是:它很難獲取之前整段視頻中較長(zhǎng)時(shí)間范圍的信息;因此生成的新片段在動(dòng)作連續(xù)性上經(jīng)常會(huì)出現(xiàn)問(wèn)題。
比如說(shuō)給一段 5 秒鐘的視頻,內(nèi)容是一個(gè)小球在屏幕上移動(dòng),它原本是按照某種明確的運(yùn)動(dòng)規(guī)律在運(yùn)動(dòng)的。如果只是拿前一段視頻的最后一幀作為起點(diǎn),用圖像續(xù)寫(xiě)的方式繼續(xù)生成,新視頻往往就不再符合前 5 秒小球的運(yùn)動(dòng)規(guī)律,比如方向、速度可能就突然變了。但在我們目前的實(shí)現(xiàn)里,在運(yùn)動(dòng)連續(xù)性上表現(xiàn)顯著更好,不會(huì)出現(xiàn)那種前后斷開(kāi)的感覺(jué)。
技術(shù)篇
:擴(kuò)散模型和自回歸模型在訓(xùn)練復(fù)雜度上有什么不同?根源是什么?如何解決?
:關(guān)于訓(xùn)練復(fù)雜度,可以從兩個(gè)方面來(lái)說(shuō):第一個(gè)方面是由于算法本身的內(nèi)在復(fù)雜度不同,第二個(gè)方面是我們目前對(duì)這兩種模型的理解程度不同,導(dǎo)致訓(xùn)練策略、優(yōu)化范式上的復(fù)雜度不同。
從這兩種模型內(nèi)在的復(fù)雜度來(lái)看。這里說(shuō)的自回歸模型,其實(shí)更多是指像 MAGI-1 這種本質(zhì)上由自回歸和擴(kuò)散耦合在一起的模型。它實(shí)質(zhì)上試圖通過(guò)這種耦合結(jié)構(gòu),結(jié)合兩種不同建模范式的優(yōu)點(diǎn)。也正因?yàn)槿绱?,它天然就?huì)繼承兩種模型的復(fù)雜性,這也意味著它在系統(tǒng)設(shè)計(jì)和訓(xùn)練過(guò)程中的復(fù)雜性,顯著高于純粹的擴(kuò)散模型或純粹的自回歸模型。這是它內(nèi)在復(fù)雜度的一個(gè)直接來(lái)源。
具體實(shí)現(xiàn)里,因?yàn)楝F(xiàn)在不管是擴(kuò)散模型還是自回歸模型,其實(shí)底層大多都是基于 Transformer 架構(gòu)來(lái)實(shí)現(xiàn)的。這也帶來(lái)了進(jìn)一步的工程挑戰(zhàn)。Transformer 架構(gòu)里面有一個(gè)最關(guān)鍵的基礎(chǔ)計(jì)算單元是 Attention。在擴(kuò)散模型里傳統(tǒng)上使用的是一種叫 Full Attention 的機(jī)制,也就是在一個(gè) Attention 模塊內(nèi)部,任意兩個(gè)元素都可以相互 “ 看見(jiàn) ”,信息可以完全雙向流通。而在自回歸模型里通常采用的是 Causal attention,也就是所謂的因果掩碼機(jī)制:當(dāng)前這個(gè)元素只能看見(jiàn)它之前的歷史元素,不能看未來(lái)的內(nèi)容,而歷史元素也看不到當(dāng)前的內(nèi)容。
那在 MAGI-1 架構(gòu)下,必須同時(shí)處理這兩種不同的 Attention 機(jī)制。而目前在整個(gè)業(yè)界,其實(shí)還沒(méi)有一個(gè)特別成熟、標(biāo)準(zhǔn)化的實(shí)現(xiàn)方案,可以很好地統(tǒng)一并高效地調(diào)度這兩種不同的 Attention 模式。這就帶來(lái)了架構(gòu)設(shè)計(jì)上的顯著復(fù)雜度。
關(guān)于復(fù)雜度,第二點(diǎn)是,我們對(duì)這兩類方法的理解程度不同,也導(dǎo)致了訓(xùn)練和系統(tǒng)實(shí)現(xiàn)上的一些復(fù)雜度差異。像傳統(tǒng)的擴(kuò)散模型,從 2021 年底開(kāi)始,無(wú)論是在圖像生成的學(xué)術(shù)研究還是工業(yè)應(yīng)用中,其實(shí)已經(jīng)有了非常廣泛的探索。所以在這條線上,業(yè)界已經(jīng)積累了很多 know-how 和成熟的工程實(shí)踐。但是對(duì)于純粹的自回歸模型,或者是擴(kuò)散 + 自回歸耦合模型,在處理 video 和 image 等多模態(tài)任務(wù)時(shí),大家整體的理解還相對(duì)較淺,包括我們自己在內(nèi)。所以在實(shí)際的研發(fā)過(guò)程中,會(huì)遇到很多不確定性和復(fù)雜度。
:目前在結(jié)合擴(kuò)散和自回歸的優(yōu)勢(shì)方面,有哪些比較值得關(guān)注的成果?
:其實(shí)在我們剛開(kāi)始研發(fā) MAGI-1 的時(shí)候,業(yè)界在不同模態(tài)里其實(shí)各自都有一套成熟的最佳實(shí)踐。
并且,除了視頻這一領(lǐng)域目前還普遍使用純粹的擴(kuò)散模型之外,在很多其他模態(tài)和任務(wù)里,擴(kuò)散 + 自回歸的混合范式已經(jīng)成為主流做法。比如說(shuō):Audio( 語(yǔ)音 ) 模型,Robotics( 機(jī)器人/決策建模 ) 中的 Decision making ( 決策建模 )模型,在圖像生成方面,尤其是 GPT-4o 發(fā)布之后,圖像領(lǐng)域也能看到明顯的類似轉(zhuǎn)向。
在 Audio 方面,我最近關(guān)注到的就是 Kimi 和階躍星辰,這兩家國(guó)內(nèi)在語(yǔ)音模型上表現(xiàn)很好的公司。他們近期也都在做 Audio 方向的探索,分別提出了 Kimi-Audio 和 Step-Audio,而且他們的 Audio 模型幾乎清一色采用的是 Diffusion 與自回歸相結(jié)合的方式。在整個(gè)決策建模領(lǐng)域( Decision making ),也有一批工作沿著這條融合路線在走,比如:TransFusion,Diffusion Forcing等。
它們能夠結(jié)合兩類模型各自的優(yōu)勢(shì)。一方面,它結(jié)合了自回歸模型在建模因果結(jié)構(gòu)上的能力,另一方面,又結(jié)合了擴(kuò)散模型在建模細(xì)粒度、高保真度內(nèi)容上的能力,特別適合那些不一定涉及高階智能,但對(duì)人類體驗(yàn)非常關(guān)鍵的信號(hào),比如圖像紋理、聲音質(zhì)感、微表情、微動(dòng)作等。
:目前,語(yǔ)言方向也在探索擴(kuò)散模型和自回歸模型的選擇或結(jié)合,您認(rèn)為視頻方向可以為此提供哪些經(jīng)驗(yàn)或啟發(fā)??jī)蓚€(gè)方向在這方面有哪些共同點(diǎn)和不同點(diǎn)?
:總體來(lái)說(shuō),語(yǔ)言方向的出發(fā)點(diǎn)和視頻方向,是有明顯不同的。至少我目前觀察到,語(yǔ)言方向的這類探索大致分為兩個(gè)主要?jiǎng)右颍?strong>第一類是偏學(xué)術(shù)導(dǎo)向的探索,就是出于一種 “ 既然擴(kuò)散模型在圖像、音頻等其他模態(tài)中都取得了不錯(cuò)的效果,那么在語(yǔ)言這邊是否也可以嘗試看看 ” 的想法。這類工作更多體現(xiàn)為一種開(kāi)放性實(shí)驗(yàn),希望看看擴(kuò)散模型是否能在語(yǔ)言生成中帶來(lái)一些新的建模特性或生成風(fēng)格,屬于典型的探索性研究。
第二類則是更偏工程和系統(tǒng)性能導(dǎo)向的探索: 這類動(dòng)因源于自回歸語(yǔ)言模型在每個(gè) token 的生成過(guò)程中存在并行性瓶頸。因?yàn)樽曰貧w天然是順序依賴的,所以在實(shí)時(shí)生成、低延遲交互等場(chǎng)景下,無(wú)法像擴(kuò)散模型那樣實(shí)現(xiàn)大規(guī)模并行。 而擴(kuò)散模型在這一點(diǎn)上具有優(yōu)勢(shì),因此在一些需要高吞吐、快速響應(yīng)的語(yǔ)言應(yīng)用中,大家開(kāi)始嘗試將擴(kuò)散機(jī)制引入語(yǔ)言建模中。
相比之下,視頻方向的擴(kuò)散+自回歸結(jié)合則更加自然, 因?yàn)橐曨l天然就涉及時(shí)間建模( 需要因果結(jié)構(gòu) )和空間細(xì)節(jié)建模( 需要高分辨重建 )這兩個(gè)維度,擴(kuò)散和自回歸分別恰好適合這兩個(gè)方向。
所以我們?cè)谶@兩個(gè)不同方向的結(jié)合上,確實(shí)積累了一些關(guān)于特點(diǎn)和 knowhow 的觀察,這些經(jīng)驗(yàn)可以為語(yǔ)言模型提供一些有價(jià)值的參考。為了能夠更快速、高效地在訓(xùn)練階段同時(shí)支持?jǐn)U散與自回歸兩種建模特性,我們也開(kāi)源了一個(gè)基礎(chǔ)算子,叫 MagiAttention,它本質(zhì)上是一個(gè)偏 infra 層的組件。我們認(rèn)為,視頻方向后續(xù)在這類 infra 工具上的迭代上會(huì)有越來(lái)越多的工作。
視頻生成在訓(xùn)練層面也和語(yǔ)言模型有很大不同,和超長(zhǎng)的上下文有很大關(guān)系。比如MAGI-1的論文中有提到“ 視頻 token 的上下文長(zhǎng)度極長(zhǎng),訓(xùn)練期間可達(dá) 400 萬(wàn)個(gè)token ”,那么視頻 token 與秒數(shù)、分辨率之間的關(guān)系是什么呢?
在處理視頻數(shù)據(jù)時(shí),會(huì)引入類似于語(yǔ)言中的 token 的概念。也就是說(shuō),我們會(huì)把一段視頻離散化、分塊編碼成一組 token,這組 token 就是模型的輸入。對(duì)于 token 的壓縮方式,目前主流的做法是:把視頻看作是時(shí)間維度上一系列圖像的集合;然后在圖像層面進(jìn)行空間壓縮;舉個(gè)例子,比如原始圖像是 1080P( 即 1920×1080 ),我們將其壓縮到像 240P 左右( 即 320×240 )的分辨率;接下來(lái),一幀圖像就會(huì)被表示成若干個(gè) patch( 小塊 )組成的 token 序列。例如,使用 16×16 的 patch 作為最小單元,那么一張 240P 的圖像( 即 320×240 )就會(huì)被劃分成大約 20×15 = 300 個(gè) patch,也就是 300 個(gè) token 。
在時(shí)間維度上,比如我們?nèi)粘S^看的視頻通常是 30 FPS 或更高幀率,但在模型處理時(shí),我們也會(huì)對(duì)幀率進(jìn)行壓縮——比如只保留 4 FPS 或 6 FPS,這樣每秒鐘就只取 4 到 6 幀來(lái)建模,如果保留 4 幀,那 1 秒鐘視頻就是 4 × 300 = 1200 個(gè) token。所以,從整體來(lái)看:視頻的總 token 數(shù) ≈ 視頻時(shí)長(zhǎng)(秒) × 壓縮后幀率 × 每幀壓縮后 token 數(shù)。
計(jì)算視頻 token 數(shù)通常會(huì)得到一個(gè)非常大的數(shù)字,這直接導(dǎo)致:視頻任務(wù)在訓(xùn)練階段所要處理的 token 數(shù),是目前所有模態(tài)中最多的。遠(yuǎn)遠(yuǎn)超過(guò)語(yǔ)言模型( 即使語(yǔ)言模型上下文已經(jīng)在擴(kuò)展到幾十萬(wàn) token ),也遠(yuǎn)超 Audio 模型,甚至比圖文多模態(tài)模型( 比如圖文 )處理的 token 總量還要大得多。
所以,一方面是需要對(duì)視頻本身做壓縮,另一方面就是在 infra 層面也需要針對(duì)視頻這種特性做特定優(yōu)化。比如在語(yǔ)言模型里,早期像 Kimi 那種強(qiáng)調(diào) long context 的嘗試,其實(shí)跟視頻這邊追求的 long context 是很相似的 —— 都是希望模型能處理更長(zhǎng)時(shí)間范圍、捕捉更大上下文的結(jié)構(gòu)關(guān)系。
但這兩者在實(shí)踐中其實(shí)還是有一些差異的:在語(yǔ)言模型這邊,不管是 long context 還是普通 context,整個(gè)訓(xùn)練流程通常會(huì)分成 pretraining 和 post-training 兩個(gè)階段;語(yǔ)言模型的 pretraining 階段幾乎不會(huì)使用 long context,哪怕模型最終是支持 long context 的;這是因?yàn)?pretraining 階段計(jì)算成本極高,語(yǔ)言模型的訓(xùn)練者通常會(huì)選擇性價(jià)比最高的 context 長(zhǎng)度( 比如 2K~4K )進(jìn)行訓(xùn)練;而真正的 long context 能力,往往是在 post-training 階段,或者在 pretraining 最末尾花極小一部分算力的方式實(shí)現(xiàn)。
但這一點(diǎn)在 video 上非常不一樣。在 video 任務(wù)中,其實(shí)從非常早期、甚至整個(gè) pretraining 階段開(kāi)始,就持續(xù)面對(duì)特別長(zhǎng)的上下文。這就使得:整個(gè) video 領(lǐng)域?qū)?long context 的優(yōu)化需求,從一開(kāi)始就是一個(gè)高優(yōu)先級(jí)、不可回避的問(wèn)題,其優(yōu)先級(jí)比語(yǔ)言模型高很多。
:MAGI-1 基于擴(kuò)散模型 DiT 構(gòu)建,并且是擴(kuò)散模型和自回歸模型的結(jié)合體,具體是如何結(jié)合的?
:整體訓(xùn)練方式的主體仍然是使用擴(kuò)散式的 loss,也就是說(shuō)優(yōu)化的是一個(gè)基于逐步去噪過(guò)程的目標(biāo)函數(shù);但在信息流通的建模方式上,采用的是完全自回歸的結(jié)構(gòu)。
也就是:未來(lái)幀可以訪問(wèn)歷史幀的信息,但歷史幀完全無(wú)法看到未來(lái)幀。從實(shí)現(xiàn)層面講,這種結(jié)合的核心就在于我們對(duì) Transformer 的 Attention 機(jī)制進(jìn)行了定制化改造:在 Attention 中引入了時(shí)間方向的因果掩碼( causal mask ),從而實(shí)現(xiàn)這種 “ 結(jié)構(gòu)上自回歸、優(yōu)化上擴(kuò)散 ” 的混合建??蚣?。
:論文中提到 “ MAGI-1 在每個(gè)塊內(nèi)采用 full attention 機(jī)制,并在塊間采用 causal attention 機(jī)制 ”,如此設(shè)置的考慮是什么?
:這個(gè)設(shè)計(jì)背后主要有幾個(gè)方面的出發(fā)點(diǎn):第一點(diǎn):提高算力利用率。我們?cè)谧畛踉O(shè)計(jì)這套機(jī)制的時(shí)候,一個(gè)重要的目標(biāo)是提升整體的算力效率;正如前面提到的,語(yǔ)言模型在嘗試將自回歸和擴(kuò)散結(jié)合時(shí),也有一部分原因是因?yàn)榧兇獾淖曰貧w結(jié)構(gòu)在算力利用率上的表現(xiàn)不佳;MAGI-1 這邊也出于同樣的考量,希望找到一種性能與建模能力的平衡方式。
第二點(diǎn)考慮是:對(duì)于塊內(nèi),可以把它理解為一個(gè)非常短的視頻片段,比如可能是一秒鐘甚至更短的長(zhǎng)度。在這樣的時(shí)間尺度內(nèi),采用雙向的 diffusion(full attention)機(jī)制來(lái)刻畫(huà)內(nèi)容,其實(shí)在現(xiàn)階段的技術(shù)條件下效率更高、建模效果更成熟。
然后也有考慮到自回歸模型的的特性。所以我們會(huì)選擇采用相對(duì)較短的塊,比如說(shuō)一秒左右的長(zhǎng)度。在這樣一個(gè)非常短的時(shí)間范圍內(nèi),其內(nèi)容本質(zhì)上就像一個(gè)小視頻片段。在這種尺度下,是否建模因果關(guān)系其實(shí)影響不大。但當(dāng)我們處理的是更長(zhǎng)的視頻序列時(shí),時(shí)間維度上的結(jié)構(gòu)性就變得更重要了。
:這是不是也要求,在短時(shí)長(zhǎng)(比如一秒)的視頻內(nèi)容里,它的動(dòng)態(tài)變化相對(duì)來(lái)說(shuō)是比較小的?
:我們從數(shù)據(jù)設(shè)計(jì)的角度來(lái)說(shuō),并不會(huì)刻意去控制動(dòng)態(tài)變化的大小,不會(huì)明確地篩掉高動(dòng)態(tài)片段。但從實(shí)踐觀察上來(lái)看,確實(shí)是這樣。如果是劇烈碰撞、快速爆炸、瞬時(shí)運(yùn)動(dòng)切換這類內(nèi)容,在短時(shí)片段中出現(xiàn)高速大幅度變化,就會(huì)對(duì)模型造成壓力,容易出錯(cuò)。
:為什么 MAGI-1 中給視頻幀序列添加的噪聲,是隨時(shí)間( 或視頻幀序列 )單調(diào)遞增的?
:這個(gè)設(shè)計(jì)背后主要有兩個(gè)方面的考量:第一個(gè)是出于自回歸建模本身的邏輯:在自回歸的語(yǔ)義下,我們的目標(biāo)是根據(jù)過(guò)去較為清晰的內(nèi)容,去預(yù)測(cè)未來(lái)還未發(fā)生的內(nèi)容;所以模型在生成時(shí),必須滿足一個(gè)自然的方向性假設(shè):“ 歷史是確定的、清晰的,未來(lái)是未知的、模糊的 ”;因此在設(shè)計(jì)上,我們就需要讓時(shí)間靠前的幀相對(duì)更 “ 干凈 ”,而時(shí)間越往后噪聲越強(qiáng),從而模擬 “ 預(yù)測(cè)的不確定性逐漸增加 ” 這一過(guò)程。
但嚴(yán)格來(lái)說(shuō),標(biāo)準(zhǔn)的自回歸模型并不像 MAGI-1 這樣,中間不會(huì)存在一個(gè) “ 模糊→清晰 ” 的過(guò)渡狀態(tài)。而 MAGI-1 的設(shè)計(jì)之所以采用 “ 噪聲隨時(shí)間單調(diào)遞增 ” 的結(jié)構(gòu),其實(shí)是出于兩個(gè)非常實(shí)際的考慮:第一,訓(xùn)練效率更高;第二,推理時(shí)可以實(shí)現(xiàn)并行化和流式生成( Streaming generation )。
如果完全按標(biāo)準(zhǔn)自回歸方式,你只能等前一秒視頻完全生成完成( 干凈 )后,才能生成下一秒,這就形成了嚴(yán)格的順序依賴,不利于推理效率;而 MAGI-1 當(dāng)前的設(shè)計(jì)是允許你在上一秒視頻 “ 剛剛變得稍微清晰 ” 時(shí),就可以去預(yù)測(cè)下一秒的視頻;這使得我們可以在一定程度上實(shí)現(xiàn)推理過(guò)程的重疊與并行,極大地提升了流式生成( streaming )或長(zhǎng)視頻續(xù)寫(xiě)場(chǎng)景下的效率。
我們當(dāng)時(shí)希望解決的目標(biāo)是:生成無(wú)限時(shí)長(zhǎng)的視頻;并且在中間不需要停頓或等待,讓用戶可以邊看邊生成,體驗(yàn)上是流暢連續(xù)的,所以我們就設(shè)計(jì)了這樣一個(gè)策略。
更重要的是,我們?cè)谠缙趯?shí)驗(yàn)中發(fā)現(xiàn),這種策略對(duì)生成質(zhì)量的影響非常小,不會(huì)引起明顯的畫(huà)面崩潰或邏輯斷裂,同時(shí)又很好地滿足了我們對(duì)系統(tǒng)低延遲、流式輸出、多階段生成能力等方面的特性訴求。所以它最終成為 MAGI-1 系統(tǒng)中實(shí)現(xiàn)高效 streaming video generation 的關(guān)鍵設(shè)計(jì)之一。
此外,MAGI-1 采用多階段訓(xùn)練也是基于效率的考慮。因?yàn)橐曨l任務(wù)本身存在一個(gè)顯著的挑戰(zhàn) —— token 數(shù)量特別多。這就意味著如果我們一開(kāi)始就在長(zhǎng)時(shí)長(zhǎng)、高分辨率的視頻上進(jìn)行訓(xùn)練,計(jì)算復(fù)雜度會(huì)非常高、資源消耗極大,訓(xùn)練效率也會(huì)非常低。所以,為了有效控制訓(xùn)練復(fù)雜度,我們采用了一種逐步上升式的多階段訓(xùn)練策略:第一階段:先在 靜態(tài)圖像上進(jìn)行訓(xùn)練。 第二階段:訓(xùn)練低分辨率、短時(shí)長(zhǎng)的視頻。 第三階段及之后:逐步提升訓(xùn)練樣本的視頻分辨率和時(shí)長(zhǎng)。
高質(zhì)量、視覺(jué)表現(xiàn)優(yōu)秀的視頻和圖片的數(shù)量,其實(shí)非常有限,不像低質(zhì)量或中等質(zhì)量數(shù)據(jù)那么豐富。所以我們采取的策略是:在訓(xùn)練的早期階段,主要使用概念豐富但畫(huà)質(zhì)相對(duì)一般的視頻和圖片,幫助模型盡早建立起對(duì)內(nèi)容多樣性的認(rèn)知;而那些視覺(jué)質(zhì)量極高、精度要求更強(qiáng)的數(shù)據(jù),則被保留到訓(xùn)練的中后期再加入,讓模型在已經(jīng)掌握結(jié)構(gòu)和內(nèi)容的基礎(chǔ)上進(jìn)一步學(xué)習(xí)細(xì)節(jié)與精度。
:質(zhì)量和效率之間的平衡點(diǎn)是什么?
:質(zhì)量和效率之間的平衡點(diǎn),核心就在于塊與塊之間 “ 清晰程度 ” 的 gap。
可以這樣理解:如果這個(gè) gap 太小,也就是說(shuō)當(dāng)前生成塊和前一個(gè)參考?jí)K的噪聲程度幾乎一樣,那么模型在生成時(shí)就無(wú)法從歷史中提取有效的指導(dǎo)信息;因?yàn)榇藭r(shí)“ 歷史幀 ” 本身也還處在一個(gè)比較模糊的狀態(tài),等于模型是在 “ 看著模糊的歷史去預(yù)測(cè)模糊的未來(lái) ”,最終就會(huì)導(dǎo)致生成質(zhì)量顯著下降。
另一個(gè)極端就是:如果我們選擇將一個(gè)片段完全去噪干凈后再開(kāi)始生成下一段視頻,那么模型就必須等待上一段全部完成后才能啟動(dòng)下一段的生成。這種情況下:無(wú)法實(shí)現(xiàn)多 chunk 的并行推理,必須串行執(zhí)行;所以它的效率會(huì)明顯下降;但與此同時(shí),由于每一段的歷史信息都是干凈完整的,因此從原理上講,它所帶來(lái)的生成質(zhì)量是最好的。
:論文中提到“ 觀察到 MAGI-1 能夠在 t = 0.3 時(shí)生成相當(dāng)清晰的視頻輸出 ”,對(duì)于這個(gè)經(jīng)驗(yàn)背后的理解是什么?
:在 MAGI-1 的論文里,t=0 對(duì)應(yīng)純粹的噪聲,t=1 對(duì)應(yīng)完全清晰的視頻。隨著 t 的增加,噪聲也在逐漸減小,對(duì)應(yīng)視頻去噪生成的過(guò)程。 t = 0.3 在物理上代表的是包含清晰視頻 30% 的像素內(nèi)容( 其余為噪聲 )。
人的視覺(jué)系統(tǒng)對(duì)細(xì)節(jié)的感知是非線性的;在 t=0.3 時(shí),雖然局部紋理已經(jīng)受損,但宏觀信息仍然保留得比較好;比如:人物的位置、輪廓、動(dòng)作方向仍然清晰可辨,只是像面部皺紋、毛發(fā)邊緣、衣服褶皺這類細(xì)節(jié)會(huì)顯得模糊或消失。
也就是說(shuō),t<0.3 的時(shí)候模型主要在生成宏觀的結(jié)構(gòu)信息,t>0.3 的時(shí)候則在生成細(xì)節(jié)的紋理信息。
模型能夠在 t = 0.3 時(shí)生成相當(dāng)清晰的視頻輸出。
圖源:MAGI-1: Autoregressive Video Generation at Scale
這和人類視覺(jué)系統(tǒng)的特點(diǎn)一致:人眼對(duì)高頻細(xì)節(jié)( 如紋理、微小噪點(diǎn) )相對(duì)不敏感,但對(duì)低頻結(jié)構(gòu)( 如形狀、邊界、運(yùn)動(dòng)趨勢(shì) )高度敏感。
基于此觀察,我們啟發(fā)式地將大約 70% 的訓(xùn)練計(jì)算預(yù)算分配給 t < 0.3 的區(qū)域。
:您提到希望模型能生成無(wú)限時(shí)長(zhǎng)的視頻,并且論文中提到“ 只要 MAGI-1 的視頻生成只關(guān)聯(lián)有限的 KV( Key-Value ),其生成長(zhǎng)度就是無(wú)限的 ”,如何理解這一點(diǎn)?
:我們目前的處理方式是:在推理過(guò)程中,模型只關(guān)注時(shí)序上最近的 10 秒或 20 秒內(nèi)的 KV 信息,這使得 MAGI-1 具有恒定的峰值推理成本。
“ 恒定的峰值推理成本 ” 是對(duì)于生成固定大小的下一個(gè)視頻塊而言,每次都需要付出相同的算力代價(jià),所以生成完整視頻的成本隨著視頻延長(zhǎng)而線性增長(zhǎng),理論上是可以實(shí)現(xiàn)無(wú)限生成的。
但這里也稍作補(bǔ)充說(shuō)明:在實(shí)踐中,由于仍然存在誤差累積的問(wèn)題,當(dāng)你生成視頻長(zhǎng)度特別長(zhǎng)的時(shí)候,仍可能出現(xiàn)一些不連續(xù)或偏差的現(xiàn)象。比如我們?cè)谏梢粋€(gè) 30 秒鐘視頻時(shí),如果 “ 抽卡 ” 運(yùn)氣不好,可能在最后一幀中會(huì)看到相比第一幀圖像的畫(huà)質(zhì)下降、顏色漂移等現(xiàn)象。
:MAGI-1 支持為每一個(gè)視頻塊提供不同文本條件,來(lái)實(shí)現(xiàn)逐塊的文本控制,這是不是自回歸模型才能實(shí)現(xiàn)的優(yōu)勢(shì)?
:可以從兩個(gè)角度來(lái)理解:應(yīng)用視角和技術(shù)視角。
從應(yīng)用視角:為什么逐塊文本控制是剛需、但雙向擴(kuò)散模型難以用好?假設(shè)你腦子里已經(jīng)完全構(gòu)思好了一個(gè)復(fù)雜動(dòng)作的分鏡拆解,比如一個(gè) 200 字的長(zhǎng)句子,精準(zhǔn)地把每一秒鐘的動(dòng)作用文字對(duì)上。理論上,你是可以把這些 caption 全部輸入到一個(gè) 雙向擴(kuò)散模型中,然后讓它一次性生成一個(gè) 20 分鐘的長(zhǎng)視頻,第一分鐘對(duì)應(yīng)第一段 caption,第二分鐘對(duì)應(yīng)第二段 caption,依此類推。從表達(dá)能力角度來(lái)說(shuō),雙向擴(kuò)散模型不是做不到,但在實(shí)際應(yīng)用中極難做到。
原因是:無(wú)論是自回歸模型還是雙向擴(kuò)散模型,當(dāng)你給一個(gè)長(zhǎng) caption,它都無(wú)法保證你所描述的內(nèi)容一定會(huì)在預(yù)期的時(shí)間段內(nèi)、完整且正確地出現(xiàn);換句話說(shuō),如果你在第一段 caption 中描述了一個(gè) 5 秒鐘應(yīng)該完成的動(dòng)作,模型可能會(huì)拖延到第七秒才完成,甚至提前在第三秒做完。
從技術(shù)視角:我們現(xiàn)在的模型,無(wú)論自回歸還是雙向擴(kuò)散,從技術(shù)角度講其實(shí)還遠(yuǎn)遠(yuǎn)沒(méi)法做到“零抽卡”一遍過(guò)的生成體驗(yàn)。尤其是當(dāng)你提供的某一段 caption 特別復(fù)雜、長(zhǎng)、結(jié)構(gòu)密集的時(shí)候,模型很有可能:第一次生成出來(lái)的內(nèi)容沒(méi)有覆蓋全信息;或者覆蓋了,但畫(huà)面實(shí)現(xiàn)得不夠符合你的預(yù)期;于是你就需要不斷抽卡 → 看效果 → 再抽卡 → 再修改 prompt,直到達(dá)成目標(biāo)。在這種情況下,如果你是一次性讓模型生成 20 秒、30 秒甚至更長(zhǎng)的視頻,那每次失敗的成本就非常高。
所以這就引出了一個(gè)更具實(shí)用性的策略:把復(fù)雜的 caption 拆成更短的片段,逐塊生成;每一塊都可以調(diào)試、替換、修正;整體質(zhì)量可控性就會(huì)大大提升,且不容易出現(xiàn)局部崩壞帶動(dòng)全局崩壞的問(wèn)題。而這種分塊生成 + 多輪調(diào)試的生成方式,在結(jié)構(gòu)上是只有自回歸模型才能支持得好的。
再深入到訓(xùn)練層面,目前這方面最大的一個(gè)限制在于:整個(gè)行業(yè)普遍采用的訓(xùn)練范式,還是以相對(duì)短、簡(jiǎn)單的視頻片段為主;尤其是雙向擴(kuò)散模型,因?yàn)槭芟抻诟鞣N復(fù)雜度,大多數(shù)訓(xùn)練數(shù)據(jù)都是幾秒鐘內(nèi)的完整視頻或片段;這就帶來(lái)一個(gè)直接的問(wèn)題:模型在訓(xùn)練過(guò)程中很少見(jiàn)到 “ 文本條件發(fā)生大幅變化 ” 的情形;所以一旦在測(cè)試或?qū)嶋H生成中遇到這類跨語(yǔ)義、跨動(dòng)作的多段式描述,模型很難處理得自然、準(zhǔn)確,因?yàn)樗谟?xùn)練中就沒(méi)見(jiàn)過(guò)這種復(fù)雜度和跨度的文本-視頻對(duì)齊方式。
因此,我們可以說(shuō)目前雙向擴(kuò)散模型的訓(xùn)練框架天然就不利于支持 “ 文本條件逐段變化 ” 的任務(wù),而自回歸結(jié)構(gòu)由于是分階段推進(jìn)、邊生成邊處理,其訓(xùn)練方式也可以更自然地暴露在復(fù)雜語(yǔ)義切換、節(jié)奏控制的真實(shí)任務(wù)分布下。
:論文中提到了很多通過(guò)調(diào)整關(guān)聯(lián)強(qiáng)度來(lái)優(yōu)化視頻生成質(zhì)量或特性的方法或經(jīng)驗(yàn),比如調(diào)整視頻幀關(guān)聯(lián)或語(yǔ)義關(guān)聯(lián)的強(qiáng)度,以保持身份一致性或場(chǎng)景一致性,您對(duì)這些方法或經(jīng)驗(yàn)背后的理解是什么?
:這個(gè)部分是MAGI-1挺關(guān)鍵的創(chuàng)新點(diǎn)。
傳統(tǒng)的語(yǔ)言模型都使用自回歸的方式去做,但其實(shí)學(xué)界都還沒(méi)有形成一個(gè)統(tǒng)一的認(rèn)識(shí),即為什么在語(yǔ)言模型里不需要使用關(guān)聯(lián)強(qiáng)度的技巧,就能夠達(dá)到很好的生成效果。但在圖像或視頻里,哪怕是像 VideoPoet 這種純粹用自回歸生成的方法,也是需要有關(guān)聯(lián)強(qiáng)度這一項(xiàng)的。
盡管此前學(xué)界已有一些方法,例如直接借用類似 Sora 這種雙向 attension 結(jié)構(gòu)中的公式來(lái)進(jìn)行處理,但我們認(rèn)為自己的一個(gè)重要貢獻(xiàn)在于:我們是在自回歸加擴(kuò)散模型這條技術(shù)路徑上,從概率論的視角,理論上推導(dǎo)出了一套用于調(diào)整關(guān)聯(lián)強(qiáng)度的公式。這套公式完全基于概率推理,因此具有明確的理論保障。
有了這一全新的公式,我們?cè)诖嘶A(chǔ)上進(jìn)行了進(jìn)一步研究,其中比較有意思的研究點(diǎn)有兩個(gè)部分。第一部分,關(guān)于視頻生成本身。在自回歸與擴(kuò)散模型結(jié)合的方法中,大家普遍會(huì)遇到一個(gè)問(wèn)題:幀與幀之間,或更廣義上的 chunk 與 chunk 之間,生成內(nèi)容會(huì)存在一定程度的不連續(xù)性。過(guò)去對(duì)此的處理方法,很多是非本質(zhì)的手段,我們?cè)缙谝矅L試過(guò)類似的做法。但依靠我們從理論上推導(dǎo)出的關(guān)聯(lián)強(qiáng)度調(diào)整公式,可以從數(shù)學(xué)上顯式地調(diào)整以下兩個(gè)方向之間的權(quán)重關(guān)系:一方面是新生成視頻與過(guò)去時(shí)序之間的連續(xù)性;另一方面是對(duì)新的文本指令的響應(yīng)程度。通過(guò)這個(gè)機(jī)制,我們可以明確調(diào)控生成內(nèi)容在 “ 保持連續(xù)性 ” 與 “ 遵循新文本指令 ” 之間的權(quán)衡。
有了這套公式,就會(huì)發(fā)現(xiàn):我們不再需要那些非常 tricky 的技巧,也能實(shí)現(xiàn)很好的視頻連續(xù)性效果。這個(gè) “ 調(diào)整關(guān)聯(lián)強(qiáng)度 ” 的操作,在學(xué)術(shù)術(shù)語(yǔ)中屬于 classifier-free guidance( CFG )。我們注意到:至少在視頻生成模型中,誤差累積現(xiàn)象與 CFG 存在非常強(qiáng)的相關(guān)性。在我們的論文中對(duì)此部分也做了專門(mén)闡述。我們的觀點(diǎn)是:如果未來(lái)希望進(jìn)一步解決視頻生成中的誤差累積問(wèn)題,那么研究如何將這個(gè) CFG 機(jī)制納入模型訓(xùn)練過(guò)程,可能是一個(gè)關(guān)鍵的探索方向。
第二部分,關(guān)于與語(yǔ)言模型的比較。對(duì)于語(yǔ)言模型為何不需要關(guān)聯(lián)強(qiáng)度,坦率來(lái)說(shuō),目前沒(méi)有看到學(xué)界或其他人對(duì)這個(gè)問(wèn)題有特別好的回答,我也沒(méi)有答案,但有一些猜想。我傾向的一個(gè)解釋是:這本質(zhì)上可能是因?yàn)橐曨l或圖像數(shù)據(jù)中存在較強(qiáng)的 “ 空間冗余性 ”。所謂空間冗余性,是指:以圖像為例,圖像中空間上相鄰的像素,或者說(shuō)視覺(jué)內(nèi)容,通常具有一定程度的相似性;在視頻中則表現(xiàn)為,相鄰時(shí)間點(diǎn)的兩幀畫(huà)面之間,通常內(nèi)容變化不會(huì)太大,特別是時(shí)間上非常鄰近的幀。而這種數(shù)據(jù)在局部上的相似性,在建模過(guò)程中,容易導(dǎo)致模型 “ 偷懶 ”。這里所謂的 “ 偷懶 ” 是指:模型在學(xué)習(xí)時(shí),傾向于對(duì)鄰近區(qū)域或前一幀內(nèi)容進(jìn)行簡(jiǎn)單的復(fù)制( copy )操作;這樣就可以生成一個(gè)看上去還不錯(cuò)的結(jié)果,而無(wú)需真正理解或建模更復(fù)雜的變化關(guān)系。
從訓(xùn)練的角度來(lái)看,這種簡(jiǎn)單的 copy 操作雖然在訓(xùn)練階段看起來(lái)有效,但它帶來(lái)了訓(xùn)練與測(cè)試階段之間的不一致問(wèn)題。具體來(lái)說(shuō),到了測(cè)試階段,模型從 0 開(kāi)始生成,并沒(méi)有真實(shí)的前一幀可供復(fù)制;此時(shí)如果模型在訓(xùn)練中依賴了 “ copy 策略 ”,測(cè)試時(shí)就會(huì)無(wú)法維持結(jié)構(gòu)邏輯與連續(xù)性,導(dǎo)致生成結(jié)果亂七八糟。因此,在視頻或圖像生成中,我們需要引入像 CFG 這樣的技巧,其本質(zhì)目的是為了:克服訓(xùn)練與測(cè)試之間的不一致問(wèn)題;盡可能抑制模型對(duì)簡(jiǎn)單復(fù)制策略的依賴,引導(dǎo)它學(xué)習(xí)更具泛化能力的生成方式。像這種 copy 操作,在生成過(guò)程中很可能會(huì)導(dǎo)致語(yǔ)義或物理層面上的偏差。
相比之下,在語(yǔ)言建模任務(wù)中,情況有所不同。相鄰的兩個(gè) token 通常是兩個(gè)詞,或者至少是兩個(gè)字符;這使得語(yǔ)言序列中很難出現(xiàn)直接重復(fù)的情況;同時(shí),不同語(yǔ)言中的每個(gè) token 通常都表達(dá)了非常明確的語(yǔ)義概念。因此,在語(yǔ)言建模的訓(xùn)練過(guò)程中,模型不太容易出現(xiàn)圖像或視頻任務(wù)中那種 “ 偷懶 ” 行為。但需要說(shuō)明的是,這仍然是一個(gè)猜想。我們還沒(méi)有特別明確的實(shí)驗(yàn)信號(hào)或理論依據(jù)來(lái)證實(shí)這個(gè)觀點(diǎn)。
:請(qǐng)概括MAGI-1訓(xùn)練和推理基礎(chǔ)設(shè)施的核心創(chuàng)新,以及其關(guān)鍵作用?
:先解釋一下,訓(xùn)練和推理的基礎(chǔ)架構(gòu)在宏觀層面上到底起到了什么作用。基礎(chǔ)架構(gòu)的核心其實(shí)就是:怎么更充分地利用 GPU 的算力。所有的優(yōu)化目標(biāo),其實(shí)最終也都是為了這個(gè)目的服務(wù)的。如果說(shuō)追求極致,那就是:GPU 提供多少算力,我們就能盡可能100% 利用起來(lái),不產(chǎn)生任何浪費(fèi)。在這個(gè)前提下,我們會(huì)針對(duì)訓(xùn)練和推理這兩個(gè)不同的使用場(chǎng)景,做出各自的、差異化的優(yōu)化。
訓(xùn)練最主要的創(chuàng)新集中在兩個(gè)方面:第一是 MagiAttention 的 attention 結(jié)構(gòu)的設(shè)計(jì),這是在模型層面的一個(gè)重要?jiǎng)?chuàng)新點(diǎn)。第二是在訓(xùn)練過(guò)程中采用了分布式訓(xùn)練。所謂分布式訓(xùn)練,就是我們會(huì)使用大量的 GPU 并行地去處理這個(gè)模型。而一旦進(jìn)入分布式訓(xùn)練的場(chǎng)景,所面對(duì)的系統(tǒng)復(fù)雜度就會(huì)遠(yuǎn)高于非分布式的訓(xùn)練方式。因此,訓(xùn)練的基礎(chǔ)架構(gòu)必須專門(mén)針對(duì)這種分布式訓(xùn)練的場(chǎng)景,做出單獨(dú)的優(yōu)化設(shè)計(jì)。
在推理這邊,最大的復(fù)雜性可以分成兩個(gè)場(chǎng)景來(lái)看:第一個(gè)場(chǎng)景是,我們的模型有一個(gè)很關(guān)鍵的功能,就是要支持實(shí)時(shí)的 streaming 推理。 這個(gè)部分必須要做非常高強(qiáng)度的優(yōu)化,才能在盡可能少的算力消耗下實(shí)現(xiàn)流式生成。第二個(gè)場(chǎng)景是,我們目前開(kāi)源的 MagiAttention 有兩個(gè)版本,一個(gè)是 4.5B 的版本,另一個(gè)是 24B 的版本。 其中 24B 版本的模型體積比較大,而我們又希望它能運(yùn)行在一些相對(duì)便宜的硬件上,比如 RTX4090 。所以我們就需要針對(duì)這些中低成本硬件環(huán)境,做出很多非常具體、定制化的優(yōu)化。
原理篇
:為什么需要特別設(shè)計(jì) MagiAttention 的 Attention 結(jié)構(gòu)?
:MAGI-1 結(jié)合了 diffusion model 和 autoregressive( AR )模型,這本身就導(dǎo)致注意力的結(jié)構(gòu)具有高度異構(gòu)性:在塊內(nèi)( intra-block ):使用的是類似 Sora 中的雙向注意力結(jié)構(gòu),允許在當(dāng)前局部范圍內(nèi)雙向建模;在塊間( inter-block ):采用類似語(yǔ)言模型中的因果注意力( causal attention ),只關(guān)注歷史信息。這種混合結(jié)構(gòu)要求注意力機(jī)制能夠靈活地適應(yīng)不同方向、粒度和上下文范圍的變化。
輸入視頻本身具有高度非統(tǒng)一性。在訓(xùn)練過(guò)程中,輸入視頻存在顯著的分布異質(zhì)性,這進(jìn)一步加劇了注意力結(jié)構(gòu)的復(fù)雜性??臻g維度變化:不同視頻可能有不同的分辨率( 如 16:9、4:3 );時(shí)間維度變化:視頻的長(zhǎng)度差異很大,有的僅 2–3 秒,有的長(zhǎng)達(dá)十幾秒。為了提升訓(xùn)練效率,我們希望在訓(xùn)練中將多個(gè)視頻拼接在一起處理,但這也意味著:注意力編碼機(jī)制必須能夠在同一批次中處理空間維度、時(shí)間維度都不同的視頻片段,形成復(fù)雜形狀張量下的靈活attention結(jié)構(gòu)。
工程實(shí)現(xiàn)上的挑戰(zhàn)與需求。由于上述兩方面的復(fù)雜性,目前在開(kāi)源社區(qū)中:尚不存在一個(gè)開(kāi)源 attention 實(shí)現(xiàn),能夠同時(shí)支持這種復(fù)雜的形狀適配、高效運(yùn)行和靈活配置;如果繼續(xù)沿用標(biāo)準(zhǔn)注意力算子,將導(dǎo)致顯著的訓(xùn)練效率下降。這就是為什么我們需要一套MagiAttention的實(shí)現(xiàn),首先它要足夠靈活,因?yàn)槲覀円幚淼那闆r特別多和復(fù)雜,其次要高效。使用高效版本的 MagiAttention,訓(xùn)練一個(gè)模型可能只需要 10 天;而如果依賴通用實(shí)現(xiàn),可能需要一個(gè)月甚至兩個(gè)月才能完成同樣的訓(xùn)練。
:MagiAttention 和分布式訓(xùn)練、視頻模型的適配性體現(xiàn)在哪里?
:視頻模型的分布式訓(xùn)練,或者說(shuō)所有的分布式訓(xùn)練,最大的挑戰(zhàn)通常來(lái)自兩個(gè)方面:第一方面是通信問(wèn)題。因?yàn)榉植际接?xùn)練意味著會(huì)有很多臺(tái)不同的機(jī)器一起參與運(yùn)算,它們之間不僅要各自計(jì)算,還需要頻繁通信與協(xié)調(diào)。
打個(gè)比方來(lái)說(shuō):如果只有一個(gè)人在干活,那就是非分布式訓(xùn)練;而分布式訓(xùn)練就像是有 1,000 個(gè)人一起完成一件工作,每個(gè)人負(fù)責(zé)其中的一小部分;這個(gè)時(shí)候就需要大家互相溝通、協(xié)作,技術(shù)上對(duì)應(yīng)的就是不同 GPU 或機(jī)器之間需要通信。
第二方面是速度一致性問(wèn)題。當(dāng)這 1,000 臺(tái)機(jī)器共同處理一個(gè)任務(wù)時(shí),最終的處理時(shí)間取決于最慢的那一臺(tái)機(jī)器。 如果說(shuō)在任務(wù)分配中,有一個(gè)人被分配了過(guò)多的任務(wù),那么在實(shí)際執(zhí)行過(guò)程中就會(huì)出現(xiàn)這樣的情況:其他所有人都在等待,只有那一個(gè)人還在干活。這個(gè)在技術(shù)層面上就會(huì)造成計(jì)算資源的浪費(fèi),因?yàn)榇蟛糠謾C(jī)器都在空轉(zhuǎn),整體效率就被拖慢了。所以最理想的情況是:所有機(jī)器被分配到的任務(wù)復(fù)雜度差不多;大家能夠在接近同一時(shí)刻完成自己的部分;這樣就不會(huì)出現(xiàn)有機(jī)器空閑、整體效率被拉低的情況。
所以,這兩個(gè)問(wèn)題——分布式訓(xùn)練中的通信和協(xié)作復(fù)雜性;任務(wù)負(fù)載不均導(dǎo)致的性能瓶頸;可以說(shuō)是我們?cè)谧龇植际接?xùn)練時(shí)遇到的兩個(gè)最大困難。而 MagiAttention 的設(shè)計(jì),就是為了應(yīng)對(duì)這兩個(gè)困難的。
視頻模型,尤其像 MAGI-1 這樣的視頻模型,它的 Attention 結(jié)構(gòu)非常復(fù)雜。正是因?yàn)檫@種復(fù)雜性,當(dāng)我們?cè)谶M(jìn)行分布式訓(xùn)練、給不同機(jī)器分配任務(wù)時(shí),如果不進(jìn)行特殊處理,就很容易出現(xiàn)任務(wù)分配不均的情況 —— 有的機(jī)器任務(wù)重,有的機(jī)器任務(wù)輕。
為了解決這個(gè)問(wèn)題,MagiAttention 做了一些專門(mén)的優(yōu)化和創(chuàng)新:第一,任務(wù)負(fù)載均衡。我們會(huì)在任務(wù)分配前,提前計(jì)算或估計(jì)每臺(tái)機(jī)器應(yīng)該承擔(dān)多少任務(wù)量, 然后盡可能確保所有機(jī)器被分配到的工作量大致一致,這樣就不會(huì)出現(xiàn)個(gè)別機(jī)器拖慢整體進(jìn)度的情況。第二,通信優(yōu)化。在通信這塊,MagiAttention 的目標(biāo)是:讓通信量盡可能減少。 因?yàn)槿绻ㄐ盘l繁,機(jī)器間花在通信上的時(shí)間可能比花在實(shí)際計(jì)算上的時(shí)間還多,這就非常低效了。所以我們本質(zhì)上是希望:通信時(shí)間更少,計(jì)算效率更高。
關(guān)于 “ MagiAttention 和視頻模型本身的適配性 ”,其實(shí)就是指希望能把不同時(shí)間、不同分辨率、不同比例的視頻片段放在一起訓(xùn)練。
首先,MagiAttention 是一個(gè)比較基礎(chǔ)的架構(gòu)。從技術(shù)角度上講,它并不是和視頻模型強(qiáng)綁定的,它也可以應(yīng)用在其他領(lǐng)域,比如語(yǔ)言模型等。但區(qū)別在于: 在語(yǔ)言模型中,attention 的復(fù)雜度通常沒(méi)那么高,大家只需要應(yīng)對(duì)一些結(jié)構(gòu)上相對(duì)簡(jiǎn)單的特例,解決一兩個(gè)典型結(jié)構(gòu)就夠用了。 而在像 MAGI-1 這樣的視頻模型中,attention 的結(jié)構(gòu)和計(jì)算模式都非常復(fù)雜,不能靠處理幾個(gè)特例就能應(yīng)對(duì)。因此可以說(shuō),是視頻生成任務(wù),特別是 MAGI-1 這樣的復(fù)雜視頻模型,倒逼我們必須去開(kāi)發(fā)出一個(gè)既高效又靈活的在線 attention 機(jī)制。也正因?yàn)檫@個(gè)需求,才催生了 MagiAttention 這樣的系統(tǒng)。
:MagiAttention 的主要組成包括 FFA( Flex-Flash-Attention )、調(diào)度求解器、Group-Cast 和 Group-Reduce 原語(yǔ)、自適應(yīng)多階段重疊策略等。其中,F(xiàn)FA是一種高效的注意力機(jī)制,調(diào)度求解器確保計(jì)算負(fù)載均衡,Group-Cast 和 Group-Reduce 原語(yǔ)消除了冗余通信,自適應(yīng)多階段重疊策略有效隱藏了通信延遲,請(qǐng)分別解釋每個(gè)組成的原理?
:關(guān)于 FFA( Flex Flash Attention ),它的核心思路是:通過(guò)將整個(gè) attention 的掩碼( mask )切分成多個(gè)計(jì)算單元的組合來(lái)進(jìn)行處理。這些掩碼可以看作是 full mask 和 causal mask 的組合。
Full mask 和 casual mask 圖示。
圖源:MAGI-1: Autoregressive Video Generation at Scale
MagiAttention 其實(shí)還在持續(xù)探索如何去支持一些更新穎的基礎(chǔ)計(jì)算單元。 但在第一個(gè)版本中,優(yōu)先支持的是 full mask 和 causal mask。主要是因?yàn)槟壳拔覀円阎膸讉€(gè)主流領(lǐng)域,包括視頻領(lǐng)域在內(nèi),大部分復(fù)雜的 attention mask 形式本質(zhì)上都是圍繞 “ 雙向( full )” 和 “ 因果( causal )” 之間做 trade-off;因此這些復(fù)雜的 attention mask 幾乎都可以被表達(dá)為 full mask 和 causal mask 的組合。所以這兩個(gè)類型就成了構(gòu)建更復(fù)雜結(jié)構(gòu)的 “ 積木 ”,我們先支持它們,就可以覆蓋絕大多數(shù)實(shí)際需求。
如果我們把視角放得更長(zhǎng)遠(yuǎn)一些,會(huì)發(fā)現(xiàn)還有一些其他領(lǐng)域在使用更特殊的 mask 形式。比如一個(gè)比較典型的例子是:所謂的 sliding window attention( SWA ) 機(jī)制。這一類結(jié)構(gòu)現(xiàn)在也逐漸被使用到一些任務(wù)中,我們也已經(jīng)在著手支持這類機(jī)制的計(jì)算與擴(kuò)展,目前正在開(kāi)發(fā)當(dāng)中。
為什么 FFA( Flex Flash Attention )的設(shè)計(jì)特別適合分布式注意力計(jì)算?以及注意力掩碼( attention mask )在其中是怎么發(fā)揮作用的?
attention mask 的作用。所謂的 “ 注意力機(jī)制 ”,本質(zhì)上是:給定一組元素,比如 100 個(gè),我們希望能夠衡量這些元素之間的兩兩關(guān)系。也就是說(shuō),我們希望每一個(gè)元素都能 “ 看到 ” 其他元素,然后計(jì)算它們之間的相關(guān)性。這就是注意力要做的核心事情。而在這個(gè)兩兩關(guān)系的計(jì)算過(guò)程中,我們可以人為地加入一些 “ 約束 ”( constraint ),來(lái)控制哪些元素之間是可以交互、哪些是不可以的。比如:causal attention( 因果注意力 ) 就是一種帶有約束的機(jī)制,它規(guī)定:序列中較后位置的元素不能看到前面位置的內(nèi)容。在實(shí)際實(shí)現(xiàn)中,我們只需要把這類 “ 不允許看到的關(guān)系 ” 在注意力矩陣中通過(guò)掩碼( mask )屏蔽掉,就能實(shí)現(xiàn)我們想要的行為。所以說(shuō),attention mask 的作用,就是:在標(biāo)準(zhǔn)的注意力機(jī)制中,注入我們預(yù)定義的 “ 注意力模式 ” 或 “ 結(jié)構(gòu)特性 ”,比如因果性、滑動(dòng)窗口、分組關(guān)系等。
那在 FFA( Flex Flash Attention ) 中,我們是怎么實(shí)現(xiàn) attention mask 的靈活表達(dá)與分布式適配的呢?
我們發(fā)現(xiàn),過(guò)去很多關(guān)于 attention 的設(shè)計(jì)其實(shí)都太復(fù)雜了。 而在 FFA 中,我們引入了兩個(gè)非常關(guān)鍵但又簡(jiǎn)單的接口,叫做:q_range( Query Range )、k_range( Key Range )。你只需要指定不同的 q_range 和 k_range,就可以構(gòu)建出非常靈活的 attention 掩碼結(jié)構(gòu)。
這種設(shè)計(jì)的好處有兩個(gè):第一,靈活性好。由于所有的 attention 模式都可以通過(guò) q_range 和 k_range 來(lái)靈活組合定義, 這就使得 FFA 能夠覆蓋多種注意力結(jié)構(gòu)的需求,使用上也非常簡(jiǎn)單。第二,適合分布式計(jì)算。因?yàn)橛辛?q_range 的這個(gè)定義方式,我們就可以在進(jìn)行分布式部署時(shí):預(yù)先分析 q_range 的分布;根據(jù)它的分布情況,把注意力的計(jì)算任務(wù)更合理地切分到不同機(jī)器上;從而做到任務(wù)分布更均勻,減少資源空轉(zhuǎn),顯著降低分布式實(shí)現(xiàn)的復(fù)雜度。所以,為什么說(shuō) FFA 特別適合分布式注意力計(jì)算?本質(zhì)上是因?yàn)樗ㄟ^(guò)這套簡(jiǎn)單清晰的接口:提升了表達(dá)能力和使用靈活性;降低了并行計(jì)算中負(fù)載不均和調(diào)度復(fù)雜度的問(wèn)題。
如果我們只看一段視頻,通常只需要處理 full mask 或 causal mask 就夠了。但問(wèn)題在于,在實(shí)際訓(xùn)練中,我們經(jīng)常希望用很多機(jī)器來(lái)訓(xùn)練整個(gè)視頻模型。 為了盡可能發(fā)揮這些機(jī)器的效率,我們就不能每次只訓(xùn)練一小段視頻,而是會(huì)把一大批視頻片段組合起來(lái)一起訓(xùn)練。舉個(gè)例子,比如我們有一個(gè)視頻集合,里面包含了 1,000 段視頻。 這些視頻長(zhǎng)度不一、分辨率不一。我們?cè)谟?xùn)練的時(shí)候,會(huì)把這些視頻拼接成一個(gè) “ 巨大的長(zhǎng)視頻 ” 來(lái)進(jìn)行處理。
但與此同時(shí),有個(gè)關(guān)鍵點(diǎn):這些視頻片段之間其實(shí)是沒(méi)有任何語(yǔ)義關(guān)聯(lián)的,我們不希望它們之間產(chǎn)生 attention。也就是說(shuō),模型在做 attention 的時(shí)候,不應(yīng)該讓一個(gè)視頻片段“看到”另一個(gè)無(wú)關(guān)片段的內(nèi)容。 這個(gè)“相互不可見(jiàn)”的約束,就是通過(guò)構(gòu)造復(fù)雜的 attention mask 來(lái)實(shí)現(xiàn)的。所以,正是由于這種訓(xùn)練策略——多個(gè)視頻拼接成一個(gè)長(zhǎng)序列訓(xùn)練,但又需要彼此隔離,才導(dǎo)致我們需要使用更加復(fù)雜的、結(jié)構(gòu)化的 attention 掩碼。相比之下,在語(yǔ)言模型的訓(xùn)練里,大家過(guò)去更常見(jiàn)的做法是:直接把不同的句子拼接起來(lái),不管有沒(méi)有關(guān)聯(lián),統(tǒng)一當(dāng)成一篇長(zhǎng)文來(lái)訓(xùn)練。因此語(yǔ)言模型那邊的 attention 掩碼就相對(duì)簡(jiǎn)單很多。
復(fù)雜、不規(guī)則的mask圖示。
圖源:MAGI-1: Autoregressive Video Generation at Scale
將不同的視頻拼接在一起后,再通過(guò)上下文并行( CP,context-parallelism )分配給多張卡進(jìn)行并行計(jì)算。
直接的均勻分配會(huì)對(duì)應(yīng)不同的注意力掩碼結(jié)構(gòu),而由于注意力掩碼的不一致,就會(huì)導(dǎo)致計(jì)算負(fù)載出現(xiàn)不平衡。這就需要通過(guò)調(diào)度求解器達(dá)到計(jì)算負(fù)載均衡,解決方法簡(jiǎn)單理解是將上下文靈活切分,以為每張卡盡可能均勻分配注意力掩碼的面積。
在分布式訓(xùn)練中,一個(gè)非常重要的目標(biāo)是:讓所有機(jī)器處理的任務(wù)量盡可能一致。這樣才不會(huì)出現(xiàn)某一臺(tái)機(jī)器提前完成,而其他機(jī)器還在忙,導(dǎo)致資源空閑、效率浪費(fèi)的情況。
從技術(shù)角度來(lái)說(shuō),不同機(jī)器的任務(wù)量,主要取決于它所處理的注意力掩碼的形狀, 我們?cè)谡撐睦镆舶堰@個(gè)稱為注意力區(qū)域的 “ 面積 ”。
換句話說(shuō):如果一個(gè) attention mask 的非零區(qū)域( 未被遮擋的區(qū)域 )越大,那它所對(duì)應(yīng)的計(jì)算負(fù)載就越重;所以我們可以通過(guò)估計(jì) attention mask 中 “ 未被遮蓋區(qū)域的面積 ”,來(lái)判斷每臺(tái)機(jī)器的任務(wù)量大小。在 CP 設(shè)置中,我們會(huì)把一個(gè)很長(zhǎng)的序列拆分給多臺(tái)機(jī)器,每臺(tái)機(jī)器負(fù)責(zé)其中的一段。我們通過(guò)事先分析這些段所對(duì)應(yīng)的 attention mask,然后采用一些策略,盡量讓不同機(jī)器處理的掩碼面積相等, 從而使任務(wù)負(fù)載趨于平衡,進(jìn)一步提升訓(xùn)練效率。
計(jì)算負(fù)載均衡原理圖示
圖源:MAGI-1: Autoregressive Video Generation at Scale
Group-Cast 和 Group-Reduce 原語(yǔ)是為了實(shí)現(xiàn) “ 零冗余通信原語(yǔ) ”。從注意力掩碼的形狀就可以看出來(lái),查詢( Query )和 KV( Key-Value )之間不是一個(gè)密集的一一對(duì)應(yīng)關(guān)系,實(shí)際上是稀疏的。
因此可以基于 attention mask 的情況來(lái)計(jì)算:哪些 Query 和 KV 之間確實(shí)需要通信,哪些則不需要。
傳統(tǒng)的通信原語(yǔ),由于控制粒度較粗,在處理像 MagiAttention 這樣復(fù)雜 attention mask 的模型時(shí), 會(huì)出現(xiàn)不少不必要的通信開(kāi)銷(xiāo),也就是存在資源浪費(fèi)的情況。所以我們?cè)谶@里專門(mén)提出了一種更細(xì)粒度的通信原語(yǔ)機(jī)制, 就是為了根據(jù)實(shí)際需要來(lái)決定哪些通信該發(fā)生,哪些可以省略, 從而達(dá)到 “ 零冗余 ” 的目的,避免掉通信層面的浪費(fèi)。
關(guān)于自適應(yīng)多階段重疊,它的目的是讓前項(xiàng)和后項(xiàng)的計(jì)算與通信能夠進(jìn)行重疊。 在微觀層面上,計(jì)算和通信的重疊是怎么實(shí)現(xiàn)的呢?可以舉個(gè)例子來(lái)說(shuō)明。 在我們現(xiàn)在使用的計(jì)算框架中,不管是 GPU 還是 CPU,都可以理解為它們的內(nèi)部實(shí)際上存在兩個(gè)并行的時(shí)間線,或者說(shuō)兩條工作流(workflow)。這兩條工作流分別是:計(jì)算工作流(computation workflow)和通信工作流(communication workflow)。
我們可以分別給這兩個(gè)工作流分配任務(wù),而這兩條 “ 流水線 ” 可以并行執(zhí)行,互不阻塞。一個(gè)低效的調(diào)度方式是這樣的:先執(zhí)行一段計(jì)算;等計(jì)算完成后,再進(jìn)行通信;通信完成后,再進(jìn)行下一段計(jì)算;以此類推。這個(gè)流程的問(wèn)題在于:當(dāng)計(jì)算完成后,計(jì)算的流水線就空閑下來(lái);當(dāng)通信開(kāi)始后,通信完成前計(jì)算無(wú)法進(jìn)行;最終會(huì)出現(xiàn)大量時(shí)間被浪費(fèi)在兩條流水線互相等待、彼此空置上。
所謂的計(jì)算和通信的交疊,在微觀層面上,就是我們通過(guò)各種技巧——比如調(diào)整計(jì)算和通信的順序—— 來(lái)讓計(jì)算流水線和通信流水線盡可能都不停下來(lái)。我們會(huì)在做計(jì)算的同時(shí),想辦法提前啟動(dòng)一些通信操作, 通過(guò)這樣的方式,實(shí)現(xiàn)計(jì)算與通信的真正并行推進(jìn)。這樣做帶來(lái)的好處就是:計(jì)算效率和通信效率不會(huì)相互阻塞;不需要“通信等計(jì)算”或者“計(jì)算等通信”的情況發(fā)生;整個(gè)系統(tǒng)從全局來(lái)看,執(zhí)行效率明顯提升。
假設(shè)有兩個(gè)任務(wù),任務(wù) A 和任務(wù) B。每個(gè)任務(wù)都包含:先計(jì)算、再通信的流程;正常來(lái)說(shuō),A 的通信只能等 A 的計(jì)算做完才能開(kāi)始,所以無(wú)法內(nèi)部并行;但如果我們把 A 的計(jì)算階段與 B 的通信階段重疊起來(lái),再把 B 的計(jì)算階段和 A 的通信階段重疊起來(lái),這樣兩個(gè)任務(wù)之間就形成了 “ 交叉重疊 ”,A 的計(jì)算 → B 的通信,B 的計(jì)算 → A 的通信,從而實(shí)現(xiàn)并行利用資源的效果。此外,計(jì)算和通信依賴于不同的硬件單元,雖然計(jì)算和通信都發(fā)生在 GPU 內(nèi)部,但 GPU 內(nèi)部本身是一個(gè)高度異構(gòu)的系統(tǒng);它有一部分硬件專門(mén)負(fù)責(zé)數(shù)值計(jì)算;另一部分硬件則負(fù)責(zé)數(shù)據(jù)傳輸和通信;因此,在硬件層面也支持兩類工作流的并行推進(jìn)。
綜合運(yùn)用以上所有技術(shù),MagiAttention 在不同場(chǎng)景下均能實(shí)現(xiàn)線性可擴(kuò)展性,線性可擴(kuò)展性即相對(duì)于并行化程度的增加( 或機(jī)器數(shù)量增加 ),計(jì)算效率可以線性的隨之增加。
:在推理優(yōu)化部分,論文中提到 “ 在目前架構(gòu)設(shè)計(jì)中,通過(guò)擴(kuò)展 DTensor 和并行計(jì)劃,將建模與并行化解耦 ”,實(shí)現(xiàn)這種解耦的關(guān)鍵是什么?
:先說(shuō)一下這個(gè) “ 解耦的關(guān)鍵 ” 到底是什么。
現(xiàn)在,整個(gè)深度學(xué)習(xí)社區(qū)幾乎都在使用 PyTorch 這個(gè)框架,包括絕大多數(shù)公司、初創(chuàng)團(tuán)隊(duì)和學(xué)術(shù)界。但是,PyTorch 在最初的設(shè)計(jì)階段,其實(shí)并沒(méi)有考慮現(xiàn)在這種 “ 大模型時(shí)代 ” 的需求。比如上千上萬(wàn)臺(tái)機(jī)器同時(shí)訓(xùn)練一個(gè)大模型,或者參數(shù)量超百億的模型如何分布式高效訓(xùn)練等等。
所以,在最近幾年新需求不斷冒出來(lái)的情況下,大家只能在 PyTorch 的基礎(chǔ)上進(jìn)行不斷擴(kuò)展和改造。
一個(gè)早期、也比較典型的擴(kuò)展方式就是 Megatron-LM,這是英偉達(dá)開(kāi)發(fā)的, 它在 PyTorch 的基礎(chǔ)上提供了一個(gè)分布式訓(xùn)練的套件。但這個(gè)套件的問(wèn)題在于,它是深度侵入 PyTorch 實(shí)現(xiàn)的, 也就是說(shuō):算法工程師在使用時(shí),不得不跟底層的分布式實(shí)現(xiàn)強(qiáng)綁定、耦合在一起。
如果你想要搭建一個(gè)比較大的模型,并且希望能在上千張 GPU 卡的集群上把它訓(xùn)練起來(lái),那作為算法人員,你就需要手動(dòng)寫(xiě)很多和通信、并行化相關(guān)的代碼。這些代碼通常是直接嵌入模型邏輯里的,也就是說(shuō),把并行策略“寫(xiě)死”在模型中。這種寫(xiě)法帶來(lái)一個(gè)問(wèn)題:算法人員不得不去了解很多底層的分布式并行實(shí)現(xiàn)細(xì)節(jié);但事實(shí)上,算法同學(xué)的背景或經(jīng)驗(yàn)通常并不擅長(zhǎng)這類系統(tǒng)級(jí)、并行化的事情;所以這就導(dǎo)致了算法開(kāi)發(fā)的效率很低,維護(hù)難度也高。
我們團(tuán)隊(duì)在早期內(nèi)部開(kāi)發(fā)時(shí),也是基于像 Megatron-LM 這樣的框架,來(lái)寫(xiě)訓(xùn)練代碼和算法邏輯的。但在這個(gè)過(guò)程中,我們發(fā)現(xiàn)了一個(gè)很明顯的問(wèn)題:所有東西都被高度耦合在一起了,算法和系統(tǒng)完全綁死, 這就導(dǎo)致大家在團(tuán)隊(duì)協(xié)作中非常難以分工合作,比如算法人員和工程人員很難各自專注自己的部分,彼此牽制。
所以,這也就導(dǎo)致了我們后來(lái)意識(shí)到 —— 其實(shí)這也是整個(gè)社區(qū)的一個(gè)趨勢(shì):就是希望能把分布式并行和算法實(shí)現(xiàn)這兩件事情解耦開(kāi)。
這樣一來(lái):算法同學(xué)就可以專注在算法設(shè)計(jì)和模型搭建上;而分布式、性能優(yōu)化這些底層實(shí)現(xiàn)部分,則交由更擅長(zhǎng)這類系統(tǒng)工程的同學(xué)來(lái)處理。這個(gè)就是我們整體做這件事的一個(gè) motivation,也是我們?yōu)槭裁匆苿?dòng) “ 解耦 ” 這件事的原因。
不過(guò),要真正實(shí)現(xiàn)這個(gè)目標(biāo),其實(shí)在實(shí)踐中也遇到過(guò)不少困難。最主要的問(wèn)題是:原生的 PyTorch 并不太支持這樣靈活的解耦機(jī)制。這就需要在 PyTorch 上做一些更底層的擴(kuò)展或者改造。我們團(tuán)隊(duì)的工程同學(xué)在調(diào)研過(guò)程中發(fā)現(xiàn):最近 PyTorch 內(nèi)部正在研發(fā)一個(gè)叫 DTensor 的全新數(shù)據(jù)結(jié)構(gòu)。我們進(jìn)一步研究之后發(fā)現(xiàn),基于這個(gè) DTensor 的數(shù)據(jù)結(jié)構(gòu), 其實(shí)是有可能通過(guò)擴(kuò)展和定制的方式,比較優(yōu)雅地實(shí)現(xiàn) “ 建模與并行優(yōu)化 ” 的徹底解耦。
:在推理優(yōu)化部分,提到了擴(kuò)散蒸餾技術(shù),請(qǐng)問(wèn)擴(kuò)散蒸餾在MAGI-1中發(fā)揮的作用是什么?擴(kuò)散蒸餾的原理是什么?
:所謂的擴(kuò)散蒸餾( Diffusion Distillation ),其實(shí)就是為了解決如下問(wèn)題:當(dāng)你已經(jīng)擁有一個(gè)預(yù)訓(xùn)練好的擴(kuò)散模型之后,如何通過(guò) “ 蒸餾 ” 這個(gè)技巧,大幅提升模型在推理階段的生成速度?
擴(kuò)散蒸餾的作用主要體現(xiàn)在推理側(cè)的優(yōu)化,具體包括兩個(gè)方面:節(jié)省成本,以及提高生成的效率。原因在于,雖然 MAGI-1 在生成過(guò)程中依然采用擴(kuò)散 loss 進(jìn)行訓(xùn)練,也就是仍需經(jīng)歷多步采樣生成過(guò)程(denoising steps),但:如果模型不進(jìn)行蒸餾處理,那么在實(shí)際推理階段所需的步數(shù)就會(huì)非常多;舉例來(lái)說(shuō),標(biāo)準(zhǔn)模型在沒(méi)有蒸餾的情況下可能需要 64 步;而通過(guò)蒸餾優(yōu)化后,可以將步數(shù)大幅減少。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.