c做網(wǎng)站百度云登錄
目錄
- 一、CogVideoX簡(jiǎn)介
- 二、CogVideoX部署實(shí)踐流程
- 2.1、創(chuàng)建丹摩實(shí)例
- 2.2、配置環(huán)境和依賴
- 2.3、上傳模型與配置文件
- 2.4、開始運(yùn)行
- 最后
一、CogVideoX簡(jiǎn)介
智譜AI在8月6日宣布了一個(gè)令人興奮的消息:他們將開源視頻生成模型CogVideoX。目前,其提示詞上限為 226 個(gè) token,視頻長(zhǎng)度為 6 秒,幀率為 8 幀 / 秒,視頻分辨率為 720*480,而這僅僅是初代,性能更強(qiáng)參數(shù)量更大的模型正在路上。先看兩個(gè)效果(均為個(gè)人本次實(shí)踐復(fù)現(xiàn)得出):
CogVideoX生成視頻1
CogVideo生成視頻2
首先簡(jiǎn)單介紹下原理,CogVideoX的核心在于它的3D變分自編碼器,這項(xiàng)技術(shù)能夠?qū)⒁曨l數(shù)據(jù)壓縮至原來(lái)的2%,極大地降低了模型處理視頻時(shí)所需的計(jì)算資源,還巧妙地保持了視頻幀與幀之間的連貫性,有效避免了視頻生成過(guò)程中可能出現(xiàn)的閃爍問(wèn)題。
為了進(jìn)一步提升內(nèi)容的連貫性,CogVideoX采用了3D旋轉(zhuǎn)位置編碼(3D RoPE)技術(shù),使得模型在處理視頻時(shí)能夠更好地捕捉時(shí)間維度上的幀間關(guān)系,建立起視頻中的長(zhǎng)期依賴關(guān)系,從而生成更加流暢和連貫的視頻序列。
在可控性方面,智譜AI研發(fā)了一款端到端的視頻理解模型,這個(gè)模型能夠?yàn)橐曨l數(shù)據(jù)生成精確且與內(nèi)容緊密相關(guān)的描述。這一創(chuàng)新極大地增強(qiáng)了CogVideoX對(duì)文本的理解和對(duì)用戶指令的遵循能力,確保了生成的視頻不僅與用戶的輸入高度相關(guān),而且能夠處理超長(zhǎng)且復(fù)雜的文本提示。
- 代碼倉(cāng)庫(kù):
https://github.com/THUDM/CogVideo
- 模型下載:
https://huggingface.co/THUDM/CogVideoX-2b
- 技術(shù)報(bào)告:
https://github.com/THUDM/CogVideo/blob/main/resources/CogVideoX.pdf
- 丹摩智算平臺(tái):
https://damodel.com/register?source=1D5686A0
本篇博客將詳細(xì)介紹,使用丹摩服務(wù)器部署和初步使用CogVideoX的實(shí)踐流程。
二、CogVideoX部署實(shí)踐流程
2.1、創(chuàng)建丹摩實(shí)例
首先進(jìn)入控制臺(tái),選擇GPU云實(shí)例,點(diǎn)擊創(chuàng)建實(shí)例:
由于CogVideoX在FP-16 精度下的推理至少需 18GB 顯存,微調(diào)則需要 40GB 顯存,我們這里可以選擇L40S顯卡(推薦)或者4090顯卡,硬盤可以選擇默認(rèn)的100GB系統(tǒng)盤和50GB數(shù)據(jù)盤,鏡像選擇PyTorch2.3.0、Ubuntu-22.04,CUDA12.1鏡像,創(chuàng)建并綁定密鑰對(duì),最后啟動(dòng)。
2.2、配置環(huán)境和依賴
進(jìn)入JupyterLab后,打開終端,首先輸入git clone https://github.com/THUDM/CogVideo.git
,拉取CogVideo代碼的倉(cāng)庫(kù),如遇到github連接超時(shí),可以使用本地下載壓縮包然后上傳到服務(wù)器解壓,拉取成功后會(huì)顯示CogVideo-main的文件夾如下:
其次,cd進(jìn)入CogVideo-main文件夾,輸入pip install -r requirements.txt
安裝對(duì)應(yīng)依賴:
其中第一個(gè)依賴需要從GitHub倉(cāng)庫(kù)中安裝特定版本的diffusers包,在安裝中可能會(huì)出現(xiàn)Running command git clone --filter=blob:non
過(guò)久:
這種情況可以選擇使用本地下載diffusers-0.30.0.dev0-py3-none-any.whl文件(夸克網(wǎng)盤鏈接:https://pan.quark.cn/s/67d4bf445556)
再使用pip install diffusers-0.30.0.dev0-py3-none-any.whl
安裝對(duì)應(yīng)版本的diffusers
然后再刪除requirements.txt文件中的git+https://github.com/huggingface/diffusers.git@878f609aa5ce4a78fea0f048726889debde1d7e8#egg=diffusers
那一行
最后,繼續(xù)使用pip安裝剩下的依賴:
以上依賴安裝好后,可以在終端輸入python,然后輸入以下代碼進(jìn)行測(cè)試:
import torch
from diffusers import CogVideoXPipeline
from diffusers.utils import export_to_video
顯示如下狀態(tài),沒(méi)有報(bào)錯(cuò)就說(shuō)明依賴安裝成功!
2.3、上傳模型與配置文件
除了配置代碼文件和項(xiàng)目依賴,還需要上傳CogVideoX模型文件和對(duì)應(yīng)的配置文件。打開huggingface,進(jìn)入https://huggingface.co/THUDM/CogVideoX-2b/tree/main
倉(cāng)庫(kù),找到Files and versions目錄,將其中的所有模型和配置文件全部下載到本地。
一共大概9GB+大小的文件,下載完成后的目錄如下:
然后點(diǎn)擊丹摩控制臺(tái)-文件存儲(chǔ)-上傳文件,將剛剛下載好的整個(gè)CogVideo文件夾上傳,上傳好后的文件存在實(shí)例的/root/shared-storage目錄。
上傳完成后,繼續(xù)打開終端,cd進(jìn)入/root/shared-storage,輸入ls可以看到剛剛上傳好的CogVideo的文件夾已經(jīng)顯示在文件目錄中。
2.4、開始運(yùn)行
上傳完成后,在CogVideo-main文件新建一個(gè)test.py文件
test.py代碼內(nèi)容如下,主要使用diffusers庫(kù)中的CogVideoXPipeline模型,加載了一個(gè)預(yù)訓(xùn)練的CogVideo模型,然后根據(jù)一個(gè)詳細(xì)的文本描述(prompt),生成對(duì)應(yīng)視頻。
import torch
from diffusers import CogVideoXPipeline
from diffusers.utils import export_to_video# prompt里寫自定義想要生成的視頻內(nèi)容
prompt = "A panda, dressed in a small, red jacket and a tiny hat, sits on a wooden stool in a serene bamboo forest. The panda's fluffy paws strum a miniature acoustic guitar, producing soft, melodic tunes. Nearby, a few other pandas gather, watching curiously and some clapping in rhythm. Sunlight filters through the tall bamboo, casting a gentle glow on the scene. The panda's face is expressive, showing concentration and joy as it plays. The background includes a small, flowing stream and vibrant green foliage, enhancing the peaceful and magical atmosphere of this unique musical performance."pipe = CogVideoXPipeline.from_pretrained("root/shared-storage/CogVideo", # 這里填CogVideo模型存放的位置,此處是放在了丹摩實(shí)例的共享空間,也可以放到項(xiàng)目文件夾里torch_dtype=torch.float16
).to("cuda")# 參數(shù)do_classifier_free_guidance設(shè)置為True可以啟用無(wú)分類器指導(dǎo),增強(qiáng)生成內(nèi)容一致性和多樣性
# num_videos_per_prompt控制每個(gè)prompt想要生成的視頻數(shù)量
# max_sequence_length控制輸入序列的最大長(zhǎng)度
prompt_embeds, _ = pipe.encode_prompt(prompt=prompt,do_classifier_free_guidance=True,num_videos_per_prompt=1,max_sequence_length=226,device="cuda",dtype=torch.float16,
)video = pipe(num_inference_steps=50,guidance_scale=6,prompt_embeds=prompt_embeds,
).frames[0]export_to_video(video, "output.mp4", fps=8)
運(yùn)行成功后,可以在當(dāng)前文件夾中找到對(duì)應(yīng)prompt生成的output.mp4視頻:
最近正好奧運(yùn)會(huì),我還試著生成了一些比較有難度的運(yùn)動(dòng)員的視頻,感覺(jué)效果還不錯(cuò),后面再研究研究視頻的prompt怎么寫。
CogVideo生成視頻4
最后
💖 個(gè)人簡(jiǎn)介:人工智能領(lǐng)域碩士畢業(yè),某央企AI工程師
📝 關(guān)注我:中杯可樂(lè)多加冰
🎉 支持我:點(diǎn)贊👍+收藏??+留言📝