Diffusers documentation

AnyFlow

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

LoRA

AnyFlow

AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation dari NVIDIA, National University of Singapore, dan Massachusetts Institute of Technology, oleh Yuchao Gu, Guian Fang, Yuxin Jiang, Weijia Mao, Song Han, Han Cai, Mike Zheng Shou.

TL;DR: AnyFlow adalah kerangka kerja difusi video any-step pertama yang dibangun di atas flow maps, yang memungkinkan satu model (bidireksional atau kausal) untuk beradaptasi dengan anggaran inferensi yang arbitrer.

Generasi video dengan langkah sedikit telah maju secara signifikan berkat model konsistensi. Namun, kinerjanya sering kali menurun pada model difusi video any-step karena formulasi titik tetap. Untuk mengatasi keterbatasan ini, kami memperkenalkan AnyFlow, kerangka distilasi difusi video any-step pertama yang dibangun di atas peta alur. Alih-alih hanya mempelajari pemetaan z_t → z_0, AnyFlow mempelajari transisi z_t → z_r pada interval waktu yang sewenang-wenang, sehingga memungkinkan satu model untuk beradaptasi dengan anggaran inferensi yang berbeda. Kami merancang resep pelatihan peta alur maju yang ditingkatkan untuk menyetel ulang model difusi video yang telah dilatih sebelumnya menjadi model peta alur, serta memperkenalkan Simulasi Mundur Peta Alur untuk memungkinkan distilasi on-policy untuk model peta alur. Eksperimen ekstensif pada arsitektur bidireksional dan kausal, dengan skala dari 1,3 miliar hingga 14 miliar parameter, pada tugas teks-ke-video dan gambar-ke-video menunjukkan bahwa AnyFlow melampaui baseline berbasis konsistensi sambil mempertahankan fidelitas tinggi dan pengambilan sampel yang fleksibel di bawah anggaran langkah yang bervariasi.

Pipeline AnyFlow disumbangkan oleh Tim AnyFlow. Kode aslinya tersedia di GitHub, halaman proyeknya ada di nvlabs.github.io/AnyFlow, dan model pretrained dapat ditemukan di koleksi nvidia/anyflow di Hugging Face.

Model yang Tersedia:

CheckpointBackboneDeskripsi
nvidia/AnyFlow-Wan2.1-T2V-1.3B-DiffusersWan2.1 1.3BT2V Bidireksional
nvidia/AnyFlow-Wan2.1-T2V-14B-DiffusersWan2.1 14BT2V Bidireksional
nvidia/AnyFlow-FAR-Wan2.1-1.3B-DiffusersFAR + Wan2.1 1.3BCausal T2V / I2V / V2V
nvidia/AnyFlow-FAR-Wan2.1-14B-DiffusersFAR + Wan2.1 14BCausal T2V / I2V / V2V

AnyFlowPipeline dirancang untuk model difusi bidireksional dalam generasi teks-ke-video (T2V). AnyFlowFARPipeline adalah model difusi kausal berbasis chunk yang mendukung generasi teks-ke-video (T2V), generasi gambar-ke-video (I2V), dan kelanjutan video (V2V).

Generasi dengan AnyFlow (T2V Bidireksional)

import torch
from diffusers import AnyFlowPipeline
from diffusers.utils import export_to_video

pipe = AnyFlowPipeline.from_pretrained(
    "nvidia/AnyFlow-Wan2.1-T2V-1.3B-Diffusers", dtype=torch.bfloat16
).to("cuda")  # or "mps", "xpu", "cpu"

prompt = (
    "An astronaut runs smoothly and appears almost weightless on the lunar surface, "
    "as seen from a low-angle shot that highlights the vast, desolate background of the moon. "
    "The moon's craters and rocky terrain are clearly visible, creating a stark contrast against "
    "the running astronaut who moves with graceful, fluid motions."
)
video = pipe(prompt, num_inference_steps=4, num_frames=81).frames[0]
export_to_video(video, "anyflow_t2v.mp4", fps=16)

