编程 Open-Sora 2.0 开源 11B 视频模型:权重和训练代码全放开,20 万美元训完

2026-09-11 23:46:26

Open-Sora 2.0 开源 11B 视频模型:权重和训练代码全放开,20 万美元训完

项目信息

它是什么

Open-Sora 是潞晨科技(HPC-AI Tech)维护的开源视频生成项目,目标是压低视频生成模型的训练与使用门槛。2.0 版在 2025-03-12 发布:11B 参数,一个模型同时支持文生视频(T2V)和图生视频(I2V),覆盖 256px 与 768px 两档分辨率,权重和训练代码都开源。

版本推进得很快,各版本要点:

版本时间关键变化
1.02024-03-18全流程开源(数据预处理、训练、推理),2s 512×512,3 天训练
1.12024-04-252s15s、144p720p、任意宽高比;支持 T2V/I2V/V2V 与无限时长
1.22024-06-17引入 3D-VAE、rectified flow、score condition,画质明显提升
1.32025-02-201B 模型,新版 VAE 与 Transformer 架构
2.02025-03-1211B,768px,T2V/I2V 共用权重,训练成本约 20 万美元

老版本按分支保留:opensora/v1.0/v1.1/v1.2/v1.3,主分支 main 是最新版。想复现旧结论就得切到对应分支,README 对不同分支的文档、权重都有说明。

2.0 的数字

  • 11B 参数,256px / 768px 两档,T2V 与 I2V 一个模型搞定。
  • 在 VBench 上与 11B 的 HunyuanVideo、30B 的 Step-Video 表现大致同级;与 OpenAI Sora 的差距从 Open-Sora 1.2 的 4.52% 收窄到 0.69%
  • 官方称训练一个商用级视频生成模型只需 约 20 万美元,并公开了训练代码与 checkpoint。

这两条是它和「只放权重、不放训练细节」的模型最大的区别。

安装

环境要求 Python 3.10、torch >= 2.4.0

# 建虚拟环境(以 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 版本选
pip install flash-attn --no-build-isolation

xformers 的 index-url 要按本机 CUDA 版本换,照抄 cu121 容易装不上。可选装 FlashAttention 3 提速:

git clone https://github.com/Dao-AILab/flash-attention   # 4f0640d5
cd flash-attention/hopper
python setup.py install

下载权重

# Hugging Face
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

推理

文生视频

官方说明模型本身对 I2V 优化得更好,T2V 走的是「文本 → 图片 → 视频」的 t2i2v 管线,中间借了 Flux 文生图模型。256px:

# 单条 prompt
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py \
  configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt "raining, sea"

# 显存不够时开启 offload
torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py \
  configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt "raining, sea" --offload True

# 批量:走 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

768px:

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

# 8 卡,colossalai 序列并行
torchrun --nproc_per_node 8 --standalone scripts/diffusion/inference.py \
  configs/diffusion/inference/t2i2v_768px.py --save-dir samples --prompt "raining, sea"

想跳过中间的文生图,也可以直接跑纯 T2V(configs/diffusion/inference/256px.py / 768px.py)。

参数上有两个硬限制:

  • --aspect_ratio 候选值只有 16:99:161:12.39:1
  • --num_frames 必须是 4k+1,且小于 129。

图生视频

# 256px,单图 + prompt
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, ..." \
  --ref assets/texts/i2v.png

# 256px,批量
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 多卡
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

几个进阶开关

训练时把 motion score 写进了文本 prompt,推理时可以显式指定,默认是 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

打分也能交给模型动态评(--motion-score dynamic),需要 OpenAI API key。同理还有 prompt 改写:

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

要可复现结果就固定种子;--num-sample k 会给每条 prompt 生成 k 个样本:

... --sampling_option.seed 42 --seed 42

耗时与显存

官方在 H100/H800 上测的 T2V 数据,格式是「总耗时(s) / 峰值显存(GB)」,步数都是 50。256px 用 colossalai 张量并行并开 --offload True,768px 用序列并行:

分辨率1 卡2 卡4 卡8 卡
256×25660 / 52.540 / 44.334 / 44.3
768×7681656 / 60.3863 / 48.3466 / 44.3276 / 44.3

768px 的账很清楚:单卡出片要 27 分钟以上、吃 60GB 显存,8 卡才压到 4 分半。256px 单卡 1 分钟能出,显存也要 52.5GB,量级上不是消费级卡能硬扛的。

自己训练

README 指向三份文档,按需要跳:

需要注意的地方

  • README 未给出消费级显卡上的可跑性说明,实测数据都来自 H100/H800;想在单张 4090 上跑 768px,先按上面的显存表估算,别抱侥幸。
  • --offload True 是拿时间换显存,256px 单卡那档的 60s 是开/不开 offload 之外还要看具体配置,自己测一遍更稳。
  • motion score、prompt refine、dynamic 评分都依赖 OpenAI API key,纯离线环境里这几个开关用不了。
  • 版本迭代很快,README 的安装与推理命令跟着 main 分支走;拿 1.x 的旧命令跑 2.0 大概率对不上。

推荐文章

程序员茄子在线接单