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 起草回覆!

很棒的入門資源!

註冊登入 發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.