Diffusers documentation

AnyFlowFARTransformer3DModel

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

AnyFlowFARTransformer3DModel

AnyFlowFARPipeline tarafından kullanılan nedensel (FAR) 3D Transformer — AnyFlow'un FAR varyantı. Makale, yazarlar ve yayınlanan checkpoint'ler için AnyFlowFARPipeline sayfasına bakın. v0.35.1 Wan2.1 omurgasını üç ekleme ile genişletir:

  1. FAR'da tanıtılan parça bazlı otoregresif üretimi destekleyen, torch.nn.attention.flex_attention üzerinden uygulanan FAR nedensel blok maskesi.
  2. Bağlam (zaten üretilmiş) kareleri için sıkıştırılmış kare yama gömme (far_patch_embedding), inşa sırasında tam çözünürlüklü patch_embedding üzerinden üç doğrusal interpolasyonla başlatılır.
  3. Çift zaman adımı akış haritası gömümü (AnyFlowTransformer3DModel ile aynı) — her ileri çağrı, hem kaynak zaman adımına t hem de hedef zaman adımına r koşullanır.

Varsayılan parça zamanlaması (chunk_partition) model yapılandırmasında saklanır; yayımlanan NVIDIA AnyFlow-FAR kontrol noktaları, standart 81 kare ayarı için [1, 3, 3, 3, 3, 3, 3, 2] kullanır. forward, çağrı başına chunk_partition geçersiz kılma işlevini kabul eder, böylece aynı kontrol noktası yeniden eğitim gerektirmeden diğer num_frames yapılandırmalarını da işler.

from diffusers import AnyFlowFARTransformer3DModel

# Causal AnyFlow checkpoint (FAR):
transformer = AnyFlowFARTransformer3DModel.from_pretrained(
    "nvidia/AnyFlow-FAR-Wan2.1-1.3B-Diffusers", subfolder="transformer"
)

AnyFlowFARTransformer3DModel

sınıf diffusers.AnyFlowFARTransformer3DModel

< >

( patch_size: typing.Tuple[int] = (1, 2, 2)compressed_patch_size: typing.Tuple[int] = (1, 4, 4)full_chunk_limit: int = 3num_attention_heads: int = 40attention_head_dim: int = 128in_channels: int = 16out_channels: int = 16text_dim: int = 4096freq_dim: int = 256ffn_dim: int = 13824num_layers: int = 40cross_attn_norm: bool = Trueeps: float = 1e-06image_dim: typing.Optional[int] = Nonerope_max_seq_len: int = 1024gate_value: float = 0.25deltatime_type: str = 'r'chunk_partition: typing.Tuple[int, ...] = (1, 3, 3, 3, 3, 3, 3, 2) )

Parametreler

  • patch_size (Tuple[int], varsayılan (1, 2, 2)) — Tam çözünürlüklü parçalar için 3B yama boyutları.
  • compressed_patch_size (Tuple[int], varsayılan (1, 4, 4)) — FAR sıkıştırılmış (bağlam) parçaları için daha büyük yama boyutları.
  • full_chunk_limit (int, varsayılan 3) — Daha önceki chunk'lar sıkıştırılmış FAR bağlamına düşürülmeden önce izin verilen maksimum tam çözünürlüklü chunk sayısı. Yayınlanan checkpoint'ler 3 kullanır.
  • num_attention_heads (int, varsayılan 40) — Dikkat başlıklarının sayısı.
  • attention_head_dim (int, varsayılan 128) — Her baştaki kanal sayısı.
  • in_channels (int, varsayılan 16) — Girdi latentindeki kanal sayısı.
  • out_channels (int, varsayılan 16) — Çıktı latentindeki kanal sayısı.
  • text_dim (int, varsayılan 4096) — Metin gömme girdi boyutu (UMT5).
  • freq_dim (int, varsayılan 256) — Sinüzoidal zaman gömme boyutu.
  • ffn_dim (int, varsayılan 13824) — İleri beslemeli ağdaki ara boyut.
  • num_layers (int, varsayılan 40) — Transformer bloklarının sayısı.
  • cross_attn_norm (bool, varsayılan True) — Çapraz dikkat normalizasyonunu etkinleştirir.
  • eps (float, varsayılan 1e-6) — Normalizasyon katmanları için epsilon.
  • image_dim (Optional[int], isteğe bağlı, varsayılan None) — I2V koşullandırma için gömme boyutu.
  • rope_max_seq_len (int, varsayılan 1024) — Döner konum frekanslarını önceden hesaplamak için kullanılan maksimum dizi uzunluğu.
  • gate_value (float, varsayılan 0.25) — Kaynak zaman adımı ve delta zaman adımı gömme değerleri arasındaki karışım kapısı.
  • deltatime_type (str, varsayılan ‘r’) — Ya "r" (delta hedef zaman adımını temsil eder) ya da "t-r" (delta mutlak aralığı temsil eder).
  • chunk_partition (Tuple[int, …], varsayılan (1, 3, 3, 3, 3, 3, 3, 2)) — Hattın kullandığı varsayılan parça başına kare sayıları. Yayınlanan NVIDIA AnyFlow-FAR kontrol noktaları num_frames=81 hedefler (VAE zaman adımlı 4 ile 21 latent kare) ve 1 + 3*6 + 2 olarak bölünür. Farklı bir num_frames değeri, AnyFlowFARPipeline.call() (ve benzer şekilde forward) fonksiyonuna iletilen eşleşen bir chunk_partition geçersiz kılmasını gerektirir.

