Diffusers 中开放视频生成模型的现状

发布于 2025 年 1 月 27 日
在 GitHub 上更新

OpenAI 的 Sora 演示标志着去年 AI 生成视频的显著进步,让我们得以一窥视频生成模型的潜力。其影响立竿见影,自那次演示以来,视频生成领域竞争日益激烈,主要参与者和初创公司纷纷推出各自的高性能模型,如 Google 的 Veo2、Haliluo 的 Minimax、Runway 的 Gen3 Alpha、Kling、Pika 和 Luma Lab 的 Dream Machine。

开源领域也涌现出大量视频生成模型,包括 CogVideoX、Mochi-1、Hunyuan、Allegro 和 LTX Video。视频社区是否正在经历其“Stable Diffusion 时刻”?

本文将简要概述视频生成模型的现状,开放视频生成模型的发展情况,以及 Diffusers 团队如何计划支持其大规模采用。

具体来说,我们将讨论:

  • 视频生成模型的能力和局限性
  • 为什么视频生成如此困难
  • 开放视频生成模型
  • 使用 Diffusers 进行视频生成
    • 推理和优化
    • 微调
  • 展望未来

当今视频生成模型及其局限性

这些是目前最流行的 AI 生成内容视频模型

提供商 模型 开放/封闭 许可证
Meta MovieGen 封闭(附有详细的技术报告 专有
OpenAI Sora 封闭 专有
Google Veo 2 封闭 专有
RunwayML Gen 3 Alpha 封闭 专有
Pika Labs Pika 2.0 封闭 专有
KlingAI Kling 封闭 专有
Haliluo MiniMax 封闭 专有
THUDM CogVideoX 开放 自定义
Genmo Mochi-1 开放 Apache 2.0
RhymesAI Allegro 开放 Apache 2.0
Lightricks LTX 视频 开放 自定义
腾讯 混元视频 开放 自定义

局限性:

  • 高资源要求: 生成高质量视频需要大型预训练模型,这在开发和部署上计算成本高昂。这些成本源于数据集收集、硬件要求、大量训练迭代和实验。这些成本使得开发开源和免费模型难以获得合理回报。尽管我们没有详细的技术报告阐明所使用的训练资源,但这篇帖子提供了一些合理的估算。
  • 泛化能力:一些开放模型泛化能力有限,无法达到用户的预期。模型可能需要以特定方式进行提示,或者需要类似 LLM 的提示,或者无法泛化到分布外数据,这些都是阻碍其广泛用户采用的障碍。例如,像 LTX-Video 这样的模型通常需要以非常详细和具体的方式进行提示,才能获得高质量的生成结果。
  • 延迟:视频生成的高计算和内存需求导致显著的生成延迟。对于本地使用而言,这通常是一个障碍。大多数新的开放视频模型对于社区硬件而言是无法访问的,除非进行大量的内存优化和量化方法,而这些方法会影响推理延迟和生成视频的质量。

为什么视频生成如此困难?

在视频中,我们希望看到并控制以下几个因素:

  • 对输入条件(例如文本提示、起始图像等)的遵循
  • 真实感
  • 美学
  • 运动动力学
  • 时空一致性和连贯性
  • FPS(帧率)
  • 时长

对于图像生成模型,我们通常只关注前三个方面。然而,对于视频生成,我们现在必须考虑运动质量、随时间推移的连贯性和一致性,这可能涉及多个主体。在优质数据、正确的归纳先验和训练方法之间找到适当的平衡以满足这些额外要求,事实证明比其他模态更具挑战性。

开放视频生成模型

diagram

文本到视频生成模型与其文本到图像模型具有相似的组成部分

  • 文本编码器,用于提供输入文本提示的丰富表示
  • 去噪网络
  • 编码器和解码器,用于在像素空间和潜在空间之间进行转换
  • 非参数调度器,负责管理所有时间步相关的计算和去噪步骤

最新一代的视频模型具有一个核心特性,即去噪网络处理捕获空间和时间信息的 3D 视频令牌。负责生成和解码这些令牌的视频编码器-解码器系统采用空间和时间压缩。虽然解码潜在变量通常需要最多的内存,但这些模型提供了逐帧解码选项以减少内存使用。

文本条件通过联合注意力(在Stable Diffusion 3中引入)或交叉注意力融入。T5 已成为大多数模型的首选文本编码器,Hunyuan 是一个例外,它同时使用了 CLIP-L 和 LLaMa 3。

去噪网络本身基于 William Peebles 和 Saining Xie 开发的 DiT 架构,同时融入了 PixArt 的各种设计元素。

使用 Diffusers 进行视频生成

使用视频模型时,生成可以分为三大类:

  1. 文本到视频
  2. 图像或图像控制条件 + 文本到视频
  3. 视频或视频控制条件 + 文本到视频

从文本(及其他条件)到视频只需几行代码。下面我们展示如何使用 Lightricks 的 LTX-Video 模型进行文本到视频生成。

import torch
from diffusers import LTXPipeline
from diffusers.utils import export_to_video

pipe = LTXPipeline.from_pretrained("Lightricks/LTX-Video", torch_dtype=torch.bfloat16).to("cuda")

prompt = "A woman with long brown hair and light skin smiles at another woman with long blonde hair. The woman with brown hair wears a black jacket and has a small, barely noticeable mole on her right cheek. The camera angle is a close-up, focused on the woman with brown hair's face. The lighting is warm and natural, likely from the setting sun, casting a soft glow on the scene. The scene appears to be real-life footage"
negative_prompt = "worst quality, inconsistent motion, blurry, jittery, distorted"

video = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    width=704,
    height=480,
    num_frames=161,
    num_inference_steps=50,
).frames[0]
export_to_video(video, "output.mp4", fps=24)

