HuggingFace镜像/Open-Sora-v2
模型介绍文件和版本分析
下载使用量0

Open-Sora:让高效视频创作普及大众

我们设计并实现了Open-Sora,这是一项致力于高效生成高质量视频的计划。我们希望将模型、工具及所有细节开放给所有人。秉持开源理念,Open-Sora不仅让先进的视频生成技术得以普及,还提供了一个简化视频生成复杂性的、流线型且用户友好的平台。借助Open-Sora,我们旨在促进内容创作领域的创新、创造力与包容性。

论文

Github:https://github.com/hpcaitech/Open-Sora

🔆 报告

  • 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。

快速入门

安装

# create a virtual env and activate (conda as an example)
conda create -n opensora python=3.10
conda activate opensora

# download the repo
git clone https://github.com/hpcaitech/Open-Sora
cd Open-Sora

# Ensure torch >= 2.4.0
pip install -v . # for development mode, `pip install -v -e .`
pip install xformers==0.0.27.post2 --index-url https://download.pytorch.org/whl/cu121 # install xformers according to your cuda version
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 分辨率:

# Generate one given prompt
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt "raining, sea"

# Generation with 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 分辨率:

# One GPU
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_768px.py --save-dir samples --prompt "raining, sea"

# Multi-GPU with colossalai sp
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。

您也可以直接运行文本转视频:

# One GPU for 256px
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/256px.py --prompt "raining, sea"
# Multi-GPU for 768px
torchrun --nproc_per_node 8 --standalone scripts/diffusion/inference.py configs/diffusion/inference/768px.py --prompt "raining, sea"

图像转视频生成

给定提示词和参考图像,您可以使用以下命令生成视频:

# 256px
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 with 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

# Multi-GPU 768px
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
分数147

提示词优化

我们借助 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 步。结果以 总时间(秒)/峰值 GPU 内存(GB)\color{blue}{\text{总时间(秒)}}/\color{red}{\text{峰值 GPU 内存(GB)}}总时间(秒)/峰值 GPU 内存(GB) 格式呈现。

分辨率1x GPU2x GPUs4x GPUs8x GPUs
256x25660/52.5\color{blue}{60}/\color{red}{52.5}60/52.540/44.3\color{blue}{40}/\color{red}{44.3}40/44.334/44.3\color{blue}{34}/\color{red}{44.3}34/44.3
768x7681656/60.3\color{blue}{1656}/\color{red}{60.3}1656/60.3863/48.3\color{blue}{863}/\color{red}{48.3}863/48.3466/44.3\color{blue}{466}/\color{red}{44.3}466/44.3276/44.3\color{blue}{276}/\color{red}{44.3}276/44.3

评估

在 VBench 上,Open-Sora 2.0 显著缩小了与 OpenAI Sora 的差距,与 Open-Sora 1.2 相比,差距从 4.52% 降至 0.69%。

VBench

人类偏好结果显示,我们的模型与 HunyuanVideo 14B 和 Step-Video 30B 相当。

Win Rate

贡献者

感谢以下杰出的贡献者:

如果您希望为该项目做出贡献,请参考 贡献指南。

致谢

这里我们仅列出部分项目。其他相关工作和数据集,请参考我们的报告。

  • ColossalAI:一个强大的大模型并行加速与优化系统。
  • DiT:基于 Transformer 的可扩展扩散模型。
  • OpenDiT:DiT 训练的加速工具。我们从 OpenDiT 中借鉴了有价值的训练加速策略。
  • PixArt:一个开源的基于 DiT 的文本到图像模型。
  • Flux:一个强大的文本到图像生成模型。
  • Latte:高效训练视频 DiT 的尝试。
  • HunyuanVideo:开源文本到视频模型。
  • StabilityAI VAE:一个强大的图像 VAE 模型。
  • DC-AE:用于图像压缩的深度压缩自编码器。
  • CLIP:一个强大的文本-图像嵌入模型。
  • T5:一个强大的文本编码器。
  • LLaVA:一个基于 Mistral-7B 和 Yi-34B 的强大图像 captioning 模型。
  • PLLaVA:一个强大的视频 captioning 模型。
  • MiraData:一个具有长时长和结构化 caption 的大规模视频数据集。

引用

@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}
}

星标历史

星标历史图表