Generasi dengan AnyFlow (FAR Causal)

Pipeline kausal memilih antara T2V / I2V / V2V melalui argumen video (atau video_latents): tinggalkan keduanya untuk text-to-video biasa, atau berikan video=<tensor> dengan bentuk (B, T, C, H, W) dalam [0, 1] dengan T = 4n + 1 untuk mengondisikan pada frame yang sudah ada. Gunakan satu frame kondisioning untuk I2V dan klip yang lebih panjang untuk kelanjutan V2V. Jika Anda sudah memiliki latents yang telah di-encode sebelumnya dalam tata letak model, berikan melalui video_latents=<tensor> untuk melewati encoding VAE. video dan video_latents saling eksklusif.

Checkpoint yang dirilis membakar chunk_partition=[1, 3, 3, 3, 3, 3, 3, 2] (jumlah 21) ke dalam konfigurasi transformer, yang disesuaikan dengan 81 frame mentah kanonik (21 frame laten pada langkah temporal VAE sebesar 4). Ketika Anda mengubah num_frames, berikan chunk_partition yang sesuai dengan jumlah (num_frames - 1) // 4 + 1, jika tidak pipeline akan melempar ValueError.

t2v
i2v
v2v
import torch
from diffusers import AnyFlowFARPipeline
from diffusers.utils import export_to_video

pipe = AnyFlowFARPipeline.from_pretrained(
    "nvidia/AnyFlow-FAR-Wan2.1-1.3B-Diffusers", dtype=torch.bfloat16
).to("cuda")  # or "mps", "xpu", "cpu"

prompt = (
    "An astronaut runs smoothly and appears almost weightless on the lunar surface, "
    "as seen from a low-angle shot that highlights the vast, desolate background of the moon."
)
video = pipe(prompt, num_inference_steps=4, num_frames=81).frames[0]
export_to_video(video, "anyflow_far_t2v.mp4", fps=16)

Catatan

  • Classifier-free guidance telah dilebur ke dalam checkpoint yang dirilis, sehingga inferensi tidak menjalankan langkah forward terpandu kedua. Pertahankan nilai default guidance_scale=1.0 kecuali checkpoint Anda sendiri memerlukan pengaturan lain.
  • FlowMapEulerDiscreteScheduler bersifat serbaguna. Anda dapat menempelkannya ke checkpoint flow-map-distilled mana pun melalui from_pretrained(..., scheduler=FlowMapEulerDiscreteScheduler.from_config(...)).
  • AnyFlowPipeline menggunakan AnyFlowTransformer3DModel (bidireksional). AnyFlowFARPipeline menggunakan AnyFlowFARTransformer3DModel, yang menambahkan patch embedding frame terkompresi dan block-mask kausal FAR.
  • Pembebanan LoRA didukung melalui WanLoraLoaderMixin, mixin yang sama yang digunakan oleh pipeline Wan upstream.
  • Untuk resep pelatihan (pelatihan forward flow-map dan distilasi on-policy), silakan merujuk ke framework pelatihan AnyFlow asli di NVlabs/AnyFlow; pelatihan berada di luar cakupan diffusers.

AnyFlowPipeline

kelas diffusers.AnyFlowPipeline

< >

( tokenizer: AutoTokenizertext_encoder: UMT5EncoderModeltransformer: AnyFlowTransformer3DModelvae: AutoencoderKLWanscheduler: FlowMapEulerDiscreteScheduler )

Parameter

  • tokenizer ([AutoTokenizer]) — Tokenizer dari google/umt5-xxl.
  • text_encoder ([UMT5EncoderModel]) — encoder teks google/umt5-xxl.
  • transformer ([AnyFlowTransformer3DModel]) — Transformer 3D flow-map bidireksional.
  • vae ([AutoencoderKLWan]) — VAE yang mengodekan/menguraikan video ke dan dari representasi laten.
  • scheduler ([FlowMapEulerDiscreteScheduler]) — Sampler flow-map. Pipeline menggerakkan scheduler.step(..., timestep, sample, r_timestep) per langkah inferensi.

