AI視頻生成平臺全球前3,成本暴降50%方案開源!500元GPU算力免費(fèi)薅
近期免費(fèi)上線的視頻生成平臺Video Ocean,支持任意角色、任意風(fēng)格,可以文生視頻、圖生視頻、角色生視頻,引起廣泛關(guān)注與肯定,登上Product Hunt全球產(chǎn)品熱度榜單第三。

體驗(yàn)地址:https://video.luchentech.com/zh-CN
Video Ocean如何以極低成本快速完成迭代?開源解決現(xiàn)已方案發(fā)布。
二次開發(fā)分享至開源社區(qū),還可領(lǐng)取500元GPU算力代金券。
開源地址:https://github.com/hpcaitech/Open-Sora
Colossal-AI
在Video Ocean背后,離不開AI大模型訓(xùn)練推理系統(tǒng)Colossal-AI的基礎(chǔ)支持,其在GitHub全球AI訓(xùn)推系統(tǒng)開源領(lǐng)域指標(biāo)位列世界第一,已獲近4萬Stars。

開源地址:https://github.com/hpcaitech/ColossalAI
它基于PyTorch,可通過高效多維并行、異構(gòu)內(nèi)存等,降低AI大模型訓(xùn)練/微調(diào)/推理的開發(fā)與應(yīng)用成本,已與多家世界/中國500強(qiáng)企業(yè)聯(lián)合開發(fā)和優(yōu)化AI大模型。
針對類Sora視頻大模型開發(fā),Colossal-AI做了多方面的優(yōu)化,模型算力利用率MFU相對現(xiàn)有其他開源方案總體最高提升可達(dá)2.61倍,顯著降低成本。
異步Checkpoint
在使用大規(guī)模集群訓(xùn)練時(shí),因集群規(guī)模擴(kuò)大,故障率會迅速上升,導(dǎo)致訓(xùn)練極易中斷。在這種情況下快速保存Checkpoint不僅可以加速整體訓(xùn)練效率,也有利于故障容錯(cuò),快速恢復(fù)訓(xùn)練。
為此,Colossal-AI推出了異步Checkpoint功能。針對10B量級的視頻生成模型,可將DiT模型、EMA模型、優(yōu)化器的保存時(shí)間從300s+,降至10s以內(nèi),節(jié)省了高達(dá)97%的保存時(shí)間。
Checkpoint保存主要分為GPU->CPU(D2H)和硬盤寫兩個(gè)步驟,通過將這兩個(gè)步驟通過流水線的形式執(zhí)行,極大的提高了保存的效率。同時(shí)此步驟通過多線程(C++)的形式在后臺完成,不會阻塞訓(xùn)練主進(jìn)程。GPU->CPU通過單獨(dú)的CUDA Stream完成,也不會阻塞主計(jì)算Stream。

流水線保存Checkpoint
除此之外,通過使用safetensors格式,因其安全、零拷貝的特性,也提升了讀取的性能。
Zero內(nèi)存/通信優(yōu)化

常見的ZeRO通信方式

優(yōu)化后的ZeRO通信方式
Colossal-AI在常見的ZeRO通信方式基礎(chǔ)上,通過進(jìn)一步將參數(shù)的All-gather和下一輪訓(xùn)練的前向計(jì)算重疊,以達(dá)到更高的訓(xùn)練效率。
使用bucket來進(jìn)行Zero-DP的通信是常見的優(yōu)化手段,但是在使用bucket的過程中存在大量的內(nèi)存拷貝操作。當(dāng)集群規(guī)模擴(kuò)大時(shí),內(nèi)存拷貝操作的開銷會逐漸增大。為解決這個(gè)問題,通過將內(nèi)存拷貝操作進(jìn)行融合,降低了內(nèi)存拷貝的開銷。
同時(shí),隨著集群規(guī)模擴(kuò)大,通信算子All-Gather和Reduce-Scatter的速度衰減非常嚴(yán)重。在bucket size較小時(shí),降速更加明顯(例如Torch DDP默認(rèn)的25MB)。
Colossal-AI從兩個(gè)方面來解決這個(gè)問題。
首先可以通過增大bucket size來減緩?fù)ㄐ沤邓?,但是bucket size不能無限增大,過大的bucket size會影響計(jì)算和通信的重疊。通過以下公式粗略搜索得到較優(yōu)的bucket size,再實(shí)際測試進(jìn)行精調(diào)。

