昇腾社区首页
中文
注册

快速入门

本章节通过一个简单的示例,展示如何使用MindIE SD进行文生视频。

  1. 使用以下命令在任意路径(例如:/home/{用户名}/code)下载模型仓。
    git clone https://gitee.com/ascend/ModelZoo-PyTorch.git
  2. 使用以下命令配置环境变量。
    export PYTHONPATH=/home/{用户名}/code/ModelZoo-PyTorch/MindIE/MultiModal/OpenSora-1.2/:$PYTHONPATH
  3. 准备模型权重。
    模型权重详细信息如表1所示,用户需自行设置权重路径(例:/home/{用户名}/example/OpenSora1.2)。
    表1 模型权重/配置文件列表

    模型/子模型

    说明

    权重/配置文件

    OpenSora1.2

    文生视频模型

    无需权重文件。

    需自行准备配置文件,并按以下目录层级放置,参考示例请参见model_index.json配置文件参考示例

    scheduler

    噪声采样器

    无需权重文件。

    需自行准备配置文件,并按以下目录层级放置,参考示例请参见scheduler_config.json配置文件示例

    text_encoder、tokenizer

    应用T5Encoder模型,文本编码模型

    权重文件和配置文件请单击链接获取。

    text_encoder和tokenizer文件夹所需要的文件如下所示:

    • text_encoder:pytorch_model-00001-of-00002.bin、pytorch_model-00002-of-00002.bin和pytorch_model.bin.index.json
    • tokenizer:special_tokens_map.json、spiece.model和tokenizer_config.json
    • 共同的配置文件:config.json

    transformer

    应用STDiT3-v3模型,时空去噪扩散转换模型

    权重文件和配置文件请单击链接获取。

    配置文件参考示例请参见transformer目录中的config.json配置文件参考示例

    vae

    变分自编码器

    权重文件请单击链接获取。

    配置文件参考示例请参见vae的config.json配置文件参考示例

    vae_2d

    应用文本到文本传输转换扩散(Text-To-Text Transfer Transformer Diffusers, T5 Diffusers)模型

    权重文件和配置文件请单击链接获取。

    各模型的配置文件、权重文件的层级样例如下所示:

    ├── OpenSora1.2
    │   ├── model_index.json
    │   ├── scheduler
    │        └── scheduler_config.json
    │   ├── text_encoder
    │        ├── config.json
    │        └── 模型权重
    │   ├── tokenizer
    │        ├── config.json
    │        └── 模型权重
    │   ├── transformer
    │        ├── config.json
    │        └── 模型权重
    │   └── vae
    │        ├── config.json
    │        ├── 模型权重
    │        └── vae_2d
    │             └── vae
    │                  ├── config.json
    │                  └── 模型权重

    模型权重文件、配置文件及其所在文件夹需参照文件目录权限说明要求进行权限配置。

    该路径下需要修改的配置文件参考示例如下所示。

    • model_index.json配置文件参考示例:
      {
          "_class_name": "OpenSoraPipeline",
          "_mindiesd_version": "1.0.0",
          "scheduler": [
              "mindiesd",
              "RFlowScheduler"
          ],
          "text_encoder": [
              "transformers",
              "T5EncoderModel"
          ],
          "tokenizer": [
              "transformers",
              "AutoTokenizer"
            ],
          "transformer": [
              "mindiesd",
              "STDiT3"
          ],
          "vae": [
              "mindiesd",
              "VideoAutoencoder"
          ]
      }
    • scheduler_config.json配置文件参考示例:
      {
          "_class_name": "RFlowScheduler",
          "_mindiesd_version": "1.0.0",
          "num_sampling_steps": 30,
          "num_timesteps": 1000
      }
    • transformer目录中的config.json配置文件参考示例:
      {
          "architectures": [
              "STDiT3"
          ],
          "caption_channels": 4096,
          "class_dropout_prob": 0.1,
          "depth": 28,
          "drop_path": 0.0,
          "enable_flash_attn": true,
          "enable_layernorm_kernel": false,
          "enable_sequence_parallelism": false,
          "freeze_y_embedder": true,
          "hidden_size": 1152,
          "in_channels": 4,
          "input_size": [
              null,
              null,
              null
          ],
          "input_sq_size": 512,
          "mlp_ratio": 4.0,
          "model_max_length": 300,
          "model_type": "STDiT3",
          "num_heads": 16,
          "only_train_temporal": false,
          "patch_size": [
              1,
              2,
              2
          ],
          "pred_sigma": true,
          "qk_norm": true,
          "skip_y_embedder": false,
          "torch_dtype": "float32",
          "transformers_version": "4.36.2"
      }
    • vae目录中的config.json配置文件参考示例:

      vae/vae_2d/vae目录中的config.json配置文件无需修改。

      {
          "architectures": [
              "VideoAutoencoder"
          ],
          "cal_loss": false,
          "freeze_vae_2d": false,
          "from_pretrained": null,
          "micro_frame_size": 17,
          "model_type": "VideoAutoencoder",
          "scale": [
              3.85,
              2.32,
              2.33,
              3.06
          ],
          "shift": [
              -0.1,
              0.34,
              0.27,
              0.98
          ],
          "torch_dtype": "float32",
          "transformers_version": "4.36.2",
          "vae_2d": {
              "from_pretrained": "PixArt-alpha/pixart_sigma_sdxlvae_T5_diffusers",
              "local_files_only": true,
              "micro_batch_size": 4,
              "subfolder": "vae",
              "type": "VideoAutoencoderKL"
          },
          "vae_temporal": {
              "from_pretrained": null,
              "type": "VAE_Temporal_SD"
          }
      }
  4. 文生视频主要分为以下几个步骤。
    1. 导入依赖包
    2. 配置文生视频工作流
    3. 模型编译
    4. 模型推理
    5. 保存视频
    具体样例如下所示:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    #1.导入依赖包
    import torch
    from mindiesd import OpenSoraPipeline12, compile_pipe
    #2.配置文生视频工作流,用户可自行设置权重路径,例如:/home/{用户名}/example/OpenSora1.2
    pipe = OpenSoraPipeline12.from_pretrained(model_path="/home/{用户名}/example/OpenSora1.2", num_frames=32, image_size=(720, 1280), fps=8,
        enable_sequence_parallelism=False, dtype=torch.bfloat16)
    #3.模型编译
    pipe = compile_pipe(pipe)
    #4.模型推理的输出如果需要保存成视频,则可添加参数output_type="thwc",默认开启,无需保存视频可去掉此参数
    video = pipe(prompts=["Several giant wooly mammoths approach treading through a snowy meadow, their long wooly fur lightly blows in the wind as they walk, snow covered trees and dramatic snow capped mountains in the distance, mid afternoon light with wispy clouds and a sun high in the distance creates a warm glow, the low camera view is stunning capturing the large furry mammal with beautiful photography, depth of field."], output_type="thwc")
    #5.保存视频,用户设置在合法路径保存视频,例如在当前路径保存名称为sample.mp4的视频文件
    from torchvision.io import write_video
    save_path="sample.mp4"
    write_video(save_path, video, fps=8, video_codec="h264")
    
    表2 配置文生视频工作流中的参数解释

    参数名

    参数含义

    取值

    model_path

    权重路径

    T5Encoder、STDiT-v3、OpenSoraVAE_V1_2用到的权重所在路径。

    num_frames

    视频总帧数

    支持两档视频帧数:32、128,默认值为32。

    image_size

    视频分辨率

    支持两档视频分辨率:(512,512)、(720,1280),默认值为(720,1280)。

    fps

    每秒帧数

    支持8帧/秒。

    enable_sequence_parallelism

    是否开启DSP并行优化

    True、False

    dtype

    数据类型

    支持两类数据类型:torch.bfloat16、torch.float16,默认值为torch.bfloat16。

    output_type

    输出维度顺序

    用于描述视频数据的维度顺序,"thwc"中的t表示时间维度,h表示视频图像高度,w表示视频图像宽度,c表示通道维度。

    save_path

    存储路径

    用户设置视频的保存路径。

    video_codec

    视频编解码器参数

    用于指定视频编解码器的参数,"h264"是一种广泛使用的视频压缩标准,因其高效性和兼容性而被广泛应用在各种视频应用场景中。