模型简介
模型特点
模型能力
使用案例
🚀 Open-Sora:让高效视频制作惠及大众
Open-Sora 是一项致力于高效制作高质量视频的计划。我们希望让所有人都能获取模型、工具及所有细节。通过秉持开源原则,Open-Sora 不仅让更多人能够使用先进的视频生成技术,还提供了一个简化视频生成复杂性的、高效且用户友好的平台。我们的目标是在内容创作领域促进创新、激发创造力并实现包容性发展。
Github: https://github.com/hpcaitech/Open-Sora
🚀 快速开始
📦 安装指南
创建虚拟环境并激活(以 conda 为例)
conda create -n opensora python=3.10
conda activate opensora
下载代码仓库
git clone https://github.com/hpcaitech/Open-Sora
cd Open-Sora
确保 torch 版本 >= 2.4.0
pip install -v . # 开发模式,也可使用 `pip install -v -e .`
pip install xformers==0.0.27.post2 --index-url https://download.pytorch.org/whl/cu121 # 根据你的 CUDA 版本安装 xformers
pip install flash-attn --no-build-isolation
可选:安装 flash attention 3 以提高速度
git clone https://github.com/Dao-AILab/flash-attention # 4f0640d5
cd flash-attention/hopper
python setup.py install
📥 模型下载
我们的 11B 模型支持 256px 和 768px 分辨率。一个模型同时支持文本到视频(T2V)和图像到视频(I2V)生成。🤗 Huggingface 🤖 ModelScope。
从 Huggingface 下载
pip install "huggingface_hub[cli]"
huggingface-cli download hpcai-tech/Open-Sora-v2 --local-dir ./ckpts
从 ModelScope 下载
pip install modelscope
modelscope download hpcai-tech/Open-Sora-v2 --local-dir ./ckpts
💻 使用示例
文本到视频生成
我们的模型针对图像到视频生成进行了优化,但也可用于文本到视频生成。为了生成高质量视频,借助 flux 文本到图像模型,我们构建了一个文本到图像再到视频的流水线。
256x256 分辨率
# 根据给定提示生成一个视频
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt "raining, sea"
# 从 csv 文件中读取提示进行生成
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_256px.py --save-dir samples --dataset.data-path assets/texts/example.csv
768x768 分辨率
# 单 GPU 运行
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_768px.py --save-dir samples --prompt "raining, sea"
# 使用 colossalai 序列并行进行多 GPU 运行
torchrun --nproc_per_node 8 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_768px.py --save-dir samples --prompt "raining, sea"
你可以通过 --aspect_ratio
调整生成视频的宽高比,通过 --num_frames
调整视频的帧数。宽高比的可选值包括 16:9
、9:16
、1:1
、2.39:1
。帧数的可选值应为 4k+1
且小于 129。
你也可以直接进行文本到视频生成:
# 256px 单 GPU 运行
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/256px.py --prompt "raining, sea"
# 768px 多 GPU 运行
torchrun --nproc_per_node 8 --standalone scripts/diffusion/inference.py configs/diffusion/inference/768px.py --prompt "raining, sea"
图像到视频生成
给定一个提示和一张参考图像,你可以使用以下命令生成视频:
# 256px 单 GPU 运行
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/256px.py --cond_type i2v_head --prompt "A plump pig wallows in a muddy pond on a rustic farm, its pink snout poking out as it snorts contentedly. The camera captures the pig's playful splashes, sending ripples through the water under the midday sun. Wooden fences and a red barn stand in the background, framed by rolling green hills. The pig's muddy coat glistens in the sunlight, showcasing the simple pleasures of its carefree life." --ref assets/texts/i2v.png
# 256px 从 csv 文件中读取提示进行生成
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/256px.py --cond_type i2v_head --dataset.data-path assets/texts/i2v.csv
# 768px 多 GPU 运行
torchrun --nproc_per_node 8 --standalone scripts/diffusion/inference.py configs/diffusion/inference/768px.py --cond_type i2v_head --dataset.data-path assets/texts/i2v.csv
✨ 主要特性
高级用法
运动分数
在训练过程中,我们会在文本提示中加入运动分数。在推理时,你可以使用以下命令生成带有运动分数的视频(默认分数为 4):
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt "raining, sea" --motion-score 4
我们还提供了一个动态运动分数评估器。设置好你的 OpenAI API 密钥后,你可以使用以下命令评估视频的运动分数:
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt "raining, sea" --motion-score dynamic
分数 | 1 | 4 | 7 |
---|---|---|---|
![]() |
![]() |
![]() |
提示优化
我们利用 ChatGPT 来优化提示。你可以使用以下命令优化提示。该功能在文本到视频和图像到视频生成中均可用:
export OPENAI_API_KEY=sk-xxxx
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt "raining, sea" --refine-prompt True
可重复性
为了使结果具有可重复性,你可以设置随机种子:
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt "raining, sea" --sampling_option.seed 42 --seed 42
使用 --num-sample k
为每个提示生成 k
个样本。
计算效率
我们在 H100/H800 GPU 上测试了文本到视频的计算效率。对于 256x256 分辨率,我们使用 colossalai 的张量并行;对于 768x768 分辨率,我们使用 colossalai 的序列并行。所有测试的步数均为 50。结果以 $\color{blue}{\text{总时间 (s)}}/\color{red}{\text{峰值 GPU 内存 (GB)}}$ 的格式呈现:
分辨率 | 1 个 GPU | 2 个 GPUs | 4 个 GPUs | 8 个 GPUs |
---|---|---|---|---|
256x256 | $\color{blue}{60}/\color{red}{52.5}$ | $\color{blue}{40}/\color{red}{44.3}$ | $\color{blue}{34}/\color{red}{44.3}$ | |
768x768 | $\color{blue}{1656}/\color{red}{60.3}$ | $\color{blue}{863}/\color{red}{48.3}$ | $\color{blue}{466}/\color{red}{44.3}$ | $\color{blue}{276}/\color{red}{44.3}$ |
评估
在 VBench 上,与 Open-Sora 1.2 相比,Open-Sora 2.0 显著缩小了与 OpenAI 的 Sora 的差距,从 4.52% 缩小到 0.69%。
人工偏好结果显示,我们的模型与 HunyuanVideo 14B 和 Step-Video 30B 相当。
📚 详细文档
🔆 报告
- Open-Sora 2.0 技术报告
- 逐步训练或微调你自己的模型
- 逐步训练和评估视频自动编码器
- 查看高压缩视频自动编码器
- 旧版本报告(建议在相应分支查看):
- Open-Sora 1.3:移位窗口注意力、统一时空 VAE 等。
- Open-Sora 1.2,技术报告:整流流、3D-VAE、分数条件、评估等。
- Open-Sora 1.1:多分辨率/长度/宽高比、图像/视频条件/编辑、数据预处理等。
- Open-Sora 1.0:架构、字幕等。
📍 由于 Open-Sora 正在积极开发中,我们为不同版本保留了不同的分支。最新版本是 main。旧版本包括:v1.0,v1.1,v1.2,v1.3。
🔧 技术细节
致谢
这里我们仅列出部分项目。其他工作和数据集请参考我们的报告。
- ColossalAI:一个强大的大模型并行加速和优化系统。
- DiT:基于 Transformer 的可扩展扩散模型。
- OpenDiT:DiT 训练的加速方案。我们从 OpenDiT 中采用了有价值的加速策略来推进训练过程。
- PixArt:一个基于 DiT 的开源文本到图像模型。
- Flux:一个强大的文本到图像生成模型。
- Latte:一种高效训练 DiT 用于视频的尝试。
- HunyuanVideo:开源文本到视频模型。
- StabilityAI VAE:一个强大的图像 VAE 模型。
- DC-AE:用于图像压缩的深度压缩自动编码器。
- CLIP:一个强大的文本 - 图像嵌入模型。
- T5:一个强大的文本编码器。
- LLaVA:一个基于 Mistral-7B 和 Yi-34B 的强大图像字幕模型。
- PLLaVA:一个强大的视频字幕模型。
- MiraData:一个大规模、长时长且带有结构化字幕的视频数据集。
引用
@software{opensora,
author = {Zangwei Zheng and Xiangyu Peng and Tianji Yang and Chenhui Shen and Shenggui Li and Hongxin Liu and Yukun Zhou and Tianyi Li and Yang You},
title = {Open-Sora: Democratizing Efficient Video Production for All},
month = {March},
year = {2024},
url = {https://github.com/hpcaitech/Open-Sora}
}
贡献
感谢这些优秀的贡献者:
如果你想为这个项目做出贡献,请参考 贡献指南。
📄 许可证
本项目采用 Apache-2.0 许可证。
星标历史