其中,φ_B為bucket size,φ為模型大小,T_bwd為反向計(jì)算時(shí)間,T_comm為bucket單次通信時(shí)間。
其次,當(dāng)集群規(guī)模很大時(shí),Colossal-AI引入2d torus方式的通信能夠減緩?fù)ㄐ沤邓賳栴}。

2d torus通信
經(jīng)過聯(lián)合優(yōu)化后,在視頻模型訓(xùn)練的場景下,集群規(guī)模很大時(shí)也能保證scaling > 95%,在大規(guī)模多機(jī)訓(xùn)練中能達(dá)到~30%的加速。
數(shù)據(jù)加載優(yōu)化
loader = DataLoader(dataset, batch_size=2, collate_fn=collate_wrapper,
                    pin_memory=True)PyTorch dataloader提供了自動Pin memory的功能,能大幅度提高把數(shù)據(jù)從CPU移動到GPU的時(shí)間,是非常實(shí)用的一項(xiàng)功能。其通過Python多線程來實(shí)現(xiàn)自動Pin memory。
但是由于GIL的存在,Python的多線程并非傳統(tǒng)意義上的多線程。同時(shí)Pin memory操作調(diào)用的cudaMallocHost 可能會阻塞主進(jìn)程(影響主CUDA Stream)。當(dāng)使用高清/長視頻進(jìn)行訓(xùn)練時(shí),pin memory需要申請的內(nèi)存較大,這個(gè)問題會更加明顯。
具體表現(xiàn)為,開啟Pin memory之后,某個(gè)進(jìn)程的某一部分操作可能比別的進(jìn)程更慢,從而造成一定的不同步性,而不同步性在大規(guī)模集群訓(xùn)練時(shí)對整體訓(xùn)練效率影響較大。
為解決這個(gè)問題,Colossal-AI將dataloader進(jìn)行了改造,通過預(yù)分配和緩存pin memory的機(jī)制,盡量避免在訓(xùn)練過程中調(diào)用cudaMallocHost。如果設(shè)置合理,緩存命中率可以達(dá)到100%,即不會影響訓(xùn)練速度,并且不會消耗過多的RAM cache。
FP8混合精度訓(xùn)練
Colossal-AI支持主流的BF16(O2) + FP8(O1)的新一代混合精度訓(xùn)練方案。
僅需一行代碼,即可對主流大模型能夠獲得平均30%的加速效果,并保證訓(xùn)練收斂性,降低相應(yīng)大模型開發(fā)成本。

使用時(shí),僅需在初始化plugin時(shí)開啟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編譯時(shí)間及復(fù)雜的編譯環(huán)境配置。
序列并行優(yōu)化
Colossal-AI針對VideoOcean模型支持了多種序列并行范式,包括Tensor sequence parallelism,Ring attention (context parallelism)和Sequence parallelism(Ulysses),這幾種范式可以單獨(dú)使用也可以聯(lián)合使用。
同時(shí)根據(jù)視頻數(shù)據(jù)的特征(激活值特別大),進(jìn)一步優(yōu)化了Ring attention的通信,使用ND-ring來應(yīng)對復(fù)雜的硬件配置。
當(dāng)視頻模型scale到數(shù)百億參數(shù)量級,并且使用高清、較長的視頻訓(xùn)練時(shí),大規(guī)模多機(jī)訓(xùn)練和混合并行訓(xùn)練幾乎是標(biāo)配。
在這種情況下,Colossal-AI對序列并行的優(yōu)化可以應(yīng)對各種情形,尤其是大視頻導(dǎo)致序列需要跨機(jī)的情況加速效果顯著。
卷積層張量并行優(yōu)化
Colossal-AI對適用于高清視頻、長視頻的VAE進(jìn)行了針對性優(yōu)化。
對這類數(shù)據(jù),CUDNN的3D卷積會產(chǎn)生非常大的激活值,為此Colossal-AI實(shí)現(xiàn)了分塊卷積和張量并行。
與Transformer中的張量并行不同,Colossal-AI對VAE用了一種新的張量并行方式以適配其巨大的激活值,最終在完全不損失精度的情況下完成了加速和內(nèi)存優(yōu)化。















 
 
 


















 
 
 
 