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×1280 4s 720×1280 4s 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 模型权重

分辨率 模型大小 数据 迭代次数 批次大小 网址
Diffusion 1.1B 30M 70k 动态大小 🔗
VAE 384M 3M 1M 8 🔗

请参阅我们的**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秒
360p 3s, 24G 18s, 27G 31s, 27G 62s, 28G 121s, 33G
480p 2s, 24G 29s, 31G 55s, 30G 108s, 32G 219s, 36G
720p 6s, 27G 68s, 41G 130s, 39G 260s, 45G 547s, 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.0 75.91% 78.81% 64.28%
Open-Sora V1.2 79.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(六)

相关推荐

  1. <span style='color:red;'>Open</span>-<span style='color:red;'>Sora</span>

    Open-Sora

    2024-07-21 06:50:02      18 阅读
  2. [论文笔记] Open-Sora 1、sora复现方案概览

    2024-07-21 06:50:02       41 阅读
  3. [论文笔记] Open-Sora 4、sora复现训练过程 (新repo)

    2024-07-21 06:50:02       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 06:50:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 06:50:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 06:50:02       45 阅读
  4. Python语言-面向对象

    2024-07-21 06:50:02       55 阅读

热门阅读

  1. MYSQL2

    MYSQL2

    2024-07-21 06:50:02      17 阅读
  2. kafka---消息日志详解

    2024-07-21 06:50:02       18 阅读
  3. 人工智能与机器学习原理精解【2】

    2024-07-21 06:50:02       15 阅读
  4. python中的items()函数

    2024-07-21 06:50:02       16 阅读
  5. Perl中的设计模式革新:命令模式的实现与应用

    2024-07-21 06:50:02       17 阅读
  6. Perl的文本艺术:精通格式化输入输出

    2024-07-21 06:50:02       20 阅读
  7. PHP 安装指南

    2024-07-21 06:50:02       17 阅读
  8. C# 中的委托

    2024-07-21 06:50:02       14 阅读
  9. 时序数据库-04-InfluxData-分布式时序数据库

    2024-07-21 06:50:02       20 阅读
  10. ue5笔记

    ue5笔记

    2024-07-21 06:50:02      19 阅读
  11. Python之后端Django(三)

    2024-07-21 06:50:02       16 阅读
  12. 刷题Day58|108. 冗余连接、109. 冗余连接II

    2024-07-21 06:50:02       15 阅读
  13. FLINK-checkpoint失败原因及处理方式

    2024-07-21 06:50:02       13 阅读