Diffusers documentation
AnyFlow
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:
| Checkpoint | Backbone | Deskripsi |
|---|---|---|
nvidia/AnyFlow-Wan2.1-T2V-1.3B-Diffusers | Wan2.1 1.3B | T2V Bidireksional |
nvidia/AnyFlow-Wan2.1-T2V-14B-Diffusers | Wan2.1 14B | T2V Bidireksional |
nvidia/AnyFlow-FAR-Wan2.1-1.3B-Diffusers | FAR + Wan2.1 1.3B | Causal T2V / I2V / V2V |
nvidia/AnyFlow-FAR-Wan2.1-14B-Diffusers | FAR + Wan2.1 14B | Causal T2V / I2V / V2V |
AnyFlowPipelinedirancang untuk model difusi bidireksional dalam generasi teks-ke-video (T2V).AnyFlowFARPipelineadalah 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 mengubahnum_frames, berikanchunk_partitionyang sesuai dengan jumlah(num_frames - 1) // 4 + 1, jika tidak pipeline akan melemparValueError.
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)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", dtype=torch.bfloat16
).to("cuda") # or "mps", "xpu", "cpu"
# Example conditioning image from the AnyFlow repo.
first_frame = load_image(
"https://raw.githubusercontent.com/NVlabs/AnyFlow/main/assets/evaluation/example/images/1.jpg"
).resize((832, 480))
arr = np.asarray(first_frame).astype("float32") / 255.0 # (480, 832, 3)
context_tensor = torch.from_numpy(arr).permute(2, 0, 1).unsqueeze(0).unsqueeze(1).to("cuda") # (1, 1, 3, 480, 832)
prompt = (
"A towering, battle-scarred humanoid robot, reminiscent of a Transformer with powerful, segmented armor "
"and glowing red optics, walking through the skeletal remains of a city ruin. Twisted metal and shattered "
"concrete crunch under its heavy steps, as the robot scans the desolate, dust-choked skyline under an dark sky."
)
video = pipe(
prompt=prompt,
video=context_tensor,
num_inference_steps=4,
num_frames=81,
).frames[0]
export_to_video(video, "anyflow_far_i2v.mp4", fps=16)import numpy as np
import torch
from diffusers import AnyFlowFARPipeline
from diffusers.utils import export_to_video, load_video
pipe = AnyFlowFARPipeline.from_pretrained(
"nvidia/AnyFlow-FAR-Wan2.1-1.3B-Diffusers", dtype=torch.bfloat16
).to("cuda") # or "mps", "xpu", "cpu"
# Example conditioning clip from the AnyFlow repo — take the first 9 frames (3 latent frames at VAE temporal stride 4).
context_frames = load_video(
"https://raw.githubusercontent.com/NVlabs/AnyFlow/main/assets/evaluation/example/videos/2.mp4"
)[:9]
arr = np.stack([np.asarray(f.resize((832, 480))) for f in context_frames]).astype("float32") / 255.0
context_tensor = torch.from_numpy(arr).permute(0, 3, 1, 2).unsqueeze(0).to("cuda") # (1, 9, 3, 480, 832)
prompt = (
"A focused trail runner's powerful strides through a dense, sun-dappled forest. "
"The camera tracks alongside, highlighting muscular exertion, sweat, and determined facial expression."
)
video = pipe(
prompt=prompt,
video=context_tensor,
num_inference_steps=4,
num_frames=81,
# Override chunk_partition so the first chunk covers exactly the 3 latent context frames.
chunk_partition=[3, 3, 3, 3, 3, 3, 3],
).frames[0]
export_to_video(video, "anyflow_far_v2v.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.0kecuali checkpoint Anda sendiri memerlukan pengaturan lain. FlowMapEulerDiscreteSchedulerbersifat serbaguna. Anda dapat menempelkannya ke checkpoint flow-map-distilled mana pun melaluifrom_pretrained(..., scheduler=FlowMapEulerDiscreteScheduler.from_config(...)).AnyFlowPipelinemenggunakanAnyFlowTransformer3DModel(bidireksional).AnyFlowFARPipelinemenggunakanAnyFlowFARTransformer3DModel, 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
< source >( 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 arbitrer alih-alih pemetaan tetap 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__
< source >( 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 (
stratauList[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi video. Jika tidak didefinisikan, gunakanprompt_embedssebagai 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 denganvideo_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 denganvideo. - negative_prompt (
stratauList[str], opsional) — Prompt atau prompt-prompt yang harus dihindari selama pembuatan video. Diabaikan saat tidak menggunakan guidance (guidance_scale < 1). - height (
int, defaultnya480) — Tinggi video yang dihasilkan dalam piksel. - width (
int, defaultnya832) — Lebar video yang dihasilkan dalam piksel. - num_frames (
int, defaultnya81) — Jumlah frame dalam video yang dihasilkan. Harus memenuhi(num_frames - 1) % vae_scale_factor_temporal == 0. - num_inference_steps (
int, defaultnya50) — Jumlah langkah denoising. Checkpoint Distilled AnyFlow mendukung any-step sampling, sehingga nilai serendah1,2,4, atau8adalah hal yang umum. Diabaikan ketikasigmasatautimestepsdisediakan. - sigmas (
List[float], opsional) — Jadwal sigma kustom untuk sampling any-step, dalam[0, 1]dan diurutkan dari berisik ke bersih. Panjangnya menentukannum_inference_stepsefektif; scheduler menambahkan sigma terminal0. - timesteps (
List[float], opsional) — Jadwal timestep kustom untuk sampling any-step, dalam satuan yang sama denganself.scheduler.timesteps(yaitu diskalakan olehnum_train_timesteps). Saling eksklusif dengansigmas. - guidance_scale (
float, default1.0) — Skala classifier-free guidance. Checkpoint AnyFlow yang dirilis mem-fuse CFG ke dalam bobot selama pelatihan; pertahankan di1.0kecuali Anda tahu checkpoint Anda mengharapkan nilai lain. - num_videos_per_prompt (
int, opsional, defaultnya1) — Jumlah video yang akan dihasilkan per prompt. - generator (
torch.GeneratoratauList[torch.Generator], opsional) —torch.Generatoruntuk membuat generasi menjadi deterministik. - latents (
torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya untuk digunakan sebagai input. Jika tidak disediakan, latents akan diambil darigeneratoryang 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 dariprompt. - 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, defaultTrue) — Apakah akan mengembalikanAnyFlowPipelineOutputalih-alih tuple biasa. - attention_kwargs (
dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan keAttentionProcessorseperti yang didefinisikan di bawahself.processordalam diffusers.models.attention_processor. - callback_on_step_end (
Callable, opsional) — Fungsi atauPipelineCallbackyang dipanggil di akhir setiap langkah inferensi. Lihatcallbacksuntuk detailnya. - callback_on_step_end_tensor_inputs (
List[str], opsional, defaultnya["latents"]) — Input tensor yang diteruskan ke callback. Harus berupa subset dariself._callback_tensor_inputs. - max_sequence_length (
int, defaultnya512) — Panjang maksimum sekuens text-encoder. Prompt yang lebih panjang akan dipotong. - use_mean_velocity (
bool, defaultnyaTrue) — KetikaTrue, model flow-map dikondisikan pada timestep sumbertdan timestep targetruntuk 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
< source >( 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 (
strataulist[str], opsional) — prompt yang akan dienkod - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskannegative_prompt_embedssebagai gantinya. Diabaikan jika tidak menggunakan guidance (yaitu, diabaikan jikaguidance_scalekurang dari1). - do_classifier_free_guidance (
bool, opsional, defaultTrue) — 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 inputprompt. - 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 inputnegative_prompt. - device — (
torch.device, opsional): perangkat torch - dtype — (
torch.dtype, opsional): torch dtype
Mengkodekan prompt menjadi hidden states dari text encoder.
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
< source >( 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=Nonemaupunvideo_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__
< source >( 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 (
stratauList[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi video. Jika tidak didefinisikan, gunakanprompt_embedssebagai 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 denganvideo_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 denganvideo. - negative_prompt (
stratauList[str], opsional) — Prompt atau prompt-prompt yang harus dihindari selama pembuatan video. Diabaikan saat tidak menggunakan guidance (guidance_scale < 1). - height (
int, defaultnya480) — Tinggi video yang dihasilkan dalam piksel. - width (
int, defaultnya832) — Lebar video yang dihasilkan dalam piksel. - num_frames (
int, defaultnya81) — Jumlah frame dalam video yang dihasilkan. Harus memenuhi(num_frames - 1) % vae_scale_factor_temporal == 0. - num_inference_steps (
int, defaultnya50) — Jumlah langkah denoising per chunk. Checkpoint Distilled AnyFlow-FAR mendukung sampling any-step (1, 2, 4, 8, …). Diabaikan ketikasigmasatautimestepsdisediakan. - sigmas (
List[float], opsional) — Jadwal sigma kustom untuk sampling any-step, dalam[0, 1]dan diurutkan dari berisik ke bersih. Panjangnya menentukannum_inference_stepsefektif; scheduler menambahkan sigma terminal0. - timesteps (
List[float], opsional) — Jadwal timestep kustom untuk sampling any-step, dalam satuan yang sama denganself.scheduler.timesteps(yaitu diskalakan olehnum_train_timesteps). Saling eksklusif dengansigmas. - guidance_scale (
float, default1.0) — Skala panduan bebas klasifikator (classifier-free guidance). Checkpoint AnyFlow yang dirilis menggabungkan CFG ke dalam bobot selama pelatihan; pertahankan di1.0kecuali checkpoint tersebut membutuhkan nilai lain. - num_videos_per_prompt (
int, opsional, defaultnya1) — Jumlah video yang akan dihasilkan per prompt. - generator (
torch.GeneratoratauList[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 darigeneratoryang diberikan. - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Jika tidak disediakan, embedding akan dibuat dariprompt. - 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, defaultTrue) — Apakah akan mengembalikanAnyFlowPipelineOutputalih-alih tuple biasa. - attention_kwargs (
dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan keAttentionProcessorseperti yang didefinisikan di bawahself.processordalam diffusers.models.attention_processor. - callback_on_step_end (
Callable, opsional) — Fungsi atauPipelineCallbackyang 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 dariself._callback_tensor_inputs. - max_sequence_length (
int, defaultnya512) — Panjang maksimum sekuens untuk text-encoder. - use_mean_velocity (
bool, defaultnyaTrue) — KetikaTrue, model flow-map dikondisikan pada timestep sumbertdan timestep targetruntuk memprediksi kecepatan rata-rata. Nonaktifkan untuk mencerminkan langkah Euler mentah. - use_kv_cache (
bool, defaultnyaTrue) — 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 adalahself.transformer.config.chunk_partition(sesuai dengan checkpoint 81-frame yang dirilis). Saat Anda mengubahnum_frames, berikanchunk_partitionyang 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
< source >( 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 (
strataulist[str], opsional) — prompt yang akan dienkod - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskannegative_prompt_embedssebagai gantinya. Diabaikan jika tidak menggunakan guidance (yaitu, diabaikan jikaguidance_scalekurang dari1). - do_classifier_free_guidance (
bool, opsional, defaultTrue) — 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 inputprompt. - 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 inputnegative_prompt. - device — (
torch.device, opsional): perangkat torch - dtype — (
torch.dtype, opsional): torch dtype
Mengkodekan prompt menjadi hidden states dari text encoder.
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
< source >( frames: Tensor )
Parameter
- frames (
torch.Tensor,np.ndarray, atau list[list[PIL.Image.Image]]) — daftar output video - Dapat berupa daftar bersarang dengan panjangbatch_size,di mana setiap sub-daftar berisi urutan gambar PIL yang telah didenois dengan panjangnum_frames.Dapat juga berupa array NumPy atau tensor Torch dengan bentuk(batch_size, num_frames, channels, height, width).
Kelas output untuk pipeline AnyFlow.