AI視訊生成平台全球前3,成本暴降50%方案開源!500元GPU算力免費薅


【新智元導讀】隨著Sora震撼發佈,視訊生成技術成為了AI領域新風口。不過,高昂的開發成本是一大瓶頸。國產平台Video Ocean不僅成功登上全球熱榜第三,還將視訊生成模型開發成本降低50%。而且,模型建構和性能最佳化方案現已開源,還能免費獲得500元GPU算力。

近期免費上線的視訊生成平台Video Ocean,支援任意角色、任意風格,可以文生視訊、圖生視訊、角色生視訊,引起廣泛關注與肯定,登上Product Hunt全球產品熱度榜單第三。


體驗地址:https://video.luchentech.com/zh-CN

Video Ocean如何以極低成本快速完成迭代?開源解決現已方案發佈。

二次開發分享至開源社區,還可領取500元GPU算力代金券。


Colossal-AI

在Video Ocean背後,離不開AI大模型訓練推理系統Colossal-AI的基礎支援,其在GitHub全球AI訓推系統開源領域指標位列世界第一,已獲近4萬Stars。



它基於PyTorch,可通過高效多維平行、異構記憶體等,降低AI大模型訓練/微調/推理的開發與應用成本,已與多家世界/中國500強企業聯合開發和最佳化AI大模型。

針對類Sora視訊大模型開發,Colossal-AI做了多方面的最佳化,模型算力利用率MFU相對現有其他開源方案總體最高提升可達2.61倍,顯著降低成本。


非同步Checkpoint

在使用大規模叢集訓練時,因叢集規模擴大,故障率會迅速上升,導致訓練極易中斷。在這種情況下快速保存Checkpoint不僅可以加速整體訓練效率,也有利於故障容錯,快速恢復訓練。

為此,Colossal-AI推出了非同步Checkpoint功能。針對10B量級的視訊生成模型,可將DiT模型、EMA模型、最佳化器的保存時間從300s+,降至10s以內,節省了高達97%的保存時間。

Checkpoint保存主要分為GPU->CPU(D2H)和硬碟寫兩個步驟,通過將這兩個步驟通過流水線的形式執行,極大的提高了保存的效率。同時此步驟通過多執行緒(C++)的形式在後台完成,不會阻塞訓練主處理程序。GPU->CPU通過單獨的CUDA Stream完成,也不會阻塞主計算Stream。


流水線保存Checkpoint

除此之外,通過使用safetensors格式,因其安全、零複製的特性,也提升了讀取的性能。


Zero記憶體/通訊最佳化


常見的ZeRO通訊方式


最佳化後的ZeRO通訊方式

Colossal-AI在常見的ZeRO通訊方式基礎上,通過進一步將參數的All-gather和下一輪訓練的前向計算重疊,以達到更高的訓練效率。

使用bucket來進行Zero-DP的通訊是常見的最佳化手段,但是在使用bucket的過程中存在大量的記憶體複製操作。當叢集規模擴大時,記憶體複製操作的開銷會逐漸增大。為解決這個問題,通過將記憶體複製操作進行融合,降低了記憶體複製的開銷。

同時,隨著叢集規模擴大,通訊算子All-Gather和Reduce-Scatter的速度衰減非常嚴重。在bucket size較小時,降速更加明顯(例如Torch DDP默認的25MB)。

Colossal-AI從兩個方面來解決這個問題。

首先可以通過增大bucket size來減緩通訊降速,但是bucket size不能無限增大,過大的bucket size會影響計算和通訊的重疊。通過以下公式粗略搜尋得到較優的bucket size,再實際測試進行精調。


其中,φ_B為bucket size,φ為模型大小,T_bwd為反向計算時間,T_comm為bucket單次通訊時間。

其次,當叢集規模很大時,Colossal-AI引入2d torus方式的通訊能夠減緩通訊降速問題。


2d torus通訊

經過聯合最佳化後,在視訊模型訓練的場景下,叢集規模很大時也能保證scaling > 95%,在大規模多機訓練中能達到~30%的加速。


資料載入最佳化

loader = DataLoader(dataset, batch_size=2, collate_fn=collate_wrapper, pin_memory=True)

PyTorch dataloader提供了自動Pin memory的功能,能大幅度提高把資料從CPU移動到GPU的時間,是非常實用的一項功能。其通過Python多執行緒來實現自動Pin memory。

但是由於GIL的存在,Python的多執行緒並非傳統意義上的多執行緒。同時Pin memory操作呼叫的cudaMallocHost 可能會阻塞主處理程序(影響主CUDA Stream)。當使用高畫質/長視訊進行訓練時,pin memory需要申請的記憶體較大,這個問題會更加明顯。

具體表現為,開啟Pin memory之後,某個處理程序的某一部分操作可能比別的處理程序更慢,從而造成一定的不同步性,而不同步性在大規模叢集訓練時對整體訓練效率影響較大。

為解決這個問題,Colossal-AI將dataloader進行了改造,通過預分配和快取pin memory的機制,儘量避免在訓練過程中呼叫cudaMallocHost。如果設定合理,快取命中率可以達到100%,即不會影響訓練速度,並且不會消耗過多的RAM cache。


FP8混合精度訓練

Colossal-AI支援主流的BF16(O2) + FP8(O1)的新一代混合精度訓練方案。

僅需一行程式碼,即可對主流大模型能夠獲得平均30%的加速效果,並保證訓練收斂性,降低相應大模型開發成本。


使用時,僅需在初始化plugin時開啟FP8即可:

from colossalai.booster.plugin import GeminiPlugin, HybridParallelPlugin, LowLevelZeroPlugin...
plugin = LowLevelZeroPlugin(..., use_fp8=True)
plugin = GeminiPlugin(..., use_fp8=True)
plugin = HybridParallelPlugin(..., use_fp8=True)

除此之外,無需引入額外的手寫CUDA算子,避免了較長的AOT編譯時間及複雜的編譯環境組態。


序列平行最佳化

Colossal-AI針對VideoOcean模型支援了多種序列平行範式,包括Tensor sequence parallelism,Ring attention (context parallelism)和Sequence parallelism(Ulysses),這幾種範式可以單獨使用也可以聯合使用。

同時根據視訊資料的特徵(啟動值特別大),進一步最佳化了Ring attention的通訊,使用ND-ring來應對複雜的硬體組態。

當視訊模型scale到數百億參數量級,並且使用高畫質、較長的視訊訓練時,大規模多機訓練和混合併行訓練幾乎是標配。

在這種情況下,Colossal-AI對序列平行的最佳化可以應對各種情形,尤其是大視訊導致序列需要跨機的情況加速效果顯著。


摺積層張量平行最佳化

Colossal-AI對適用於高畫質視訊、長視訊的VAE進行了針對性最佳化。

對這類資料,CUDNN的3D摺積會產生非常大的啟動值,為此Colossal-AI實現了分塊摺積和張量平行。

與Transformer中的張量平行不同,Colossal-AI對VAE用了一種新的張量平行方式以適配其巨大的啟動值,最終在完全不損失精度的情況下完成了加速和記憶體最佳化。


領取GPU算力代金券

為回饋廣大開發者的關注與肯定,基於Colossal-AI或OpenSora

  1. 建構有實際意義的高品質項目,如微調、預訓練模型、應用、演算法論文等開放原始碼專案獎勵:領取潞晨雲500元或hpc-ai.com的H200 GPU 100美元算力代金券。
  2. 發佈相關開放原始碼專案

獎勵:領取潞晨雲50元或hpc-ai.com的H200 GPU 10美元算力代金券。 (新智元)