Instructions to use STEFTM/Open-Sora-v2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Open-Sora
How to use STEFTM/Open-Sora-v2 with Open-Sora:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
| license: apache-2.0 | |
| pipeline_tag: text-to-video | |
| library_name: open-sora | |
| ## Open-Sora: Democratizing Efficient Video Production for All | |
| We design and implement **Open-Sora**, an initiative dedicated to **efficiently** producing high-quality video. We hope to make the model, | |
| tools and all details accessible to all. By embracing **open-source** principles, | |
| Open-Sora not only democratizes access to advanced video generation techniques, but also offers a | |
| streamlined and user-friendly platform that simplifies the complexities of video generation. | |
| With Open-Sora, our goal is to foster innovation, creativity, and inclusivity within the field of content creation. | |
| [Paper](https://huggingface.co/papers/2503.09642) | |
| Github: https://github.com/hpcaitech/Open-Sora | |
| ## 🔆 Reports | |
| - **[Tech Report of Open-Sora 2.0](https://github.com/hpcaitech/Open-Sora-Demo/blob/main/paper/Open_Sora_2_tech_report.pdf)** | |
| - **[Step by step to train or finetune your own model](docs/train.md)** | |
| - **[Step by step to train and evaluate an video autoencoder](docs/ae.md)** | |
| - **[Visit the high compression video autoencoder](docs/hcae.md)** | |
| - Reports of previous version (better see in according branch): | |
| - [Open-Sora 1.3](docs/report_04.md): shift-window attention, unified spatial-temporal VAE, etc. | |
| - [Open-Sora 1.2](docs/report_03.md), [Tech Report](https://arxiv.org/abs/2412.20404): rectified flow, 3d-VAE, score condition, evaluation, etc. | |
| - [Open-Sora 1.1](docs/report_02.md): multi-resolution/length/aspect-ratio, image/video conditioning/editing, data preprocessing, etc. | |
| - [Open-Sora 1.0](docs/report_01.md): architecture, captioning, etc. | |
| 📍 Since Open-Sora is under active development, we remain different branchs for different versions. The latest version is [main](https://github.com/hpcaitech/Open-Sora). Old versions include: [v1.0](https://github.com/hpcaitech/Open-Sora/tree/opensora/v1.0), [v1.1](https://github.com/hpcaitech/Open-Sora/tree/opensora/v1.1), [v1.2](https://github.com/hpcaitech/Open-Sora/tree/opensora/v1.2), [v1.3](https://github.com/hpcaitech/Open-Sora/tree/opensora/v1.3). | |
| ## Quickstart | |
| ### Installation | |
| ```bash | |
| # 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 | |
| ``` | |
| Optionally, you can install flash attention 3 for faster speed. | |
| ```bash | |
| git clone https://github.com/Dao-AILab/flash-attention # 4f0640d5 | |
| cd flash-attention/hopper | |
| python setup.py install | |
| ``` | |
| ### Model Download | |
| Our 11B model supports 256px and 768px resolution. Both T2V and I2V are supported by one model. 🤗 [Huggingface](https://huggingface.co/hpcai-tech/Open-Sora-v2) 🤖 [ModelScope](https://modelscope.cn/models/luchentech/Open-Sora-v2). | |
| Download from huggingface: | |
| ```bash | |
| pip install "huggingface_hub[cli]" | |
| huggingface-cli download hpcai-tech/Open-Sora-v2 --local-dir ./ckpts | |
| ``` | |
| Download from ModelScope: | |
| ```bash | |
| pip install modelscope | |
| modelscope download hpcai-tech/Open-Sora-v2 --local_dir ./ckpts | |
| ``` | |
| ### Text-to-Video Generation | |
| Our model is optimized for image-to-video generation, but it can also be used for text-to-video generation. To generate high quality videos, with the help of flux text-to-image model, we build a text-to-image-to-video pipeline. For 256x256 resolution: | |
| ```bash | |
| # 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 | |
| ``` | |
| For 768x768 resolution: | |
| ```bash | |
| # 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" | |
| ``` | |
| You can adjust the generation aspect ratio by `--aspect_ratio` and the generation length by `--num_frames`. Candidate values for aspect_ratio includes `16:9`, `9:16`, `1:1`, `2.39:1`. Candidate values for num_frames should be `4k+1` and less than 129. | |
| You can also run direct text-to-video by: | |
| ```bash | |
| # 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" | |
| ``` | |
| ### Image-to-Video Generation | |
| Given a prompt and a reference image, you can generate a video with the following command: | |
| ```bash | |
| # 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 | |
| ``` | |
| ## Advanced Usage | |
| ### Motion Score | |
| During training, we provide motion score into the text prompt. During inference, you can use the following command to generate videos with motion score (the default score is 4): | |
| ```bash | |
| 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 | |
| ``` | |
| We also provide a dynamic motion score evaluator. After setting your OpenAI API key, you can use the following command to evaluate the motion score of a video: | |
| ```bash | |
| 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 | |
| ``` | |
| | Score | 1 | 4 | 7 | | |
| | ----- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | | |
| | | <img src="https://github.com/hpcaitech/Open-Sora-Demo/blob/main/demo/v2.0/motion_score_1.gif" width=""> | <img src="https://github.com/hpcaitech/Open-Sora-Demo/blob/main/demo/v2.0/motion_score_4.gif" width=""> | <img src="https://github.com/hpcaitech/Open-Sora-Demo/blob/main/demo/v2.0/motion_score_7.gif" width=""> | | |
| ### Prompt Refine | |
| We take advantage of ChatGPT to refine the prompt. You can use the following command to refine the prompt. The function is available for both text-to-video and image-to-video generation. | |
| ```bash | |
| 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 | |
| ``` | |
| ### Reproductivity | |
| To make the results reproducible, you can set the random seed by: | |
| ```bash | |
| 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 | |
| ``` | |
| Use `--num-sample k` to generate `k` samples for each prompt. | |
| ## Computational Efficiency | |
| We test the computational efficiency of text-to-video on H100/H800 GPU. For 256x256, we use colossalai's tensor parallelism. For 768x768, we use colossalai's sequence parallelism. All use number of steps 50. The results are presented in the format: $\color{blue}{\text{Total time (s)}}/\color{red}{\text{peak GPU memory (GB)}}$ | |
| | Resolution | 1x GPU | 2x GPUs | 4x GPUs | 8x 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}$ | | |
| ## Evaluation | |
| On [VBench](https://huggingface.co/spaces/Vchitect/VBench_Leaderboard), Open-Sora 2.0 significantly narrows the gap with OpenAI’s Sora, reducing it from 4.52% → 0.69% compared to Open-Sora 1.2. | |
|  | |
| Human preference results show our model is on par with HunyuanVideo 14B and Step-Video 30B. | |
|  | |
| ## Contribution | |
| Thanks goes to these wonderful contributors: | |
| <a href="https://github.com/hpcaitech/Open-Sora/graphs/contributors"> | |
| <img src="https://contrib.rocks/image?repo=hpcaitech/Open-Sora" /> | |
| </a> | |
| If you wish to contribute to this project, please refer to the [Contribution Guideline](./CONTRIBUTING.md). | |
| ## Acknowledgement | |
| Here we only list a few of the projects. For other works and datasets, please refer to our report. | |
| - [ColossalAI](https://github.com/hpcaitech/ColossalAI): A powerful large model parallel acceleration and optimization | |
| system. | |
| - [DiT](https://github.com/facebookresearch/DiT): Scalable Diffusion Models with Transformers. | |
| - [OpenDiT](https://github.com/NUS-HPC-AI-Lab/OpenDiT): An acceleration for DiT training. We adopt valuable acceleration | |
| strategies for training progress from OpenDiT. | |
| - [PixArt](https://github.com/PixArt-alpha/PixArt-alpha): An open-source DiT-based text-to-image model. | |
| - [Flux](https://github.com/black-forest-labs/flux): A powerful text-to-image generation model. | |
| - [Latte](https://github.com/Vchitect/Latte): An attempt to efficiently train DiT for video. | |
| - [HunyuanVideo](https://github.com/Tencent/HunyuanVideo/tree/main?tab=readme-ov-file): Open-Source text-to-video model. | |
| - [StabilityAI VAE](https://huggingface.co/stabilityai/sd-vae-ft-mse-original): A powerful image VAE model. | |
| - [DC-AE](https://github.com/mit-han-lab/efficientvit): Deep Compression AutoEncoder for image compression. | |
| - [CLIP](https://github.com/openai/CLIP): A powerful text-image embedding model. | |
| - [T5](https://github.com/google-research/text-to-text-transfer-transformer): A powerful text encoder. | |
| - [LLaVA](https://github.com/haotian-liu/LLaVA): A powerful image captioning model based on [Mistral-7B](https://huggingface.co/mistralai/Mistral-7B-v0.1) and [Yi-34B](https://huggingface.co/01-ai/Yi-34B). | |
| - [PLLaVA](https://github.com/magic-research/PLLaVA): A powerful video captioning model. | |
| - [MiraData](https://github.com/mira-space/MiraData): A large-scale video dataset with long durations and structured caption. | |
| ## Citation | |
| ```bibtex | |
| @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} | |
| } | |
| ``` | |
| ## Star History | |
| [](https://star-history.com/#hpcaitech/Open-Sora&Date) |