AnyFlow akış haritası örneklemesi için parça bazlı otoregresif üretim ile Neden-sonuç (FAR) 3D Transformer.

v0.35.1 Wan2.1 omurgasını şu özelliklerle genişletir:

  • torch.nn.attention.flex_attention ile FAR nedensel blok maskesi, parça bazlı otoregresif üretimi (FAR) destekler.
  • Bağlam (zaten oluşturulmuş) kareleri için sıkıştırılmış kare yama gömme far_patch_embedding, LoRA ince ayarı yapılmadan önce bile yeni oluşturulan bir modelin makul bir başlangıç noktasında olmasını sağlamak için üçlü doğrusal interpolasyon yoluyla patch_embedding'den başlatılır.
  • Herhangi bir adımda örneklemeye yönelik Çift zaman adımlı akış haritası gömümü (AnyFlowTransformer3DModel ile aynı).

Düz çift yönlü T2V için bunun yerine AnyFlowTransformer3DModel kullanın — bu varyant FAR nedensel maskelemeyi ve far_patch_embedding bileşenini atlar ve yaklaşık %5–10 daha küçüktür.

build_attention_mask

< >

( chunk_partition: typing.List[int]height: intwidth: inthas_clean_context: bool = Falsedevice: typing.Optional[torch.device] = Nonemode: str = 'train' ) → ~torch.nn.attention.flex_attention.BlockMask

Parametreler

  • chunk_partition — parça başına kare sayıları (toplamı, gizli kare sayısına eşit olmalıdır).
  • height, width — latent uzamsal boyutlar.
  • has_clean_context — clean_hidden_states, forward üzerinden geçirilecekse (V2V/I2V eğitimi) True olur; maske yerleşimini etkileyen tek varlık bayrağı budur.
  • device — Sonuç olarak oluşturulan BlockMask için cihaz. Mask, device_map="auto" ile otomatik olarak taşınmaz; onu, dönüştürücünün girdilerinin bulunacağı aynı cihazda oluşturun.
  • mode — "train" (_forward_train ile eşleşir) veya "cache" (_forward_cache ile eşleşir). Otomatik regresif _forward_inference yolu KV önbelleği üzerinden dikkat uygular ve burada bir moda sahip değildir.

Dönüş değeri

~torch.nn.attention.flex_attention.BlockMask

FAR yerleşimini kapsayan nedensel maske, sıralama boyutu boyunca 128'in katına yastıklandı (BlockMask blok boyutu gereksinimi).

Yükseltilen

ValueError

  • ValueError — mode ne "train" ne de "cache" ise.

Nedensel ~torch.nn.attention.flex_attention.BlockMask nesnesini forward dışında önceden oluşturun.

Tüm transformer'ın torch.compile(fullgraph=True) ile uyumlu hale gelmesi için sonucu forward'in attention_mask parametresi üzerinden iletin. Ön oluşturulmuş bir maske olmadan forward, maskenin içsel olarak oluşturulmasına geri düşer — bu yol flex_attention.create_block_mask(_compile=False) kullanır ve derleme grafiğini bozar.

forward

< >

( hidden_states: Tensortimestep: Tensorr_timestep: Tensorencoder_hidden_states: Tensorchunk_partition: typing.List[int]encoder_hidden_states_image: typing.Optional[torch.Tensor] = Noneclean_hidden_states: typing.Optional[torch.Tensor] = Noneclean_timestep: typing.Optional[torch.Tensor] = Nonekv_cache: typing.Optional[typing.List[typing.Dict[str, torch.Tensor]]] = Nonekv_cache_flag: typing.Optional[typing.Dict[str, typing.Any]] = Noneattention_mask: typing.Optional[torch.nn.attention.flex_attention.BlockMask] = Noneattention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = Nonereturn_dict: bool = True ) → [~models.transformer_2d.Transformer2DModelOutput], [AnyFlowFARTransformerOutput] or tuple

