不久前 OpenAI Sora 以其驚人的影片生成效果迅速走紅,在一眾文生影片模型中突出重圍,成為全球矚目的焦點。
繼 2 周前推出成本直降 46% 的 Sora 訓練推理復現流程後,Colossal-AI 團隊全面開源全球首個類 Sora 架構影片生成模型 「Open-Sora 1.0」,涵蓋了整個訓練流程,包括數據處理、所有訓練細節和模型權重,攜手全球 AI 熱愛者共同推進影片創作的新紀元。
先睹為快,我們先看一段由 Colossal-AI 團隊發布的「Open-Sora 1.0」模型生成的都市繁華掠影影片。

Open-Sora 1.0 生成的都市繁華掠影
這僅僅是 Sora 復現技術冰山的一角,關於以上文生影片的模型架構、訓練好的模型權重、復現的所有訓練細節、數據預處理過程、demo 展示和詳細的上手教學。
Colossal-AI 團隊已經全面免費開源在 GitHub,同時筆者第一時間聯繫了該團隊,了解到他們將不斷更新 Open-Sora 的相關解決方案和最新動態,感興趣的朋友可以持續關注 Open-Sora 的開源社區。
Open-Sora 開源地址:https://github.com/hpcaitech/Open-Sora
全面解讀 Sora 復現方案
接下來,我們將深入解讀 Sora 復現方案的多個關鍵維度,包括模型架構設計、訓練復現方案、數據預處理、模型生成效果展示以及高效訓練優化策略。
模型架構設計
模型採用了目前火熱的 Diffusion Transformer (DiT) 架構。作者團隊以同樣使用 DiT 架構的高質量開源文生圖模型 PixArt-α 為基座,在此基礎上引入時間注意力層,將其擴展到了影片數據上。
具體來說,整個架構包括一個預訓練好的 VAE,一個文本編碼器,和一個利用空間 - 時間注意力機制的 STDiT (Spatial Temporal Diffusion Transformer) 模型。
其中,STDiT 每層的結構如下圖所示。它採用串行的方式在二維的空間注意力模塊上疊加一維的時間注意力模塊,用於建模時序關係。在時間注意力模塊之後,交叉注意力模塊用於對齊文本的語意。
與全注意力機制相比,這樣的結構大大降低了訓練和推理開銷。與同樣使用空間 - 時間注意力機制的 Latte 模型相比,STDiT 可以更好的利用已經預訓練好的圖像 DiT 的權重,從而在影片數據上繼續訓練。