内存要求

任何模型所需的内存可以通过以下各项相加计算:

  • 权重所需的内存
  • 存储中间激活状态所需的最大内存

权重所需的内存可以通过量化、降级到更低的数据类型或卸载到 CPU 来降低。激活状态所需的内存也可以降低,但这更复杂,超出了本博客的范围。

可以使用极低内存运行任何视频模型,但这会以推理时间为代价。如果优化技术所需的时间超出用户认为合理的范围,则无法进行推理。Diffusers 提供了许多此类可选优化,并且可以链式应用。

下表提供了三种流行的视频生成模型在合理默认设置下的内存要求:

模型名称 内存 (GB)
HunyuanVideo 60.09
CogVideoX (1.5 5B) 36.51
LTX-Video 17.75

这些数字是在 80GB A100 机器上使用以下设置获得的(完整脚本在此处

  • torch.bfloat16 数据类型
  • num_frames: 121, height: 512, width: 768
  • 最大序列长度: 128
  • 推理步数: 50

这些需求相当惊人,使得这些模型在消费级硬件上难以运行。通过 Diffusers,用户可以选择不同的优化方式来减少内存使用。下表提供了 HunyuanVideo 在启用各种优化后的内存需求,这些优化对质量和推理时间的影响最小。

我们选择 HunyuanVideo 进行这项研究,因为它足够大,可以逐步展示优化的好处。

设置 内存 时间
BF16 基准 60.10 GB 863秒
BF16 + CPU 卸载 28.87 GB 917秒
BF16 + VAE 切片 43.58 GB 870秒
8 位 BnB 49.90 GB 983秒
8 位 BnB + CPU 卸载* 35.66 GB 1041秒
8 位 BnB + VAE 切片 36.92 GB 997秒
8 位 BnB + CPU 卸载 + VAE 切片 26.18 GB 1260秒
4 位 BnB 42.96 GB 867秒
4 位 BnB + CPU 卸载 21.99 GB 953秒
4 位 BnB + VAE 切片 26.42 GB 889秒
4 位 BnB + CPU 卸载 + VAE 切片 14.15 GB 995秒
FP8 向上转换 51.70 GB 856秒
FP8 向上转换 + CPU 卸载 21.99 GB 983秒
FP8 向上转换 + VAE 平铺 35.17 GB 867秒
FP8 向上转换 + CPU 卸载 + VAE 平铺 20.44 GB 1013秒
BF16 + 组卸载 (块=8) + VAE 平铺 15.67 GB 925秒
BF16 + 组卸载 (块=1) + VAE 平铺 7.72 GB 881秒
BF16 + 组卸载 (叶) + VAE 平铺 6.66 GB 887秒
FP8 向上转换 + 组卸载 (叶) + VAE 平铺 6.56 GB^ 885秒

*与 4 位模型不同,bitsandbytes 中的 8 位模型无法从 GPU 移动到 CPU。
^内存使用量没有进一步减少,因为峰值利用率来自计算注意力和前馈。使用 Flash AttentionOptimized Feed-Forward 可以帮助将此要求降低到约 5 GB。

我们使用与上述相同的设置来获取这些数字。另请注意,由于数值精度损失,量化会影响输出质量,其影响在视频中比图像中更显著。

我们将在下面的章节中提供有关这些优化的更多详细信息以及一些代码片段。但如果您已经感到兴奋,我们鼓励您查看我们的指南

优化套件

视频生成在资源受限的设备上可能相当困难,即使在更强大的 GPU 上也可能耗时。Diffusers 提供了一套实用程序,有助于优化这些模型的运行时和内存消耗。这些优化分为以下几类:

  • 量化:模型权重被量化为较低精度数据类型,从而降低了模型的 VRAM 需求。Diffusers 目前支持三种不同的量化后端:bitsandbytestorchaoGGUF
  • 卸载:模型的不同层可以在需要计算时动态加载到 GPU 上,然后卸载回 CPU。这在推理过程中节省了大量内存。卸载通过 enable_model_cpu_offload()enable_sequential_cpu_offload() 支持。更多详细信息请参阅此处
  • 分块推理:通过将推理分割到输入潜在张量的非嵌入维度上,可以减少中间激活状态的内存开销。这种技术的常见用途通常见于编码器/解码器切片/平铺。Diffusers 中的分块推理通过前馈分块、解码器平铺和切片以及分注意力推理来支持。
  • 注意力与 MLP 状态的重用:如果满足特定算法的某些条件,可以跳过某些去噪步骤的计算并重用过去的 states,以在最小质量损失的情况下加快生成过程。

下面,我们列出了一些目前正在开发中并将很快合并的先进优化技术:

  • 逐层转换:允许用户以较低精度(例如 torch.float8_e4m3fn)存储参数,并以较高精度(例如 torch.bfloat16)运行计算。
  • 组卸载:允许用户对内部块级或叶级模块进行分组以执行卸载。这很有益,因为只有计算所需的模型部分才会被加载到 GPU 上。此外,我们支持使用 CUDA 流重叠数据传输和计算,这可以减少多次加载/卸载层带来的大部分额外开销。

下面是应用 4 位量化、VAE 切片、CPU 卸载和逐层转换到 HunyuanVideo 的示例,以将 121 x 512 x 768 分辨率视频所需的 VRAM 减少到仅约 6.5 GB。据我们所知,这是所有可用实现中运行 HunyuanVideo 所需内存最低且不牺牲速度的实现。

从源代码安装 Diffusers 即可尝试这些功能!有些实现与所使用的模型无关,可以轻松应用于其他后端 - 一定要查看!

pip install git+https://github.com/huggingface/diffusers.git
import torch
from diffusers import (
    BitsAndBytesConfig,
    HunyuanVideoTransformer3DModel,
    HunyuanVideoPipeline,
)
from diffusers.utils import export_to_video
from diffusers.hooks import apply_layerwise_casting
from transformers import LlamaModel

model_id = "hunyuanvideo-community/HunyuanVideo"
quantization_config = BitsAndBytesConfig(
    load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16
)

text_encoder = LlamaModel.from_pretrained(model_id, subfolder="text_encoder", torch_dtype=torch.float16)
apply_layerwise_casting(text_encoder, storage_dtype=torch.float8_e4m3fn, compute_dtype=torch.float16)

# Apply 4-bit bitsandbytes quantization to Hunyuan DiT model
transformer = HunyuanVideoTransformer3DModel.from_pretrained(
    model_id,
    subfolder="transformer",
    quantization_config=quantization_config,
    torch_dtype=torch.bfloat16,
)

pipe = HunyuanVideoPipeline.from_pretrained(
    model_id, transformer=transformer, text_encoder=text_encoder, torch_dtype=torch.float16
)

# Enable memory saving
pipe.vae.enable_tiling()
pipe.enable_model_cpu_offload()

output = pipe(
    prompt="A cat walks on the grass, realistic",
    height=320,
    width=512,
    num_frames=61,
    num_inference_steps=30,
).frames[0]
export_to_video(output, "output.mp4", fps=15)

我们也可以在训练期间应用优化。两种最著名的视频模型应用技术包括:

  • 时间步蒸馏:这涉及以递归方式训练模型,使其在更少的推理步骤中更快地对噪声潜在变量进行去噪。例如,如果一个模型需要 32 步才能生成高质量视频,则可以对其进行增强,使其尝试在仅 16 步、8 步甚至 2 步中预测最终输出!这可能会伴随质量损失,具体取决于使用的步数。时间步蒸馏模型的一些例子包括 Flux.1-SchnellFastHunyuan
  • 引导蒸馏无分类器引导是一种在扩散模型中广泛使用的技术,可提高生成质量。然而,这会使生成时间加倍,因为它涉及每个推理步骤中模型的两次完整前向传播,然后是一个插值步骤。通过训练模型以一次前向传播的成本预测两次前向传播和插值的输出,此方法可以实现更快的生成。引导蒸馏模型的一些例子包括 HunyuanVideoFlux.1-Dev

我们建议读者参阅本指南,以详细了解 Diffusers 中视频生成及其当前可能性。

微调

我们创建了 finetrainers — 一个允许您轻松微调最新一代开放视频模型的存储库。例如,以下是使用 LoRA 微调 CogVideoX 的方法:

# Download a dataset
huggingface-cli download \
  --repo-type dataset Wild-Heart/Disney-VideoGeneration-Dataset \
  --local-dir video-dataset-disney

# Then launch training
accelerate launch train.py \
  --model_name="cogvideox" --pretrained_model_name_or_path="THUDM/CogVideoX1.5-5B" \
  --data_root="video-dataset-disney" \
  --video_column="videos.txt" \
  --caption_column="prompt.txt" \
  --training_type="lora" \
  --seed=42 \
  --mixed_precision="bf16" \
  --batch_size=1 \
  --train_steps=1200 \
  --rank=128 \
  --lora_alpha=128 \
  --target_modules to_q to_k to_v to_out.0 \
  --gradient_accumulation_steps 1 \
  --gradient_checkpointing \
  --checkpointing_steps 500 \
  --checkpointing_limit 2 \
  --enable_slicing \
  --enable_tiling \
  --optimizer adamw \
  --lr 3e-5 \
  --lr_scheduler constant_with_warmup \
  --lr_warmup_steps 100 \
  --lr_num_cycles 1 \
  --beta1 0.9 \
  --beta2 0.95 \
  --weight_decay 1e-4 \
  --epsilon 1e-8 \
  --max_grad_norm 1.0

# ...
# (Full training command removed for brevity)

我们使用 finetrainers 模拟了“溶解”效果并获得了有希望的结果。查看该模型以获取更多详细信息。

提示:PIKA_DISSOLVE 一个细长的玻璃花瓶,里面装满了白色小鹅卵石,立于一个抛光的乌木基座中央。毫无预警地,玻璃开始从边缘向内溶解。半透明的尘埃在优雅的螺旋中向上盘旋,照亮了每一颗掉落在基座上的鹅卵石。轻轻飘动的尘埃最终落下,只留下散落的石头和舞台上微弱闪烁的粉末痕迹。

展望未来

我们预计在 2025 年,视频生成模型将取得显著进展,在输出质量和模型能力方面都有重大改进。我们的目标是让这些模型易于使用且人人可及。我们将继续发展 finetrainers 库,并计划添加更多功能:Control LoRAs、蒸馏算法、ControlNets、适配器等等。一如既往,欢迎社区贡献 🤗

我们仍然坚定不移地致力于与模型发布者、研究人员和社区成员合作,确保视频生成的最新创新成果人人可及。

资源

我们在帖子中引用了许多链接。为确保您不会错过最重要的链接,我们在下面提供了一个列表:

致谢:感谢 Chunte 为本帖子创作了精美的缩略图。感谢 VaibhavPedro 提供的宝贵反馈。

社区

感谢这篇精彩的博文!

grok 总结这篇文章

·

博文概述

这篇题为“Diffusers 中开放视频生成模型的现状”的博文于 2025 年 1 月 27 日由 Sayak Paul 和 Hugging Face 的其他成员发布。它重点介绍了 🤗 Diffusers 库中视频生成模型的进展和现状,Diffusers 是一个流行的开源工具包,用于生成图像、音频、视频等的扩散模型。这篇帖子可能建立在 Hugging Face 通过开放科学和开源工具实现人工智能民主化的持续努力之上,正如网络结果所强调的那样。

要点(从上下文和网络结果推断)

聚焦视频生成模型
该博客讨论了用于视频生成的最新扩散模型,建立在图像和音频生成模型的成功基础上。它可能引用了最近的发展,例如 OpenAI 的 Sora 演示(在网络结果 1 中提到),该演示在 2024 年展示了令人印象深刻的视频生成能力。它强调了视频生成的挑战,例如保持帧间时间一致性,如网络结果 2(Lil'Log 关于视频扩散模型)中所述。

Diffusers 库亮点
这篇文章详细介绍了 Diffusers 库如何通过预训练模型、管道和噪声调度器支持视频生成。网络结果 0(GitHub - huggingface/diffusers)将 Diffusers 描述为扩散模型的“首选库”,提供用于推理和训练的模块化工具,这可能构成了该博客的技术核心。

它可能包含实际示例,例如如何仅用几行代码使用管道进行视频生成,以及高级优化技术,例如重用注意力与 MLP 状态(来自网络结果 1)。
开源和可访问性

Hugging Face 推动人工智能进步和民主化的使命是其核心,如网络结果 1 所示。这篇博客可能强调了开源视频模型(例如 CogVideoX、Stable Video Diffusion)和诸如 finetrainers 等用于微调视频模型的工具,如网络结果中所述。
它还可以讨论开发人员如何为这些模型做出贡献或在其基础上进行构建,这与该库的模块化和社区驱动方法相符。

最新进展(截至 2025 年 1 月)
鉴于发布日期,该博客可能涵盖了 2025 年的进展,预计视频生成质量和能力将在全年“显著提高”(网络结果 1)。
它可能会提及微调技术(例如 LoRA、ControlNets、Adapters)和 Diffusers 库中即将推出的功能,如网络结果 1 中所述。

为什么它很有趣(对人类而言)
人类对这篇帖子和博客的兴趣表明了对人工智能进步的好奇心,特别是在视频生成方面。这篇博客与尖端人工智能研究、开源工具和实际应用紧密相关,这与 xAI 的使命(以及我作为 Grok 3 mini 的使命)相符,即加速人类科学发现。
鉴于生成式人工智能的快速发展,Sora 等模型树立了基准,以及 Hugging Face 在使这些工具易于使用方面的领导作用,这也具有相关性。
博客中可能包含的内容

技术细节:扩散管道(例如,来自网络结果 2 的 VDM、Imagen Video)、模型架构和优化技术的描述。

结论
huggingface.co/blog/video_gen 上的这篇博文深入探讨了 2025 年初发布的 Diffusers 中开源视频生成模型的现状。它是一份技术性但易于理解的资源,适用于对视频 AI 最新进展感兴趣的 AI 研究人员、开发人员和爱好者,反映了 Hugging Face 对开放科学的承诺。Sayak Paul 在 X 上对此的推广凸显了其重要性以及他希望更广泛参与的愿望,使其成为您对 AI 和 X 帖子的兴趣的一个引人注目的主题。如果您愿意,我可以帮助您探索特定部分、相关工具,甚至为 Sayak 起草回复!

很棒的入门资源!

注册登录 发表评论