#工作记录
前言
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 的使用命令还需要进一步调试。