Open-Sora

在这里插入图片描述


一、关于 Open-Sora

Open-Sora潞晨科技 设计并实施,这是一项致力于高效制作高质量视频的计划。希望让所有人都能使用模型、工具和所有细节。
通过采用开源原则,Open-Sora 不仅使高级视频生成技术的使用变得民主化,而且还提供了一个简化且用户友好的平台,简化了视频生成的复杂性。
借助 Open-Sora,我们的目标是在内容创作领域促进创新、创造力和包容性。


其他有用的文档和链接。


📰 资讯

详见:https://github.com/hpcaitech/Open-Sora/blob/main/docs/zh_CN/README.md#-资讯


最新的 Demo 🎥

🔥 您可以在HuggingFace上的 🤗 Gradio应用程序上体验Open-Sora. 我们的画廊中提供了更多示例.

4s 720×12804s 720×12804s 720×1280
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二、安装


1、从源头安装

对于 CUDA 12.1,您可以使用以下命令安装依赖项。否则,请参阅安装以获取有关不同 cuda 版本的更多说明以及数据预处理的其他依赖项。

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

# install torch, torchvision and xformers
pip install -r requirements/requirements-cu121.txt

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

# the default installation is for inference only
pip install -v . # for development mode, `pip install -v -e .`

(Optional, recommended for fast speed, especially for training) To enable `layernorm_kernel` and `flash_attn`, you need to install `apex` and `flash-attn` with the following commands.

