快速上手
本章节通过一个简单的示例,展示如何使用MindIE SD进行文生视频。
- 准备模型权重。
模型权重详细信息如表1所示,用户需自行设置权重路径(例:/home/{用户名}/example/OpenSora1.2)。
表1 模型权重/配置文件列表 模型
说明
权重/配置文件
OpenSora1.2
文生视频模型
无需权重文件。
配置文件参考示例请参见model_index.json配置文件参考示例。
scheduler
噪声采样器
无需权重文件。
配置文件参考示例请参见scheduler_config.json配置文件。
text_encoder、tokenizer
应用T5Encoder模型,文本编码模型
transformer
应用STDiT3模型,时空去噪扩散转换模型
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.RC3", "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.RC3", "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" } }
- model_index.json配置文件参考示例:
- 文生视频主要分为以下几个步骤。
- 导入依赖包
- 配置文生视频工作流
- 模型编译
- 模型推理
具体样例如下所示:#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"是一种广泛使用的视频压缩标准,因其高效性和兼容性而被广泛应用在各种视频应用场景中。
其生成的视频如下所示: