Diffusers documentation
AnyFlow
AnyFlow
NVIDIA, Ulusal Singapur Üniversitesi ve Massachusetts Teknoloji Enstitüsü'nden Yuchao Gu, Guian Fang, Yuxin Jiang, Weijia Mao, Song Han, Han Cai, Mike Zheng Shou tarafından geliştirilen AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation.
Kısa özet: AnyFlow, akış haritaları üzerine kurulu ilk adım sayısı esnek video difüzyon çerçevesidir; bu sayede tek bir model (çift yönlü veya nedensel) keyfi çıkarım bütçelerine uyum sağlayabilir.
Az adımlı video üretimi, tutarlılık modelleri tarafından önemli ölçüde ilerletilmiştir. Ancak, performansları genellikle sabit nokta formülasyonu nedeniyle herhangi-bir-adım video difüzyon modellerinde düşer. Bu sınırlamayı ele almak için, akış haritaları üzerine kurulu ilk herhangi-bir-adım video difüzyon damıtma çerçevesi olan AnyFlow'u sunuyoruz. Sadece z_t → z_0 eşlemesini öğrenmek yerine, AnyFlow keyfi zaman aralıklarında z_t → z_r geçişlerini öğrenir ve bu sayede tek bir modelin farklı çıkarım bütçelerine uyum sağlamasını mümkün kılar. Ön eğitilmiş video difüzyon modellerini akış haritası modellerine dönüştüren, geliştirilmiş bir ileri akış haritası eğitim tarifi tasarladık ve akış haritası modelleri için politika-içi damıtmayı mümkün kılmak üzere Flow Map Backward Simulation'ı tanıttık. İki yönlü ve nedensel mimarilerde, 1.3B'den 14B'ye kadar ölçeklerde, metinden-videoya ve görüntüden-videoya görevlerinde yapılan kapsamlı deneyler, AnyFlow'un değişen adım bütçeleri altında yüksek sadakati ve esnek örneklemeyi korurken tutarlılığa dayalı taban çizgilerinden daha iyi performans gösterdiğini kanıtlamaktadır.
AnyFlow pipeline'leri AnyFlow Ekibi tarafından katkı sağlanmıştır. Orijinal kod GitHub'da, proje sayfası nvlabs.github.io/AnyFlow adresinde ve önceden eğitilmiş modeller Hugging Face'teki nvidia/anyflow koleksiyonunda bulunabilir.
Mevcut Modeller:
| Kontrol Noktası | Backbone | Açıklama |
|---|---|---|
nvidia/AnyFlow-Wan2.1-T2V-1.3B-Diffusers | Wan2.1 1.3B | Çift Yönlü T2V |
nvidia/AnyFlow-Wan2.1-T2V-14B-Diffusers | Wan2.1 14B | Çift Yönlü T2V |
nvidia/AnyFlow-FAR-Wan2.1-1.3B-Diffusers | FAR + Wan2.1 1.3B | Nedensel T2V / I2V / V2V |
nvidia/AnyFlow-FAR-Wan2.1-14B-Diffusers | FAR + Wan2.1 14B | Nedensel T2V / I2V / V2V |
AnyFlowPipeline, metinden videoya (T2V) üretiminde çift yönlü difüzyon modelleri için tasarlanmıştır.AnyFlowFARPipeline, metinden videoya (T2V) üretimini, görüntüden videoya (I2V) üretimini ve video devamını (V2V) destekleyen parça bazlı nedensel bir difüzyon modelidir.
AnyFlow ile Üretim (Çift Yönlü T2V)
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)AnyFlow (FAR Causal) ile Üretim
Nedensel iş akışı, video (veya video_latents) argümanı üzerinden T2V / I2V / V2V arasında seçim yapar:
sadece metinden videoya dönüştürme için her ikisini de atlayın veya mevcut karelere koşullanmak için [0, 1] aralığında, T = 4n + 1 olacak şekilde (B, T, C, H, W) biçiminde video=<tensor> iletin. I2V için tek bir koşullama karesi, V2V devamı için ise daha uzun bir klip kullanın. Model yerleşiminde önceden kodlanmış latentleriniz varsa, VAE kodlamasını atlamak için bunları video_latents=<tensor> üzerinden iletin. video ve video_latents birbirini dışlar.
Yayınlanan checkpoint'ler, transformer yapılandırmasına
chunk_partition=[1, 3, 3, 3, 3, 3, 3, 2](toplam 21) değerini gömer; bu değer, VAE'nin 4 olan zamansal adımında 21 latent çerçeveye karşılık gelen standart 81 ham çerçeveye uyarlanmıştır.num_framesdeğerini değiştirdiğinizde,(num_frames - 1) // 4 + 1değerine eşit toplamı olan uygun birchunk_partitionparametresi geçirmelisiniz; aksi takdirde pipeline birValueErrorhatası fırlatır.
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)Notlar
- Classifier-free guidance, yayınlanan checkpoint'lere entegre edilmiştir; bu nedenle çıkarım sırasında ikinci bir yönlendirilmiş ileri geçiş çalıştırılmaz. Kendi checkpoint'iniz aksi gerektirmedikçe varsayılan
guidance_scale=1.0değerini koruyun. FlowMapEulerDiscreteSchedulergenel amaçlıdır.from_pretrained(..., scheduler=FlowMapEulerDiscreteScheduler.from_config(...))yoluyla herhangi bir flow-map-distilled checkpoint'e bağlayabilirsiniz.AnyFlowPipeline,AnyFlowTransformer3DModelkullanır (çift yönlü).AnyFlowFARPipeline, sıkıştırılmış çerçeve yama gömme ve FAR nedensel blok maskesi ekleyenAnyFlowFARTransformer3DModelkullanır.- LoRA yükleme,
WanLoraLoaderMixinüzerinden desteklenmektedir; bu, üst akış Wan pipeline'ları tarafından kullanılan aynı mixin'dir. - Eğitim tarifleri (forward flow-map eğitimi ve on-policy distillation) için, eğitim diffusers kapsamı dışında olduğundan, orijinal
NVlabs/AnyFloweğitim çerçevesine başvurun.
AnyFlowPipeline
sınıf diffusers.AnyFlowPipeline
< source >( tokenizer: AutoTokenizertext_encoder: UMT5EncoderModeltransformer: AnyFlowTransformer3DModelvae: AutoencoderKLWanscheduler: FlowMapEulerDiscreteScheduler )
Parametreler
- tokenizer ([AutoTokenizer]) — google/umt5-xxl modelinden Tokenizer.
- text_encoder ([UMT5EncoderModel]) — google/umt5-xxl metin kodlayıcısı.
- transformer ([AnyFlowTransformer3DModel]) — Çift yönlü akış haritası 3D Transformer.
- vae ([AutoencoderKLWan]) — Videoyu latent temsillere kodlayan ve latent temsillerden videoya çözen VAE.
- scheduler ([FlowMapEulerDiscreteScheduler]) —
Flow-map örnekleyici. Pipeline, her çıkarım adımında
scheduler.step(..., timestep, sample, r_timestep)çağrısını yönetir.
AnyFlow'da tanıtılan, AnyFlow akış haritası damıtılmış kontrol noktaları için çift yönlü metinden videoya üretim hattı.
AnyFlow, keyfi aralıklı geçişleri öğrenir sabit eş tutarlılık modellerindeki eşlemeye değil, bu sayede tek bir damıtılmış checkpoint, yeniden eğitim gerektirmeden 1, 2, 4, 8, 16… NFE değerlerinde değerlendirilebilir. Bu pipeline, tam video tensörü üzerinde tek yönlü bir geçişte çalışır; parça bazlı otoregresif (nedensel) üretim için AnyFlowFARPipeline.
Örnekleme, yeniden gürültüleme olmadan ortalama hız formunda düz Euler'dir (z_r = z_t - (t - r) * u). Yayınlanan NVIDIA kontrol noktaları, sınıflandırıcı-ücretsiz yönlendirmeyi model ağırlıklarına katlar; bu nedenle varsayılan guidance_scale=1.0 önerilen ayar olarak kabul edilir.
Bu model, [DiffusionPipeline] sınıfından devralır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda kontrol edin.
__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
Parametreler
- prompt (
strveyaList[str], isteğe bağlı) — Video üretimini yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerineprompt_embedsgeçirin. - video (
torch.Tensor, isteğe bağlı) —[0, 1]aralığında(B, T, C, H, W)biçiminde, VAE öncesi koşullandırma kareleri. Sağlandığında, pipeline bunları VAE ile kodlar ve örneklem sırasında ilgili gizli öneki sabit tutar.video_latentsile birbirini dışlar. - video_latents (
torch.Tensor, isteğe bağlı) — AnyFlow yerleşimindeki(B, T_latent, C, H_latent, W_latent)önceden kodlanmış VAE latensleri. Pipeline tarafında VAE kodlamasını atlar.videoile birbirini dışlar. - negative_prompt (
strveyaList[str], isteğe bağlı) — Video üretimi sırasında kaçınılması istenen istem veya istemler. Rehberlik kullanılmadığında (guidance_scale < 1) yok sayılır. - height (
int, varsayılan480) — Oluşturulan videonun piksel cinsinden yüksekliği. - width (
int, varsayılan832) — Oluşturulan videonun piksel cinsinden genişliği. - num_frames (
int, varsayılan81) — Oluşturulan videodaki kare sayısı.(num_frames - 1) % vae_scale_factor_temporal == 0koşulunu sağlamalıdır. - num_inference_steps (
int, varsayılan50) — Gürültü azaltma adım sayısı. Distilled AnyFlow checkpoint'leri herhangi bir adımda örneklemeyi desteklediğinden,1,2,4veya8gibi düşük değerler yaygındır.sigmasveyatimestepssağlandığında yok sayılır. - sigmas (
List[float], isteğe bağlı) — Herhangi bir adım sayısıyla örneklemeye özel sigma zamanlaması,[0, 1]aralığında ve gürültülüden temiz yöne doğru sıralanmış. Uzunluk, etkinnum_inference_stepsdeğerini belirler; zamanlayıcı son0sigma değerini ekler. - timesteps (
List[float], isteğe bağlı) — Her adımlı örneklemeler için özel zaman adımı zamanlaması,self.scheduler.timestepsile aynı birimlerde (yaninum_train_timestepsile ölçeklenmiş).sigmasile birbirini dışlar. - guidance_scale (
float, varsayılan1.0) — Sınıflandırıcı-ücretsiz yönlendirme ölçeği. Yayınlanan AnyFlow kontrol noktaları, eğitim sırasında CFG'yi ağırlıklara entegre eder; kontrol noktanızın aksi bir beklentisi olduğundan emin olmadıkça1.0olarak bırakın. - num_videos_per_prompt (
int, isteğe bağlı, varsayılan1) — Her prompt için üretilecek video sayısı. - generator (
torch.GeneratorveyaList[torch.Generator], isteğe bağlı) — Üretimi deterministik hale getirmek için kullanılan birtorch.Generator. - latents (
torch.Tensor, isteğe bağlı) — Girdi olarak kullanılacak önceden oluşturulmuş gürültülü latensler. Sağlanmazsa, latensler sağlanangeneratorüzerinden örneklenir. - prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini ayarlamak için kullanılabilir (ör. istem ağırlıklandırma). Sağlanmazsa, gömme değerleripromptüzerinden oluşturulur. - negative_prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. - output_type (
str, isteğe bağlı, varsayılan"np") — Çıktı biçimi."pil","np","pt"veya"latent"değerlerinden biri. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerineAnyFlowPipelineOutputdöndürülüp döndürülmemesi. - attention_kwargs (
dict, isteğe bağlı) — Belirtilirse, diffusers.models.attention_processor içindekiself.processoraltında tanımlananAttentionProcessor'a iletilen bir kwargs sözlüğü. - callback_on_step_end (
Callable, isteğe bağlı) — Her çıkarım adımının sonunda çağrılan bir işlev veyaPipelineCallback. Ayrıntılar için bkz.callbacks. - callback_on_step_end_tensor_inputs (
List[str], isteğe bağlı, varsayılan["latents"]) — Callback'e iletilecek girdi tensörleri.self._callback_tensor_inputs'in bir alt kümesi olmalıdır. - max_sequence_length (
int, varsayılan512) — Maksimum metin kodlayıcı dizisi uzunluğu. Daha uzun istekler kırpılır. - use_mean_velocity (
bool, varsayılanTrue) —Trueolduğunda, akış haritası modeli, eğitim zamanındaki davranışla uyumlu olacak şekilde hem kaynak zaman adımınathem de hedef zaman adımınarkoşullandırılarak ortalama bir hız tahmin eder. Ham Euler adımını yansıtmak için devre dışı bırakın (r = t).
Dönüş değeri
~AnyFlowPipelineOutput veya tuple
return_dict True ise AnyFlowPipelineOutput döndürülür, aksi halde ilk öğesi üretilen video olan bir tuple döndürülür.
Üretim için pipeline'ın çağrı fonksiyonu.
Örnekler:
>>> 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 )
Parametreler
- prompt (
strveyalist[str], isteğe bağlı) — kodlanacak prompt - negative_prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerinenegative_prompt_embedsparametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yaniguidance_scaledeğeri1'den küçükse) yok sayılır. - do_classifier_free_guidance (
bool, isteğe bağlı, varsayılanTrue) — Classifier free guidance kullanılacak mı? - num_videos_per_prompt (
int, isteğe bağlı, varsayılan 1) — Her prompt için oluşturulması gereken video sayısı. Sonuç gömme vektörlerinin yerleştirileceği torch cihazı - prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. prompt ağırlıklandırma. Sağlanmazsa, metin gömme değerleripromptgirdi argümanından oluşturulur. - negative_prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds,negative_promptgirdi argümanından oluşturulur. - device — (
torch.device, isteğe bağlı): torch cihazı - dtype — (
torch.dtype, isteğe bağlı): torch dtype
İsteği metin kodlayıcı gizli durumlarına kodlar.
Bir piksel uzayı videosunu AnyFlow'un gizli düzenine kodlayın.
Diğer diffusers pipeline'larının tek yardımcı fonksiyon (single-helper) sözleşmesini yansıtır (bkz. WanImageToVideoPipeline.encode_image): ön işleme, VAE kodlaması ve latent normalizasyonunu tek bir çağrıda birleştirir. Çıkış düzeni (B, T_latent, C, H, W)'dir; bu, AnyFlow transformer'ın koşullandırma kareleri için beklediği düzenin ta kendisidir.
AnyFlowFARPipeline
sınıf diffusers.AnyFlowFARPipeline
< source >( tokenizer: AutoTokenizertext_encoder: UMT5EncoderModeltransformer: AnyFlowFARTransformer3DModelvae: AutoencoderKLWanscheduler: FlowMapEulerDiscreteScheduler )
Parametreler
- tokenizer ([AutoTokenizer]) — google/umt5-xxl modelinden Tokenizer.
- text_encoder ([UMT5EncoderModel]) — google/umt5-xxl metin kodlayıcısı.
- transformer ([AnyFlowFARTransformer3DModel]) — FAR nedensel akış haritası 3B Transformer.
- vae ([AutoencoderKLWan]) — Videoyu latent temsillere kodlayan ve latent temsillerden videoya çözen VAE.
- scheduler ([FlowMapEulerDiscreteScheduler]) — Akış haritası örnekleyici.
AnyFlow'da tanıtılan, AnyFlow kontrol noktaları için nedensel (FAR tabanlı) metinden videoya / görüntüden videoya / videodan videoya hattı.
Pipeline, parça bazlı otoregresif örneklem döngüsünü yönetir: her parça, yalnızca blok-sparse nedensel dikkat (causal attention) aracılığıyla önceki parçalara odaklanarak flow-map adımlarıyla gürültüden arındırılır ve ara KV önbelleği parçalar arasında yeniden kullanılır.
Görev modu (T2V / I2V / V2V), __call__'ye hangi koşullandırma argümanının geçirildiğine göre seçilir:
- hem
video=Nonehem devideo_latents=None— saf metinden videoya. video=<tensor of shape (B, T, C, H, W) in [0, 1] with T = 4n + 1>— VAE öncesi koşullandırma kareleri; pipeline bunları VAE ile kodlar. I2V için tek kareli bir video, V2V için çok kareli bir klip iletin.video_latents=<latent tensor of shape (B, T_latent, C, H_latent, W_latent)>— FAR yerleşiminde zaten kodlanmış latentler (VAE kodlama adımını atlar).
FAR omurgası, FAR tarafından tanıtılan nedensel Wan2.1 varyantıdır. Çıkarım, yeniden gürültüleme olmadan, parça başına ortalama hız formunda düz Euler ile yapılır. Ortak T2V / I2V / V2V, tek bir damıtılmış model tarafından desteklenir.
Bu model, [DiffusionPipeline] sınıfından devralır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda kontrol edin.
__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
Parametreler
- prompt (
strveyaList[str], isteğe bağlı) — Video üretimini yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerineprompt_embedsgeçirin. - video (
torch.Tensor, isteğe bağlı) —[0, 1]aralığında(B, T, C, H, W)biçiminde (T = 4n + 1) ön-VAE koşullandırma kareleri. Sağlandığında, pipeline bunları VAE ile kodlar ve örneklem sırasında karşılık gelen gizli öneki sabit tutar.video_latentsile karşılıklı dışlayıcıdır. - video_latents (
torch.Tensor, isteğe bağlı) — FAR yerleşimindeki(B, T_latent, C, H_latent, W_latent)önceden kodlanmış VAE latensleri. Pipeline tarafında VAE kodlamasını atlar.videoile birbirini dışlar. - negative_prompt (
strveyaList[str], isteğe bağlı) — Video üretimi sırasında kaçınılması istenen istem veya istemler. Rehberlik kullanılmadığında (guidance_scale < 1) yok sayılır. - height (
int, varsayılan480) — Oluşturulan videonun piksel cinsinden yüksekliği. - width (
int, varsayılan832) — Oluşturulan videonun piksel cinsinden genişliği. - num_frames (
int, varsayılan81) — Oluşturulan videodaki kare sayısı.(num_frames - 1) % vae_scale_factor_temporal == 0koşulunu sağlamalıdır. - num_inference_steps (
int, varsayılan50) — Her parça için gürültü azaltma adım sayısı. Distilled AnyFlow-FAR checkpoint'leri herhangi bir adımlı örneklemeyi (1, 2, 4, 8, …) destekler.sigmasveyatimestepssağlandığında yok sayılır. - sigmas (
List[float], isteğe bağlı) — Herhangi bir adım sayısıyla örneklemeye özel sigma zamanlaması,[0, 1]aralığında ve gürültülüden temiz yöne doğru sıralanmış. Uzunluk, etkinnum_inference_stepsdeğerini belirler; zamanlayıcı son0sigma değerini ekler. - timesteps (
List[float], isteğe bağlı) — Her adımlı örneklemeler için özel zaman adımı zamanlaması,self.scheduler.timestepsile aynı birimlerde (yaninum_train_timestepsile ölçeklenmiş).sigmasile birbirini dışlar. - guidance_scale (
float, varsayılan1.0) — Sınıflandırıcı-özgür yönlendirme ölçeği. Yayınlanan AnyFlow kontrol noktaları, eğitim sırasında CFG'yi ağırlıklara entegre eder; kontrol noktası aksi gerektirmedikçe1.0olarak bırakın. - num_videos_per_prompt (
int, isteğe bağlı, varsayılan1) — Her prompt için üretilecek video sayısı. - generator (
torch.GeneratorveyaList[torch.Generator], isteğe bağlı) — Örnekleme için tohum atmakta kullanılan üreteç. - latents (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş gürültülü latensler. Sağlanmazsa, latensler sağlanangeneratorüzerinden örneklenir. - prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş metin gömme değerleri. Sağlanmazsa, gömme değerleripromptüzerinden üretilir. - negative_prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. - output_type (
str, isteğe bağlı, varsayılan"np") — Çıktı biçimi."pil","np","pt"veya"latent"değerlerinden biri. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerineAnyFlowPipelineOutputdöndürülüp döndürülmemesi. - attention_kwargs (
dict, isteğe bağlı) — Belirtilirse, diffusers.models.attention_processor içindekiself.processoraltında tanımlananAttentionProcessor'a iletilen bir kwargs sözlüğü. - callback_on_step_end (
Callable, isteğe bağlı) — Her çıkarım adımının sonunda çağrılan bir işlev veyaPipelineCallback. - callback_on_step_end_tensor_inputs (
List[str], isteğe bağlı, varsayılan["latents"]) — Geri çağrıya (callback) iletilecek girdi tensörleri.self._callback_tensor_inputs'in bir alt kümesi olmalıdır. - max_sequence_length (
int, varsayılan512) — Maksimum metin kodlayıcı dizisi uzunluğu. - use_mean_velocity (
bool, varsayılanTrue) —Trueolduğunda, akış haritası modeli, ortalama bir hız tahmin etmek için hem kaynak zaman adımınathem de hedef zaman adımınargöre koşullandırılır. Ham Euler adımını yansıtmak için devre dışı bırakın. - use_kv_cache (
bool, varsayılanTrue) — Nedensel parçalar arasında FAR dikkat KV önbelleğini yeniden kullanır. Yalnızca hata ayıklama için devre dışı bırakın. - chunk_partition (
List[int], isteğe bağlı) — Parça başına kare sayıları. Varsayılan değerself.transformer.config.chunk_partition'dir (yayınlanan 81 karelik kontrol noktalarıyla eşleşir).num_framesdeğerini değiştirdiğinizde, toplamı(num_frames - 1) // vae_scale_factor_temporal + 1olan birchunk_partitionbelirtin.
Dönüş değeri
~AnyFlowPipelineOutput veya tuple
return_dict True ise bir AnyFlowPipelineOutput döndürülür, aksi halde ilk öğesi üretilen video olan bir tuple döndürülür.
Üretim için pipeline'ın çağrı fonksiyonu.
Örnekler:
>>> 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 )
Parametreler
- prompt (
strveyalist[str], isteğe bağlı) — kodlanacak prompt - negative_prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmamışsa, bunun yerinenegative_prompt_embedsparametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yaniguidance_scaledeğeri1'den küçükse) yok sayılır. - do_classifier_free_guidance (
bool, isteğe bağlı, varsayılanTrue) — Classifier free guidance kullanılacak mı? - num_videos_per_prompt (
int, isteğe bağlı, varsayılan 1) — Her prompt için oluşturulması gereken video sayısı. Sonuç gömme vektörlerinin yerleştirileceği torch cihazı - prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. prompt ağırlıklandırma. Sağlanmazsa, metin gömme değerleripromptgirdi argümanından oluşturulur. - negative_prompt_embeds (
torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds,negative_promptgirdi argümanından oluşturulur. - device — (
torch.device, isteğe bağlı): torch cihazı - dtype — (
torch.dtype, isteğe bağlı): torch dtype
İsteği metin kodlayıcı gizli durumlarına kodlar.
Bir piksel uzayı videosunu AnyFlow'un gizli düzenine kodlayın.
Diğer diffusers pipeline'larının tek yardımcı fonksiyon (single-helper) sözleşmesini yansıtır (bkz. WanImageToVideoPipeline.encode_image): ön işleme, VAE kodlaması ve latent normalizasyonunu tek bir çağrıda birleştirir. Çıkış düzeni (B, T_latent, C, H, W)'dir; bu, AnyFlow transformer'ın koşullandırma kareleri için beklediği düzenin ta kendisidir.
AnyFlowPipelineOutput
sınıf diffusers.pipelines.anyflow.pipeline_output.AnyFlowPipelineOutput
< source >( frames: Tensor )
Parametreler
- frames (
torch.Tensor,np.ndarrayveya list[list[PIL.Image.Image]]) — video çıktıları listesi -batch_size,uzunluğunda iç içe geçmiş bir liste olabilir; her alt liste,num_frames.uzunluğunda gürültüsü azaltılmış PIL görüntü dizileri içerir. Ayrıca(batch_size, num_frames, channels, height, width)biçiminde bir NumPy dizisi veya Torch tensörü de olabilir.
AnyFlow hatları için çıktı sınıfı.