Pipeline generasi teks-ke-video bidireksional untuk checkpoint AnyFlow yang telah di-distilasi flow-map, diperkenalkan dalam AnyFlow.

AnyFlow mempelajari transisi interval arbitrerzt→zrz_t \to z_r alih-alih pemetaan tetapzt→z0z_t \to z_0 dari model konsistensi, sehingga satu checkpoint yang telah didistilasi dapat dievaluasi pada 1, 2, 4, 8, 16… NFE tanpa pelatihan ulang. Pipeline ini beroperasi pada tensor video penuh dalam satu pass bidireksional; untuk generasi autoregresif (kausal) per-chunk gunakan AnyFlowFARPipeline.

Sampling menggunakan Euler polos dalam bentuk kecepatan rata-rata (z_r = z_t - (t - r) * u) tanpa re-noising. Checkpoint NVIDIA yang dirilis menggabungkan classifier-free guidance ke dalam bobot model, sehingga pengaturan default guidance_scale=1.0 adalah pengaturan yang direkomendasikan.

Model ini mewarisi dari [DiffusionPipeline]. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan untuk semua pipeline (mengunduh, menyimpan, menjalankan pada perangkat tertentu, dll.).

__call__

< >

( prompt: typing.Union[str, typing.List[str]] = Nonevideo: typing.Optional[torch.Tensor] = Nonevideo_latents: typing.Optional[torch.Tensor] = Nonenegative_prompt: typing.Union[str, typing.List[str]] = Noneheight: int = 480width: int = 832num_frames: int = 81num_inference_steps: int = 50sigmas: typing.Optional[typing.List[float]] = Nonetimesteps: typing.Optional[typing.List[float]] = Noneguidance_scale: float = 1.0num_videos_per_prompt: typing.Optional[int] = 1generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: typing.Optional[str] = 'np'return_dict: bool = Trueattention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int, typing.Dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: typing.List[str] = ['latents']max_sequence_length: int = 512use_mean_velocity: bool = True ) → ~AnyFlowPipelineOutput or tuple