Parametreler

  • hidden_states (torch.Tensor) — (B, F, C, H, W) biçiminde gizli girdi.
  • timestep (torch.Tensor) — Kaynak (daha gürültülü) akış haritası zaman adımı t.
  • r_timestep (torch.Tensor) — Hedef (daha temiz) akış haritası zaman adımı r.
  • encoder_hidden_states (torch.Tensor) — UMT5 metin gömüleri.
  • chunk_partition (List[int]) — Parça başına kare sayıları; toplam, hidden_states içindeki gizli kare sayısıyla eşleşmelidir.
  • encoder_hidden_states_image (torch.Tensor, opsiyonel) — I2V gömülü görseli; sağlandığında metin jetonlarından önce birleştirilir.
  • clean_hidden_states (torch.Tensor, opsiyonel) — Eğitim rollout'unda kullanılan temiz (gürültüsüz) koşullandırma kareleri.
  • clean_timestep (torch.Tensor, opsiyonel) — Eğitim rollout'undaki temiz koşullandırma kareleri için zaman adımları.
  • kv_cache (List[Dict[str, torch.Tensor]], opsiyonel) — Otonom çıkarım için blok başına KV önbelleği. None eğitim yolunu seçer.
  • kv_cache_flag (Dict[str, Any], isteğe bağlı) — KV-cache meta verileri (ör. is_cache_step bayrağı ve token sayıları).
  • attention_mask (BlockMask, isteğe bağlı) — Genellikle build_attention_mask üzerinden oluşturulan, önceden hazırlanmış nedensel maske. Eğitim ve KV önbellek ön doldurma yolları tarafından kullanılır; otoregresif çıkarım yolu KV önbelleği üzerinden dikkat uygular ve tam bir maske kullanmaz. None olduğunda, eğitim / önbellek yolları maskenin içsel olarak oluşturulmasını sağlar; bu yedek çözüm derleme güvenliği açısından uygun değildir (alttaki flex_attention.create_block_mask, fullgraph=True altında grafiği bozar), bu nedenle forward işlevini torch.compile ile sarmalarken her zaman önceden hazırlanmış bir maske geçin.
  • attention_kwargs (dict, isteğe bağlı) — Dikkat işleyicilerine (attention processors) iletilir.
  • return_dict (bool, isteğe bağlı, varsayılan True) — False ise, çıktı veri sınıfı yerine konumsal demetler döndürülür.

Dönüş değeri

[~models.transformer_2d.Transformer2DModelOutput], [AnyFlowFARTransformerOutput] veya tuple

return_dict False olduğunda, düz bir tuple döndürülür. Aksi halde, nedensel eğitim rollout'u (kv_cache is None) bir [~models.transformer_2d.Transformer2DModelOutput] döndürürken, önbellek ön-doldurma ve otoregresif çıkarım yolları bir [AnyFlowFARTransformerOutput] döndürür.

FAR nedensel ileri geçişi. Üç iç yoldan birine yönlendirir:

  • kv_cache is None → nedensel eğitim dağıtımı (Transformer2DModelOutput döndürür).
  • kv_cache is not None ve kv_cache_flag["is_cache_step"] → cache-prefill (sample=None ile AnyFlowFARTransformerOutput döndürür).
  • Aksi halde → otoregresif çıkarım adımı (AnyFlowFARTransformerOutput döndürür).

AnyFlowFARTransformerOutput

sınıf diffusers.models.transformers.transformer_anyflow_far.AnyFlowFARTransformerOutput

< >

( sample: typing.Optional[torch.Tensor] = Nonekv_cache: typing.Optional[typing.List[typing.Dict[str, torch.Tensor]]] = None )

Parametreler

  • sample (torch.Tensor veya None) — Otomatik regresif parça için tahmin edilen gürültü azaltma hedefi. Sadece KV önbelleğini yazan ve kullanılabilir bir örnek üretmeyen önbellek ön-doldurma yolu için None.
  • kv_cache (list[dict[str, torch.Tensor]], opsiyonel) — Sonraki otoregresif adımlarda kullanılan blok başına KV önbellek durumu.

AnyFlowFARTransformer3DModel'in nedensel ileri yolları için çıktı veri sınıfı.

Update on GitHub