模型概述
模型特點
模型能力
使用案例
🚀 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 許可證。
星標歷史



