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