许可证:Apache-2.0
流水线标签:文本转视频
库名称:open-sora
Open-Sora:为所有人普及高效视频制作
我们设计并实现了Open-Sora,这一项目致力于高效生成高质量视频。我们希望让模型、工具及所有细节对所有人开放。秉承开源精神,Open-Sora不仅降低了先进视频生成技术的使用门槛,还提供了一个简洁易用的平台,简化了视频生成的复杂性。通过Open-Sora,我们的目标是推动内容创作领域的创新、创造力和包容性。
论文
GitHub:https://github.com/hpcaitech/Open-Sora
🔆 报告
📍 由于Open-Sora正在积极开发中,我们为不同版本保留了不同分支。最新版本为main。旧版本包括:v1.0、v1.1、v1.2、v1.3。
快速开始
安装
conda create -n opensora python=3.10
conda activate opensora
git clone https://github.com/hpcaitech/Open-Sora
cd Open-Sora
pip install -v .
pip install xformers==0.0.27.post2 --index-url https://download.pytorch.org/whl/cu121
pip install flash-attn --no-build-isolation
可选:安装Flash Attention 3以提升速度。
git clone https://github.com/Dao-AILab/flash-attention
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 "下雨的海面"
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分辨率:
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_768px.py --save-dir samples --prompt "下雨的海面"
torchrun --nproc_per_node 8 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_768px.py --save-dir samples --prompt "下雨的海面"
可通过--aspect_ratio
调整宽高比,--num_frames
调整视频长度。宽高比可选值:16:9
、9:16
、1:1
、2.39:1
。帧数应为4k+1
且不超过129。
也可直接运行文本转视频:
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/256px.py --prompt "下雨的海面"
torchrun --nproc_per_node 8 --standalone scripts/diffusion/inference.py configs/diffusion/inference/768px.py --prompt "下雨的海面"
图像转视频生成
给定提示词和参考图像,可通过以下命令生成视频:
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/256px.py --cond_type i2v_head --prompt "一只圆滚滚的猪在农场的泥塘里打滚,粉色的鼻子在阳光下满足地哼叫。镜头捕捉到它欢快的溅水,涟漪在正午的阳光下荡漾。木栅栏和红色谷仓映衬着起伏的绿色山丘,猪的泥泞皮毛在阳光下闪闪发亮,展现它无忧无虑生活的简单快乐。" --ref assets/texts/i2v.png
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
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 "下雨的海面" --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 "下雨的海面" --motion-score dynamic
提示词优化
我们利用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 "下雨的海面" --refine-prompt True
可复现性
为确保结果可复现,可通过以下命令设置随机种子:
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt "下雨的海面" --sampling_option.seed 42 --seed 42
使用--num-sample k
为每个提示生成k
个样本。
计算效率
我们在H100/H800 GPU上测试了文本转视频的计算效率。256x256分辨率使用ColossalAI张量并行,768x768使用序列并行。总步数为50。结果格式:$\color{blue}{\text{总时间(秒)}}/\color{red}{\text{峰值GPU内存(GB)}}$
分辨率 |
1 GPU |
2 GPU |
4 GPU |
8 GPU |
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 2.0显著缩小了与OpenAI Sora的差距,相比Open-Sora 1.2从4.52%→0.69%。

人工偏好评估显示,我们的模型与HunyuanVideo 14B和Step-Video 30B表现相当。

贡献
感谢这些优秀的贡献者:
如需参与贡献,请参考贡献指南。
致谢
此处仅列出部分项目,其他工作和数据集请参阅报告。
- ColossalAI:强大的大模型并行加速与优化系统。
- DiT:基于Transformer的可扩展扩散模型。
- OpenDiT:DiT训练加速器。我们从OpenDiT采纳了宝贵的训练加速策略。
- PixArt:开源的基于DiT的文本转图像模型。
- Flux:强大的文本转图像生成模型。
- Latte:高效训练视频DiT的尝试。
- HunyuanVideo:开源的文本转视频模型。
- [StabilityAI VAE](https://huggingface.co/stabilityai/sd-vae-