```bash
# install flash attention
# set enable_flash_attn=False in config to disable flash attention
pip install packaging ninja
pip install flash-attn --no-build-isolation

# install apex
# set enable_layernorm_kernel=False in config to disable apex
pip install -v --disable-pip-version-check --no-cache-dir --no-build-isolation --config-settings "--build-option=--cpp_ext" --config-settings "--build-option=--cuda_ext" git+https://github.com/NVIDIA/apex.git

2、使用Docker

运行以下命令从提供的Dockerfile 构建docker 镜像。

docker build -t opensora .

运行以下命令以交互模式启动docker容器。

docker run -ti --gpus all -v .:/workspace/Open-Sora opensora

三、模型权重


Open-Sora 1.2 模型权重

分辨率模型大小数据迭代次数批次大小网址
Diffusion1.1B30M70k动态大小🔗
VAE384M3M1M8🔗

请参阅我们的**report 1.2**以了解更多信息。


四、Gradio演示

🔥 您可以在Hugging Face 上的🤗 Gradio 应用程序上在线体验Open-Sora。【由于GPU资源不足,已失效】


1、本地部署

如果您想在本地部署 gradio,我们还在这个存储库中提供了一个Gradio 应用程序 ,您可以使用以下命令启动一个交互式 Web 应用程序来体验使用 Open-Sora 生成视频。

pip install gradio spaces
python gradio/app.py

这将在您的本地主机上启动 Gradio 应用程序。如果您想了解有关 Gradio 应用程序的更多信息,可以参考Gradio README

要启用提示增强和其他语言输入(例如中文输入),您需要OPENAI_API_KEY在环境中进行设置。查看OpenAI的文档以获取您的 API 密钥。

export OPENAI_API_KEY=YOUR_API_KEY

2、入门

在 Gradio 应用程序中,基本选项如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

生成视频最简单的方式是输入文本提示,然后点击“生成视频”按钮(如果找不到,请向下滚动)。生成的视频将显示在右侧面板中。勾选“使用 GPT4o 增强提示”将使用 GPT-4o 来细化提示,而“随机提示”按钮将由 GPT-4o 为您生成随机提示。由于 OpenAI 的 API 限制,提示细化结果具有一定的随机性。

然后,你可以选择生成视频的分辨率时长长宽比。不同的分辨率和视频长度会影响视频生成速度。在 80G H100 GPU 上,生成速度和峰值内存使用量为:

分辨率图像2秒4秒8秒16秒
360p3s, 24G18s, 27G31s, 27G62s, 28G121s, 33G
480p2s, 24G29s, 31G55s, 30G108s, 32G219s, 36G
720p6s, 27G68s, 41G130s, 39G260s, 45G547s, 67G

注意,除了文本转视频,你还可以使用图片转视频。你可以上传图片,然后点击“生成视频”按钮,生成以图片为第一帧的视频。或者,你可以填写文本提示,然后点击“生成图片”按钮,根据文本提示生成图片,然后点击“生成视频”按钮,根据同一模型生成的图片生成视频。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后您可以指定更多选项,包括“运动强度”、“美学”和“相机运动”。如果未选中“启用”或选择“无”,则不会将信息传递给模型。否则,模型将生成具有指定运动强度、美学分数和相机运动的视频。

对于美学分数,我们建议使用高于 6 的值。对于运动强度,较小的值将导致更平滑但动态性较差的视频,而较大的值将导致更动态但可能更模糊的视频。因此,您可以尝试不使用它,然后根据生成的视频进行调整。对于相机运动,有时模型无法很好地遵循指令,我们正在努力改进它。

您还可以调整“采样步数”,这是去噪的次数,与生成速度直接相关。小于 30 的数字通常会导致较差的生成结果,而大于 100 的数字通常不会有明显的改善。“种子”用于可重复性,您可以将其设置为固定数字以生成相同的视频。“CFG 比例”控制模型遵循文本提示的程度,较小的值会导致视频更随机,而较大的值会导致视频更遵循文本(建议为 7)。

对于更高级的用法,您可以参考Gradio README.


五、推理


1、Open-Sora 1.2 命令行推理

基础的命令行推理:

# text to video
python scripts/inference.py configs/opensora-v1-2/inference/sample.py \
  --num-frames 4s --resolution 720p --aspect-ratio 9:16 \
  --prompt "a beautiful waterfall"

您可以向命令行添加更多选项来定制生成。

python scripts/inference.py configs/opensora-v1-2/inference/sample.py \
  --num-frames 4s --resolution 720p --aspect-ratio 9:16 \
  --num-sampling-steps 30 --flow 5 --aes 6.5 \
  --prompt "a beautiful waterfall"

对于图像到视频生成和其他功能,API 与 Open-Sora 1.1 兼容。请参阅[此处]](commands.md)了解更多说明。

如果您的安装不包含 apexflash-attn, 则需要在配置文件中或通过以下命令禁用它们。

python scripts/inference.py configs/opensora-v1-2/inference/sample.py \
  --num-frames 4s --resolution 720p \
  --layernorm-kernel False --flash-attn False \
  --prompt "a beautiful waterfall"

2、序列并行推理

要启用序列并行,您需要使用 torchrun 来运行推理脚本。以下命令将使用 2 个 GPU 运行推理。

# text to video
CUDA_VISIBLE_DEVICES=0,1 torchrun --nproc_per_node 2 scripts/inference.py configs/opensora-v1-2/inference/sample.py \
  --num-frames 4s --resolution 720p --aspect-ratio 9:16 \
  --prompt "a beautiful waterfall"

⚠️ 注意: gradio 部署不支持序列并行。目前,只有当维度可以除以 GPU 数量时才支持序列并行。因此,在某些情况下可能会失败。我们测试了 4 个 GPU 用于 720p 和 2 个 GPU 用于 480p。


3、GPT-4o 快速细化

我们发现 GPT-4o 可以细化提示并提高生成视频的质量。利用此功能,您还可以使用其他语言(例如中文)作为提示。要启用此功能,您需要在环境中准备您的 openai api 密钥:

export OPENAI_API_KEY=YOUR_API_KEY

然后您可以用 --llm-refine True 启用GPT-4o进行提示细化以完成推理。


六、数据处理

高质量的数据对于训练良好的生成模型至关重要。为此,我们建立了完整的数据处理流程,可以将原始视频无缝转换为高质量的视频-文本对。流程如下所示。有关详细信息,请参阅数据处理。另请查看我们使用的数据集

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


七、训练


Open-Sora 1.2 训练

训练过程与Open-Sora 1.1相同。

# one node
torchrun --standalone --nproc_per_node 8 scripts/train.py \
    configs/opensora-v1-2/train/stage1.py --data-path YOUR_CSV_PATH --ckpt-path YOUR_PRETRAINED_CKPT
# multiple nodes
colossalai run --nproc_per_node 8 --hostfile hostfile scripts/train.py \
    configs/opensora-v1-2/train/stage1.py --data-path YOUR_CSV_PATH --ckpt-path YOUR_PRETRAINED_CKPT

八、评估

我们支持基于以下方面的评估:

  • 验证损失
  • VBenchh分数
  • VBench-i2v 分数
  • 批量生成以供人工评估 所有评估代码均发布在 eval文件夹中。查看README了解更多详细信息。我们的 技术报告还提供了有关训练期间评估的更多信息。下表显示 Open-Sora 1.2 大大改进了 Open-Sora 1.0。
模型总得分质量得分语义得分
Open-Sora V1.075.91%78.81%64.28%
Open-Sora V1.279.23%80.71%73.30%

九、VAE 训练与评估

我们训练一个由空间 VAE 和时间 VAE 组成的 VAE 管道。有关更多详细信息,请参阅VAE 文档。在运行以下命令之前,请按照我们的安装文档安装 VAE 和评估所需的依赖项。

如果您想训练自己的 VAE,我们需要按照数据处理流程在 csv 中准备数据,然后运行以下命令。请注意,您需要根据自己的 csv 数据大小相应地调整配置文件中的训练epochs数量。

# stage 1 training, 380k steps, 8 GPUs
torchrun --nnodes=1 --nproc_per_node=8 scripts/train_vae.py configs/vae/train/stage1.py --data-path YOUR_CSV_PATH
# stage 2 training, 260k steps, 8 GPUs
torchrun --nnodes=1 --nproc_per_node=8 scripts/train_vae.py configs/vae/train/stage2.py --data-path YOUR_CSV_PATH
# stage 3 training, 540k steps, 24 GPUs
torchrun --nnodes=3 --nproc_per_node=8 scripts/train_vae.py configs/vae/train/stage3.py --data-path YOUR_CSV_PATH

为了评估 VAE 的性能,您需要首先运行 VAE 推理来生成视频,然后计算生成的视频的分数:

# video generation
torchrun --standalone --nnodes=1 --nproc_per_node=1 scripts/inference_vae.py configs/vae/inference/video.py --ckpt-path YOUR_VAE_CKPT_PATH --data-path YOUR_CSV_PATH --save-dir YOUR_VIDEO_DIR
# the original videos will be saved to `YOUR_VIDEO_DIR_ori`
# the reconstructed videos through the pipeline will be saved to `YOUR_VIDEO_DIR_rec`
# the reconstructed videos through the spatial VAE only will be saved to `YOUR_VIDEO_DIR_spatial`

# score calculation
python eval/vae/eval_common_metric.py --batch_size 2 --real_video_dir YOUR_VIDEO_DIR_ori --generated_video_dir YOUR_VIDEO_DIR_rec --device cuda --sample_fps 24 --crop_size 256 --resolution 256 --num_frames 17 --sample_rate 1 --metric ssim psnr lpips flolpips

2024-07-20(六)

### 部署 SORA 的方法和配置教程 #### 1. 克隆 Open-Sora 项目仓库 为了在本地环境中部署 SORA,第一步是从 GitHub 上克隆项目的官方存储库。这可以通过执行以下命令完成: ```bash git clone https://github.com/hpcaitech/Open-Sora.git cd Open-Sora ``` 此操作会将整个 Open-Sora 项目下载到用户的计算机中[^1]。 --- #### 2. 创建并激活虚拟环境 建议创建一个独立的 Python 虚拟环境来管理依赖项。以下是设置虚拟环境的方法: ```bash python3 -m venv sora-env source sora-env/bin/activate ``` 通过这种方式,可以避免与其他项目发生版本冲突,并确保所需的包能够正常运行。 --- #### 3. 安装必要的依赖项 进入 `Open-Sora` 文件夹后,需安装项目所需的所有依赖项。通常这些依赖会被列在一个名为 `requirements.txt` 的文件中。如果存在该文件,则可通过以下命令安装所有必需的软件包: ```bash pip install --upgrade pip pip install -r requirements.txt ``` 如果没有提供 `requirements.txt` 文件,则可能需要手动查阅文档以获取具体需求列表。 --- #### 4. 环境变量与配置调整 某些情况下,Open-Sora 可能需要额外的环境变量或特定参数来进行初始化。例如,在多 GPU 训练场景下,用户应确认硬件支持情况以及分布式训练框架(如 PyTorch DDP 或 TensorFlow MirroredStrategy)是否已正确定义[^2]。 对于高级功能的支持,比如大规模 GPU 并行化处理,开发者应当仔细阅读相关部分说明,理解其对计算资源的要求及其优化策略。 --- #### 5. 启动服务或测试脚本 一旦上述准备工作全部就绪,就可以尝试启动核心组件或者运行一些简单的验证程序。一般而言,项目根目录下的 README.md 文件会给出具体的指令集;按照指示逐步操作即可成功加载基础架构。 假设有一个默认入口点叫做 `main.py` ,那么可以直接调用如下方式检验基本逻辑是否通畅: ```bash python main.py ``` 当然实际名称可能会有所不同,请参照官方指引为准。 --- #### 6. 性能评估与调试 最后一步涉及性能监控及潜在错误排查工作。由于 Open-Sora 支持高效的模型训练机制,因此当遇到任何异常状况时,务必优先检查日志记录信息以便快速定位问题所在位置。 此外,考虑到成本效益平衡关系,合理规划可用算力分配显得尤为重要——即如何利用有限预算达到最佳效果也是值得深入探讨的话题之一。 --- ### 提供一段代码示例用于初步体验 下面展示了一个简化版的例子用来帮助初学者熟悉流程概览: ```python from open_sora import Trainer, ModelConfig config = ModelConfig( learning_rate=0.001, batch_size=32, epochs=10 ) trainer = Trainer(config=config) trainer.train() ``` 注意以上仅为示意片段,真实环境下还需补充更多细节设定才能满足复杂应用场景的需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程乐园

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值