Parameter

  • prompt (str atau List[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi video. Jika tidak didefinisikan, gunakan prompt_embeds sebagai gantinya.
  • video (torch.Tensor, opsional) — Frame conditioning pra-VAE dengan bentuk (B, T, C, H, W) dalam [0, 1]. Jika diberikan, pipeline meng-encode-nya dengan VAE dan mempertahankan prefix laten yang sesuai tetap tetap selama sampling. Saling eksklusif dengan video_latents.
  • video_latents (torch.Tensor, opsional) — Latens VAE yang sudah di-encode sebelumnya dalam tata letak AnyFlow (B, T_latent, C, H_latent, W_latent). Melewati pengkodean VAE di sisi pipeline. Saling eksklusif dengan video.
  • negative_prompt (str atau List[str], opsional) — Prompt atau prompt-prompt yang harus dihindari selama pembuatan video. Diabaikan saat tidak menggunakan guidance (guidance_scale < 1).
  • height (int, defaultnya 480) — Tinggi video yang dihasilkan dalam piksel.
  • width (int, defaultnya 832) — Lebar video yang dihasilkan dalam piksel.
  • num_frames (int, defaultnya 81) — Jumlah frame dalam video yang dihasilkan. Harus memenuhi (num_frames - 1) % vae_scale_factor_temporal == 0.
  • num_inference_steps (int, defaultnya 50) — Jumlah langkah denoising. Checkpoint Distilled AnyFlow mendukung any-step sampling, sehingga nilai serendah 1, 2, 4, atau 8 adalah hal yang umum. Diabaikan ketika sigmas atau timesteps disediakan.
  • sigmas (List[float], opsional) — Jadwal sigma kustom untuk sampling any-step, dalam [0, 1] dan diurutkan dari berisik ke bersih. Panjangnya menentukan num_inference_steps efektif; scheduler menambahkan sigma terminal 0.
  • timesteps (List[float], opsional) — Jadwal timestep kustom untuk sampling any-step, dalam satuan yang sama dengan self.scheduler.timesteps (yaitu diskalakan oleh num_train_timesteps). Saling eksklusif dengan sigmas.
  • guidance_scale (float, default 1.0) — Skala classifier-free guidance. Checkpoint AnyFlow yang dirilis mem-fuse CFG ke dalam bobot selama pelatihan; pertahankan di 1.0 kecuali Anda tahu checkpoint Anda mengharapkan nilai lain.
  • num_videos_per_prompt (int, opsional, defaultnya 1) — Jumlah video yang akan dihasilkan per prompt.
  • generator (torch.Generator atau List[torch.Generator], opsional) — torch.Generator untuk membuat generasi menjadi deterministik.
  • latents (torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya untuk digunakan sebagai input. Jika tidak disediakan, latents akan diambil dari generator yang diberikan.
  • prompt_embeds (torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk menyesuaikan input teks (misalnya, pembobotan prompt). Jika tidak disediakan, embedding akan dibuat dari prompt.
  • negative_prompt_embeds (torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya.
  • output_type (str, opsional, default "np") — Format output. Salah satu dari "pil", "np", "pt", atau "latent".
  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan AnyFlowPipelineOutput alih-alih tuple biasa.
  • attention_kwargs (dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan ke AttentionProcessor seperti yang didefinisikan di bawah self.processor dalam diffusers.models.attention_processor.
  • callback_on_step_end (Callable, opsional) — Fungsi atau PipelineCallback yang dipanggil di akhir setiap langkah inferensi. Lihat callbacks untuk detailnya.
  • callback_on_step_end_tensor_inputs (List[str], opsional, defaultnya ["latents"]) — Input tensor yang diteruskan ke callback. Harus berupa subset dari self._callback_tensor_inputs.
  • max_sequence_length (int, defaultnya 512) — Panjang maksimum sekuens text-encoder. Prompt yang lebih panjang akan dipotong.
  • use_mean_velocity (bool, defaultnya True) — Ketika True, model flow-map dikondisikan pada timestep sumber t dan timestep target r untuk memprediksi kecepatan rata-rata, sesuai dengan perilaku saat pelatihan. Nonaktifkan untuk mencerminkan langkah Euler mentah (r = t).

Mengembalikan

~AnyFlowPipelineOutput atau tuple

Jika return_dict adalah True, AnyFlowPipelineOutput dikembalikan, selain itu sebuah tuple yang elemen pertamanya adalah video yang dihasilkan.

Fungsi panggilan untuk pipeline pada generasi.

Contoh:

>>> import torch
>>> from diffusers import AnyFlowPipeline
>>> from diffusers.utils import export_to_video

>>> pipe = AnyFlowPipeline.from_pretrained(
...     "nvidia/AnyFlow-Wan2.1-T2V-14B-Diffusers", torch_dtype=torch.bfloat16
... ).to("cuda")

>>> prompt = "A red panda eating bamboo in a forest, cinematic lighting"
>>> video = pipe(prompt, num_inference_steps=4, num_frames=33).frames[0]
>>> export_to_video(video, "anyflow_t2v.mp4", fps=16)

encode_prompt

< >

( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 226device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )

Parameter

  • prompt (str atau list[str], opsional) — prompt yang akan dienkod
  • negative_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan negative_prompt_embeds sebagai gantinya. Diabaikan jika tidak menggunakan guidance (yaitu, diabaikan jika guidance_scale kurang dari 1).
  • do_classifier_free_guidance (bool, opsional, default True) — Apakah akan menggunakan classifier free guidance atau tidak.
  • num_videos_per_prompt (int, opsional, default 1) — Jumlah video yang harus dihasilkan per prompt. perangkat torch untuk menempatkan embedding yang dihasilkan
  • prompt_embeds (torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input prompt.
  • negative_prompt_embeds (torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen input negative_prompt.
  • device — (torch.device, opsional): perangkat torch
  • dtype — (torch.dtype, opsional): torch dtype

Mengkodekan prompt menjadi hidden states dari text encoder.

encode_video

< >

( video: Tensorheight: intwidth: int )

Enkodekan video ruang piksel ke dalam tata letak laten AnyFlow.

Mengikuti konvensi helper tunggal dari pipeline diffusers lainnya (lihat WanImageToVideoPipeline.encode_image): membungkus pra-pemrosesan, enkoding VAE, dan normalisasi laten menjadi satu panggilan. Tata letak output adalah (B, T_latent, C, H, W), yang merupakan format yang diharapkan oleh transformer AnyFlow untuk frame kondisioning.

AnyFlowFARPipeline

kelas diffusers.AnyFlowFARPipeline

< >

( tokenizer: AutoTokenizertext_encoder: UMT5EncoderModeltransformer: AnyFlowFARTransformer3DModelvae: AutoencoderKLWanscheduler: FlowMapEulerDiscreteScheduler )

Parameter

  • tokenizer ([AutoTokenizer]) — Tokenizer dari google/umt5-xxl.
  • text_encoder ([UMT5EncoderModel]) — encoder teks google/umt5-xxl.
  • transformer ([AnyFlowFARTransformer3DModel]) — Transformer 3D flow-map kausal FAR.
  • vae ([AutoencoderKLWan]) — VAE yang mengodekan/menguraikan video ke dan dari representasi laten.
  • scheduler ([FlowMapEulerDiscreteScheduler]) — Sampler flow-map.

Pipeline teks-ke-video / gambar-ke-video / video-ke-video kausal (berbasis FAR) untuk checkpoint AnyFlow, diperkenalkan dalam AnyFlow.

Pipeline menggerakkan loop sampling autoregresif per chunk: setiap chunk didenois dengan langkah flow-map sambil hanya memperhatikan chunk sebelumnya melalui perhatian kausal blok-sparse, dan cache KV antara digunakan kembali di seluruh chunk.

Mode tugas (T2V / I2V / V2V) dipilih berdasarkan argumen kondisioning mana yang diteruskan ke __call__:

  • baik video=None maupun video_latents=None — teks-ke-video murni.
  • video=<tensor of shape (B, T, C, H, W) in [0, 1] with T = 4n + 1> — frame conditioning pra-VAE; pipeline akan melakukan VAE-encoding pada frame tersebut. Kirimkan video satu frame untuk I2V atau klip multi-frame untuk V2V.
  • video_latents=<latent tensor of shape (B, T_latent, C, H_latent, W_latent)> — latents yang sudah dikodekan dalam layout FAR (melewati langkah encode VAE).

Backbone FAR adalah varian Wan2.1 kausal yang diperkenalkan oleh FAR. Inferensi menggunakan Euler polos dalam bentuk mean-velocity per chunk tanpa re-noising. T2V / I2V / V2V gabungan didukung oleh satu model terdistilasi.

Model ini mewarisi dari [DiffusionPipeline]. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan untuk semua pipeline (mengunduh, menyimpan, menjalankan pada perangkat tertentu, dll.).

__call__

< >

( prompt: typing.Union[str, typing.List[str]] = Nonevideo: typing.Optional[torch.Tensor] = Nonevideo_latents: typing.Optional[torch.Tensor] = Nonenegative_prompt: typing.Union[str, typing.List[str]] = Noneheight: int = 480width: int = 832num_frames: int = 81num_inference_steps: int = 50sigmas: typing.Optional[typing.List[float]] = Nonetimesteps: typing.Optional[typing.List[float]] = Noneguidance_scale: float = 1.0num_videos_per_prompt: typing.Optional[int] = 1generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: typing.Optional[str] = 'np'return_dict: bool = Trueattention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int, typing.Dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: typing.List[str] = ['latents']max_sequence_length: int = 512use_mean_velocity: bool = Trueuse_kv_cache: bool = Truechunk_partition: typing.Optional[typing.List[int]] = None ) → ~AnyFlowPipelineOutput or tuple

Parameter

  • prompt (str atau List[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi video. Jika tidak didefinisikan, gunakan prompt_embeds sebagai gantinya.
  • video (torch.Tensor, opsional) — Frame conditioning pra-VAE dengan bentuk (B, T, C, H, W) dalam rentang [0, 1] (T = 4n + 1). Jika diberikan, pipeline akan meng-encode-nya dengan VAE dan mempertahankan prefix laten yang sesuai tetap tetap selama sampling. Saling eksklusif dengan video_latents.
  • video_latents (torch.Tensor, opsional) — Latens VAE yang sudah di-encode sebelumnya dalam layout FAR (B, T_latent, C, H_latent, W_latent). Melewati pengkodean VAE di sisi pipeline. Saling eksklusif dengan video.
  • negative_prompt (str atau List[str], opsional) — Prompt atau prompt-prompt yang harus dihindari selama pembuatan video. Diabaikan saat tidak menggunakan guidance (guidance_scale < 1).
  • height (int, defaultnya 480) — Tinggi video yang dihasilkan dalam piksel.
  • width (int, defaultnya 832) — Lebar video yang dihasilkan dalam piksel.
  • num_frames (int, defaultnya 81) — Jumlah frame dalam video yang dihasilkan. Harus memenuhi (num_frames - 1) % vae_scale_factor_temporal == 0.
  • num_inference_steps (int, defaultnya 50) — Jumlah langkah denoising per chunk. Checkpoint Distilled AnyFlow-FAR mendukung sampling any-step (1, 2, 4, 8, …). Diabaikan ketika sigmas atau timesteps disediakan.
  • sigmas (List[float], opsional) — Jadwal sigma kustom untuk sampling any-step, dalam [0, 1] dan diurutkan dari berisik ke bersih. Panjangnya menentukan num_inference_steps efektif; scheduler menambahkan sigma terminal 0.
  • timesteps (List[float], opsional) — Jadwal timestep kustom untuk sampling any-step, dalam satuan yang sama dengan self.scheduler.timesteps (yaitu diskalakan oleh num_train_timesteps). Saling eksklusif dengan sigmas.
  • guidance_scale (float, default 1.0) — Skala panduan bebas klasifikator (classifier-free guidance). Checkpoint AnyFlow yang dirilis menggabungkan CFG ke dalam bobot selama pelatihan; pertahankan di 1.0 kecuali checkpoint tersebut membutuhkan nilai lain.
  • num_videos_per_prompt (int, opsional, defaultnya 1) — Jumlah video yang akan dihasilkan per prompt.
  • generator (torch.Generator atau List[torch.Generator], opsional) — Generator yang digunakan untuk mengatur seed sampling.
  • latents (torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya. Jika tidak disediakan, latents akan diambil dari generator yang diberikan.
  • prompt_embeds (torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Jika tidak disediakan, embedding akan dibuat dari prompt.
  • negative_prompt_embeds (torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya.
  • output_type (str, opsional, default "np") — Format output. Salah satu dari "pil", "np", "pt", atau "latent".
  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan AnyFlowPipelineOutput alih-alih tuple biasa.
  • attention_kwargs (dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan ke AttentionProcessor seperti yang didefinisikan di bawah self.processor dalam diffusers.models.attention_processor.
  • callback_on_step_end (Callable, opsional) — Fungsi atau PipelineCallback yang dipanggil di akhir setiap langkah inferensi.
  • callback_on_step_end_tensor_inputs (List[str], opsional, default ["latents"]) — Input tensor yang diteruskan ke callback. Harus berupa subset dari self._callback_tensor_inputs.
  • max_sequence_length (int, defaultnya 512) — Panjang maksimum sekuens untuk text-encoder.
  • use_mean_velocity (bool, defaultnya True) — Ketika True, model flow-map dikondisikan pada timestep sumber t dan timestep target r untuk memprediksi kecepatan rata-rata. Nonaktifkan untuk mencerminkan langkah Euler mentah.
  • use_kv_cache (bool, defaultnya True) — Gunakan ulang cache KV FAR attention di antara chunk kausal. Nonaktifkan hanya untuk debugging.
  • chunk_partition (List[int], opsional) — Jumlah frame per chunk. Nilainya secara default adalah self.transformer.config.chunk_partition (sesuai dengan checkpoint 81-frame yang dirilis). Saat Anda mengubah num_frames, berikan chunk_partition yang jumlahnya sama dengan (num_frames - 1) // vae_scale_factor_temporal + 1.

Mengembalikan

~AnyFlowPipelineOutput atau tuple

Jika return_dict adalah True, sebuah AnyFlowPipelineOutput dikembalikan, selain itu sebuah tuple yang elemen pertamanya adalah video yang dihasilkan.

Fungsi panggilan untuk pipeline pada generasi.

Contoh:

>>> import numpy as np
>>> import torch
>>> from diffusers import AnyFlowFARPipeline
>>> from diffusers.utils import export_to_video, load_image

>>> pipe = AnyFlowFARPipeline.from_pretrained(
...     "nvidia/AnyFlow-FAR-Wan2.1-1.3B-Diffusers", torch_dtype=torch.bfloat16
... ).to("cuda")

>>> # Single-frame I2V: wrap the conditioning image as a (1, 1, 3, H, W) tensor in [0, 1].
>>> first_frame = load_image("path/to/first_frame.png").resize((832, 480))
>>> arr = np.asarray(first_frame).astype("float32") / 255.0
>>> context = torch.from_numpy(arr).permute(2, 0, 1).unsqueeze(0).unsqueeze(1).to("cuda")

>>> video = pipe(
...     prompt="a cat walks across a sunlit lawn",
...     video=context,
...     num_inference_steps=4,
...     num_frames=81,
... ).frames[0]
>>> export_to_video(video, "anyflow_far.mp4", fps=16)

encode_prompt

< >

( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 226device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )

Parameter

  • prompt (str atau list[str], opsional) — prompt yang akan dienkod
  • negative_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan negative_prompt_embeds sebagai gantinya. Diabaikan jika tidak menggunakan guidance (yaitu, diabaikan jika guidance_scale kurang dari 1).
  • do_classifier_free_guidance (bool, opsional, default True) — Apakah akan menggunakan classifier free guidance atau tidak.
  • num_videos_per_prompt (int, opsional, default 1) — Jumlah video yang harus dihasilkan per prompt. perangkat torch untuk menempatkan embedding yang dihasilkan
  • prompt_embeds (torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input prompt.
  • negative_prompt_embeds (torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen input negative_prompt.
  • device — (torch.device, opsional): perangkat torch
  • dtype — (torch.dtype, opsional): torch dtype

Mengkodekan prompt menjadi hidden states dari text encoder.

encode_video

< >

( video: Tensorheight: intwidth: int )

Enkodekan video ruang piksel ke dalam tata letak laten AnyFlow.

Mengikuti konvensi helper tunggal dari pipeline diffusers lainnya (lihat WanImageToVideoPipeline.encode_image): membungkus pra-pemrosesan, enkoding VAE, dan normalisasi laten menjadi satu panggilan. Tata letak output adalah (B, T_latent, C, H, W), yang merupakan format yang diharapkan oleh transformer AnyFlow untuk frame kondisioning.

AnyFlowPipelineOutput

kelas diffusers.pipelines.anyflow.pipeline_output.AnyFlowPipelineOutput

< >

( frames: Tensor )

Parameter

  • frames (torch.Tensor, np.ndarray, atau list[list[PIL.Image.Image]]) — daftar output video - Dapat berupa daftar bersarang dengan panjang batch_size, di mana setiap sub-daftar berisi urutan gambar PIL yang telah didenois dengan panjang num_frames. Dapat juga berupa array NumPy atau tensor Torch dengan bentuk (batch_size, num_frames, channels, height, width).

Kelas output untuk pipeline AnyFlow.

Update on GitHub