STDiT 結構示意圖
整個模型的訓練和推理流程如下。據了解,在訓練階段首先採用預訓練好的 Variational Autoencoder (VAE) 的編碼器將影片數據進行壓縮,然後在壓縮之後的潛在空間中與文本嵌入 (text embedding) 一起訓練 STDiT 擴散模型。
在推理階段,從 VAE 的潛在空間中隨機採樣出一個高斯噪聲,與提示詞嵌入 (prompt embedding) 一起輸入到 STDiT 中,得到去噪之後的特徵,最後輸入到 VAE 的解碼器,解碼得到影片。
模型的訓練流程
訓練復現方案
我們向該團隊了解到,Open-Sora 的復現方案參考了 Stable Video Diffusion (SVD)工作,共包括三個階段,分別是:
1) 大規模圖像預訓練;
2) 大規模影片預訓練;
3) 高質量影片數據微調。
每個階段都會基於前一個階段的權重繼續訓練。相比於從零開始單階段訓練,多階段訓練通過逐步擴展數據,更高效地達成高質量影片生成的目標。
訓練方案三階段
第一階段:大規模圖像預訓練
第一階段通過大規模圖像預訓練,藉助成熟的文生圖模型,有效降低影片預訓練成本。
作者團隊向我們透露,通過網際網路上豐富的大規模圖像數據和先進的文生圖技術,我們可以訓練一個高質量的文生圖模型,該模型將作為下一階段影片預訓練的初始化權重。
同時,由於目前沒有高質量的時空 VAE,他們採用了 Stable Diffusion 模型預訓練好的圖像 VAE。該策略不僅保障了初始模型的優越性能,還顯著降低了影片預訓練的整體成本。
第二階段:大規模影片預訓練
第二階段執行大規模影片預訓練,增加模型泛化能力,有效掌握影片的時間序列關聯。
我們了解到,這個階段需要使用大量影片數據訓練,保證影片題材的多樣性,從而增加模型的泛化能力。
第二階段的模型在第一階段文生圖模型的基礎上加入了時序注意力模塊,用於學習影片中的時序關係。其餘模塊與第一階段保持一致,並加載第一階段權重作為初始化,同時初始化時序注意力模塊輸出為零,以達到更高效更快速的收斂。
Colossal-AI 團隊使用了 PixArt-alpha 的開源權重作為第二階段 STDiT 模型的初始化,以及採用了 T5 模型作為文本編碼器。
同時他們採用了 256x256 的小解析度進行預訓練,進一步增加了收斂速度,降低訓練成本。
第三階段:高質量影片數據微調
第三階段對高質量影片數據進行微調,顯著提升影片生成的質量。
作者團隊提及第三階段用到的影片數據規模比第二階段要少一個量級,但是影片的時長、解析度和質量都更高。通過這種方式進行微調,他們實現了影片生成從短到長、從低解析度到高解析度、從低保真度到高保真度的高效擴展。
作者團隊表示,在 Open-Sora 的復現流程中,他們使用了 64 塊 H800 進行訓練。第二階段的訓練量一共是 2808 GPU hours。
第三階段的訓練量是 1920 GPU hours,大約 4500 美元。經過初步估算,整個訓練方案成功把 Open-Sora 復現流程控制在了 1 萬美元左右。
數據預處理
為了進一步降低 Sora 復現的門檻和複雜度,Colossal-AI 團隊在代碼倉庫中還提供了便捷的影片數據預處理腳本,讓大家可以輕鬆啟動 Sora 復現預訓練,包括公開影片數據集下載,長影片根據鏡頭連續性分割為短影片片段,使用開源大語言模型 LLaVA 生成精細的提示詞。
作者團隊提到他們提供的批量影片標題生成代碼可以用兩卡 3 秒標註一個影片,並且質量接近於 GPT-4V。
最終得到的影片 / 文本對可直接用於訓練。藉助他們在 GitHub 上提供的開源代碼,我們可以輕鬆地在自己的數據集上快速生成訓練所需的影片 / 文本對,顯著降低了啟動 Sora 復現項目的技術門檻和前期準備。
基於數據預處理腳本自動生成的影片 / 文本對
模型生成效果展示
下面我們來看一下 Open-Sora 實際影片生成效果。比如讓 Open-Sora 生成一段在懸崖海岸邊,海水拍打著岩石的航拍畫面。
再讓 Open-Sora 去捕捉山川瀑布從懸崖上澎湃而下,最終匯入湖泊的宏偉鳥瞰畫面。

除了上天還能入海,簡單輸入 prompt,讓 Open-Sora 生成了一段水中世界的鏡頭,鏡頭中一隻海龜在珊瑚礁間悠然游弋。
Open-Sora 還能通過延時攝影的手法,向我們展現了繁星閃爍的銀河。
值得注意的是,作者團隊在 Github 上提到目前版本僅使用了 400K 的訓練數據,模型的生成質量和遵循文本的能力都有待提升。例如在上面的烏龜影片中,生成的烏龜多了一隻腳。
Open-Sora 1.0 也並不擅長生成人像和複雜畫面。作者團隊在 Github 上列舉了一系列待做規劃,旨在不斷解決現有缺陷,提升生成質量。
高效訓練加持
除了大幅降低 Sora 復現的技術門檻,提升影片生成在時長、解析度、內容等多個維度的質量,作者團隊還提供了 Colossal-AI 加速系統進行 Sora 復現的高效訓練加持。
通過算子優化和混合併行等高效訓練策略,在處理 64 幀、512x512 解析度影片的訓練中,實現了 1.55 倍的加速效果。同時,得益於 Colossal-AI 的異構內存管理系統,在單台伺服器上(8*H800)可以無阻礙地進行 1 分鐘的 1080p 高清影片訓練任務。

此外,在作者團隊的報告中,我們也發現 STDiT 模型架構在訓練時也展現出卓越的高效性。
和採用全注意力機制的 DiT 相比,隨著幀數的增加,STDiT 實現了高達 5 倍的加速效果,這在處理長影片序列等現實任務中尤為關鍵。

一覽 Open-Sora 模型影片生成效果
最後,讓我們一睹Open-Sora模型在影片生成上的精彩表現。
作者團隊表示,他們將會繼續維護和優化 Open-Sora 項目,預計將使用更多的影片訓練數據,以生成更高質量、更長時長的影片內容,並支持多解析度特性,切實推進 AI 技術在電影、遊戲、廣告等領域的落地。