#工作記錄
前言
SkyworkAI/SkyReels-V2 是由昆侖萬維開源的全球首個無限時長電影生成模型,基于擴散強迫框架結合多模態大語言模型、強化學習等技術,支持文本到視頻、圖像到視頻等多種生成方式
開源項目地址:
SkyworkAI/SkyReels-V2:SkyReels-V2:無限長膠片生成模型
一般建議Linux系統或WSL部署可能較為順利,因為Windows中部署有些小坑要踩,本文將詳細記錄避坑部署的流程和步驟。
前提條件:
請提前準備好python開發基礎環境
請提前準備好網絡環境
請提前完整克隆項目源代碼到本地
本文中用于演示的編輯器是PyCharm社區版
下邊進入部署步驟:
一、新建虛擬環境,python=3.10
在PyCharm中,用項目的requirement新建python版本為3.10的本地.venv虛擬環境:
如果出現以下彈窗是正常的,不用著急:
requirements.txt安裝失敗,但環境創建成功:
?關閉彈窗,按提示先升級pip和相關構建包
二、升級pip、setuptools、wheel
激活并進入創建的虛擬環境終端:
python -m pip install --upgrade pip setuptools wheel
三、修改?requirements.txt文件
?requirements.txt文件原內容:
torch==2.5.1
torchvision==0.20.1
opencv-python==4.10.0.84
diffusers>=0.31.0
transformers==4.49.0
tokenizers==0.21.1
accelerate==1.6.0
tqdm
imageio
easydict
ftfy
dashscope
imageio-ffmpeg
flash_attn
numpy>=1.23.5,<2
xfuser
修改后的?requirements.txt文件內容:
#torch==2.5.1
#torchvision==0.20.1
opencv-python==4.10.0.84
diffusers>=0.31.0
transformers==4.49.0
tokenizers==0.21.1
accelerate==1.6.0
tqdm
imageio
easydict
ftfy
dashscope
imageio-ffmpeg
#flash_attn
numpy>=1.23.5,<2
xfuser
具體修改的地方是:
1、注釋掉第1行和第2行,改為手動安裝torch;
小坑1:
用原始的 requirements.txt文件安裝的torch不完整,文件列表中缺少?torchaudio,如若安裝后將只能使用CPU而不能調用GPU支持。
因為torch==2.5.1和?torchvision==0.20.1 需要?torchaudio==2.5.1,這三個包必須一起在虛擬環境中按版本兼容安裝,而且最好指定CUDA版本,比如CUDA11.8/CUDA12.1/CUDA12.4等。
后邊將會記錄到到PyTorch官網查找命令進行安裝。
2、注釋掉第14行,改為手動安裝flash_attn;
小坑2:
在Windows中直接安裝flash_attn大概率會在安裝編譯中失敗,改為下載大佬已編譯的whl文件從本地安裝。
三、安裝修改后的?requirements.txt文件
pip install requirements.txt
一般修改后能順利完成安裝。?
四、安裝Torch
(一)進入PyTorch官網:
PyTorch 插件
(二)進入“開始使用(Get started)”:
(三)進入“以前的PyTorch版本”:
(四)查找安裝命令:
在PyTorch官網這個界面中按CTRL+F打開搜索框搜索“torch==2.5.1”(復制自?requirements.txt 文件中被注釋掉的torch版本“torch==2.5.1”文本)
(五)復制安裝命令
如果想安裝CUDA11.8版支持的:
# CUDA 11.8
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=11.8 -c pytorch -c nvidia
?如果想安裝CUDA12.1版支持的:
# CUDA 12.1
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.1 -c pytorch -c nvidia
?如果想安裝CUDA12.4版支持的:?
# CUDA 12.4
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.4 -c pytorch -c nvidia
(六)安裝torch
復制到虛擬環境的終端中執行,比如CUDA12.4的:
# CUDA 12.4
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.4 -c pytorch -c nvidia
(七)驗證torch的安裝
用以下完整的命令,在python環境驗證安裝:
import torch # 導入 PyTorch 庫print("PyTorch 版本:", torch.__version__) # 打印 PyTorch 的版本號# 檢查 CUDA 是否可用,并設置設備("cuda:0" 或 "cpu")
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print("設備:", device) # 打印當前使用的設備
print("CUDA 可用:", torch.cuda.is_available()) # 打印 CUDA 是否可用
print("cuDNN 已啟用:", torch.backends.cudnn.enabled) # 打印 cuDNN 是否已啟用# 打印 PyTorch 支持的 CUDA 和 cuDNN 版本
print("支持的 CUDA 版本:", torch.version.cuda)
print("cuDNN 版本:", torch.backends.cudnn.version())# 創建兩個隨機張量(默認在 CPU 上)
x = torch.rand(5, 3)
y = torch.rand(5, 3)# 將張量移動到指定設備(CPU 或 GPU)
x = x.to(device)
y = y.to(device)# 對張量進行逐元素相加
z = x + y# 打印結果
print("張量 z 的值:")
print(z) # 輸出張量 z 的內容
?
五、安裝flash_attn
(一)下載flash_attn
因為直接pip安裝flash_attn大概率安裝失敗,所以思路是搜索并下載一個對應python版本和torch、CUDA版本的whl文件,從本地安裝:
注意3個細節:
CUDA12.4
torch==2.5.1
python=3.10
開源下載地址:
發布 ·kingbri1/flash-attention
(二)移動flash_attn到項目文件夾
下載后放入項目文件夾內
(三)安裝flash_attn
pip install+文件名
pip install flash_attn-2.7.4.post1+cu124torch2.5.1cxx11abiFALSE-cp310-cp310-win_amd64.whl
安裝后?requirements.txt文件安裝完成。
六、下載模型
可以用Huggingface或modelscope兩種方式的其中之一。
請根據系統配置選擇適合的模型。
下載過程容易產生錯誤,所以單獨舉例記錄下來。
(一)?Huggingface 下載
?1、進入模型頁面
這里演示用?Huggingface 下載
點擊進入項目README.MD提供的Huggingface鏈接:
比如Diffusion Forcing 1.3B-540P:
2、進到模型文件界面
?3、點擊右上角查看下載方式
4、執行命令下載?
復制以下命令在項目虛擬環境的終端中執行:
git lfs install
git clone https://huggingface.co/Skywork/SkyReels-V2-DF-1.3B-540P
(二)modelscope下載
?1、進入模型頁面
這里演示用?Huggingface 下載
點擊進入項目README.MD提供的Huggingface鏈接:
比如Diffusion Forcing 1.3B-540P:
2、進到模型文件界面?
?3、點擊右上角查看下載方式
?
4、創建儲存目錄
在本地新建模型儲存文件夾“SkyReels-V2-DF-1.3B-540P”
mkdir SkyReels-V2-DF-1.3B-540P
5、修改下載命令用于下載到指定路徑:
修改下載命令,指定下載路徑:
modelscope模型官網原命令:?
modelscope download --model Skywork/SkyReels-V2-DF-1.3B-540P
修改后命令:
指定完整的模型文件下載到項目目錄下的?剛新建的“SkyReels-V2-DF-1.3B-540P”文件夾:
modelscope download --model Skywork/SkyReels-V2-DF-1.3B-540P --local_dir ./SkyReels-V2-DF-1.3B-540P
?如果不指定路徑直接使用官方命令
?如果不指定路徑直接使用官方命令的話,模型文件會下載到C盤,導致C盤空間緊張:
?C:\Users\love\.cache\modelscope\hub\models
七、安裝其他軟件包
?以下兩個庫在requirements.txt文件中沒有列出來,但缺少會導致運行錯誤
pip install addict
也可以用PyCharm中的安裝功能安裝:?
pip install datasets==2.16.0
?注:如果要指定版本,則不建議使用PyCharm中的安裝功能進行安裝,而是手動用命令進行安裝。
八、運行項目
(一)創建輸出目錄
在項目目錄創建一個視頻輸出目錄,用于參數指定并保存輸出視頻。
創建名為output的目錄:
mkdir output
(二)創建運行腳本
1、我們先仔細查看官方命令示例:
然后以第一個運行命令為例,來運行以檢驗部署情況:
model_id=Skywork/SkyReels-V2-DF-14B-540P
# synchronous inference
python3 generate_video_df.py \
? --model_id ${model_id} \
? --resolution 540P \
? --ar_step 0 \
? --base_num_frames 97 \
? --num_frames 257 \
? --overlap_history 17 \
? --prompt "A graceful white swan with a curved neck and delicate feathers swimming in a serene lake at dawn, its reflection perfectly mirrored in the still water as mist rises from the surface, with the swan occasionally dipping its head into the water to feed." \
? --addnoise_condition 20 \
? --offload \
? --teacache \
? --use_ret_steps \
? --teacache_thresh 0.3
由于命令參數太多了,而且也不是可直接運行的命令(在Windows系統上),我們可以創建一個.py文件,以在項目虛擬環境終端中運行(Windows cmd和powershell命令有差異,請注意用AI進行轉換) 。
2、創建 Python 腳本
我們可以將這些命令封裝到一個 Python 腳本中,這樣就可以直接運行該腳本而無需手動在命令行中輸入這些復雜的命令。
以下是一個示例 Python 腳本的示例,它會自動設置變量并調用項目中的?generate_video_df.py
腳本文件。
創建 Python 腳本
2.1、創建一個名為 run_video_generation.py
的文件:
在PyCharm中,目錄窗口處右鍵新建一個.py文件,并將以下內容復制到文件中:
# run_video_generation.pyimport subprocess
import sys
import osdef run_command(command):try:subprocess.run(command, check=True, shell=True)except subprocess.CalledProcessError as e:print(f"Error: {e}")sys.exit(1)if __name__ == "__main__":# 設置模型 IDmodel_id = "SkyReels-V2-DF-1.3B-540P"# 設置輸出路徑output_path = "./output/generated_video.mp4"# 確保輸出目錄存在output_dir = os.path.dirname(output_path)if not os.path.exists(output_dir):os.makedirs(output_dir)# 構建命令command = f"""python3 generate_video_df.py ^--model_id {model_id} ^--resolution 540P ^--ar_step 0 ^--base_num_frames 97 ^--num_frames 257 ^--overlap_history 17 ^--prompt "A graceful white swan with a curved neck and delicate feathers swimming in a serene lake at dawn, its reflection perfectly mirrored in the still water as mist rises from the surface, with the swan occasionally dipping its head into the water to feed." ^--addnoise_condition 20 ^--offload ^--teacache ^--use_ret_steps ^--teacache_thresh 0.3 ^--output_path "{output_path}""""# 運行命令print("Running video generation command...")run_command(command)print(f"Video generation completed successfully. Video saved to: {output_path}")
2.2、保存文件:
將文件保存為 run_video_generation.py
,并確保它位于與 generate_video_df.py
同一目錄下(例如 F:\PythonProjects\SkyReels-V2
)。
2.3、運行腳本
python run_video_generation.py
2.4、腳本說明
-
subprocess.run
:-
用于在 Python 腳本中運行外部命令。
-
check=True
會確保如果命令失敗,腳本會拋出異常并退出。 -
shell=True
允許我們在一個字符串中編寫命令,就像在命令行中一樣。
-
-
命令格式:
-
在 Windows 中,我們使用
^
作為換行符。 -
使用 Python 的 f-string 來插入變量(如
model_id
)。
-
2.5、注意事項
- 終端版本
CMD和powershell中命令不同、連接符也不同,請使用AI工具進行轉換。
-
Python 版本:
確保您使用的是 Python 3.10?或更高版本,因為 f-string 是從 Python 3.6 開始引入的。
- 路徑問題:
如果 generate_video_df.py
位于其他目錄,我們需要提供完整的路徑,例如
command = f"F:\\PythonProjects\\SkyReels-V2\\generate_video_df.py ^"
-
???????權限問題:
確保我們有權限運行 generate_video_df.py
腳本
通過這種方式,我們可以避免手動輸入復雜的命令,直接運行一個簡單的 Python 腳本即可完成視頻生成任務。
希望這能幫助我們部署的項目順利運行!?
總結
關鍵步驟總結
-
新建虛擬環境:在 PyCharm 中創建 Python 3.10 的虛擬環境
.venv
。 -
升級依賴:激活虛擬環境并升級
pip
、setuptools
和wheel
。 -
修改
requirements.txt
:注釋掉torch
、torchvision
和flash_attn
的安裝行,手動安裝這些依賴。 -
安裝修改后的依賴:運行
pip install -r requirements.txt
安裝依賴。 -
安裝 PyTorch:從 PyTorch 官網查找并安裝適合的 PyTorch 版本。
-
安裝
flash_attn
:下載并安裝適合的flash_attn
的.whl
文件。 -
下載模型:使用 Hugging Face 或 ModelScope 下載模型到指定路徑。
-
安裝其他軟件包:手動安裝
addict
和datasets
等未列出但必需的包。 -
運行項目:創建輸出目錄并編寫運行腳本
run_video_generation.py
,封裝命令并運行。
補充說明
這是在Windows系統避坑部署過程,最終視頻 SkyworkAI/SkyReels-V2 的使用命令還需要進一步調試。