# WanAnimate2Transformer3DModel

Model Diffusion Transformer untuk data video 3D yang digunakan dalam [Wan-Animate-2](https://github.com/Wan-Video/Wan2.2) oleh Alibaba Wan Team. Model ini menganimasikan gambar karakter dengan gerakan dari video penggerak melalui mekanisme referensi in-context: setiap segmen pertama menjalankan jalur referensi (`kv_cache_mode="extract"`) yang meng-cache K/V referensi dari setiap lapisan, kemudian jalur denoising (`kv_cache_mode="cached"`) melakukan perhatian secara bersama atas token generasi dan token referensi yang di-cache melalui `BlockMask` fleksibel.

Model dapat dimuat dengan potongan kode berikut.

```python
from diffusers import WanAnimate2Transformer3DModel

transformer = WanAnimate2Transformer3DModel.from_pretrained("Wan-AI/Wan2.2-Animate-2-14B-Diffusers", subfolder="transformer", dtype=torch.bfloat16)
```

## WanAnimate2Transformer3DModel[[diffusers.WanAnimate2Transformer3DModel]]

#### diffusers.WanAnimate2Transformer3DModel[[diffusers.WanAnimate2Transformer3DModel]]

```python
diffusers.WanAnimate2Transformer3DModel(patch_size: tuple = (1, 2, 2), text_len: int = 512, in_dim: int = 36, dim: int = 5120, ffn_dim: int = 13824, freq_dim: int = 256, text_dim: int = 4096, out_dim: int = 16, num_heads: int = 40, num_layers: int = 40, cross_attn_norm: bool = True, eps: float = 1e-06, use_img_emb: bool = True, refer_offset_t: int = 1, refer_offset_h: int = 0, refer_offset_w: int = -1, refer_stride: int = 1)
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_wan_animate_2.py#L570)

**Parameter:**

patch_size (*tuple[int]*, defaultnya *(1, 2, 2)*) : dimensi patch 3D untuk embedding video (t_patch, h_patch, w_patch).

text_len (*int*, defaultnya *512*) : Panjang tetap untuk embedding teks.

in_dim (*int*, defaultnya *36*) : Jumlah channel pada input (2 * latent_channels + 4 untuk channel mask).

dim (*int*, defaultnya *5120*) : Jumlah channel dalam transformer.

ffn_dim (*int*, defaultnya *13824*) : Dimensi perantara dalam jaringan feed-forward.

freq_dim (*int*, defaultnya *256*) : Dimensi untuk penanaman waktu sinusoidal.

text_dim (*int*, defaultnya *4096*) : Dimensi input untuk embedding teks.

out_dim (*int*, defaultnya *16*) : Jumlah channel pada output.

num_heads (*int*, defaultnya *40*) : Jumlah kepala perhatian (attention heads).

num_layers (*int*, defaultnya *40*) : Jumlah lapisan blok transformer yang akan digunakan.

cross_attn_norm (*bool*, defaultnya *True*) : Aktifkan normalisasi cross-attention.

eps (*float*, defaultnya *1e-6*) : Nilai epsilon untuk lapisan normalisasi.

use_img_emb (*bool*, defaultnya *True*) : Apakah akan menggunakan embedding gambar CLIP.

refer_offset_t (*int*, defaultnya *1*) : Offset RoPE untuk dimensi temporal dari referensi.

refer_offset_h (*int*, defaultnya *0*) : offset RoPE untuk dimensi tinggi referensi.

refer_offset_w (*int*, defaultnya *-1*) : offset RoPE untuk dimensi lebar referensi. -1 berarti gunakan ukuran grid generasi.

refer_stride (*int*, defaultnya *1*) : Stride untuk penerapan RoPE pada referensi.

Model Transformer untuk data mirip video yang digunakan dalam model Wan-Animate-2.

Wan-Animate-2 menggunakan mekanisme perhatian in-context dengan KV cache: video referensi terlebih dahulu dikodekan (`kv_cache_mode="extract"`) untuk mengisi [*WanAnimate2KVCache*], kemudian setiap langkah denoising (`kv_cache_mode="cached"`) memperhatikan secara bersama atas token generasi dan K/V referensi yang di-cache melalui `BlockMask` fleksibel. Oleh karena itu, self-attention generasi hanya berjalan pada backend perhatian `flex`; semua perhatian lain dalam model bekerja pada backend apa pun.

#### forward[[diffusers.WanAnimate2Transformer3DModel.forward]]

```python
forward(hidden_states: list[torch.Tensor], timestep: Tensor, encoder_hidden_states: list[torch.Tensor], condition_latents: list[torch.Tensor], kv_cache: WanAnimate2KVCache, kv_cache_mode: str, seq_len: int, encoder_hidden_states_image: typing.Optional[torch.Tensor] = None, offset_grid_sizes: typing.Optional[torch.Tensor] = None, reference_grid_sizes: typing.Optional[torch.Tensor] = None, origin_len: int | None = None, origin_area: list[int] | None = None, is_uncondtion: bool = False, return_dict: bool = True)
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_wan_animate_2.py#L766)

**Parameter:**

hidden_states (`list[torch.Tensor]`) : Latents untuk pass ini — latents referensi saat `kv_cache_mode="extract"`, latents generasi berisik saat `kv_cache_mode="cached"`.

timestep (`torch.Tensor`) : Langkah waktu denoising. Diabaikan di bawah `kv_cache_mode="extract"`, yang menggunakan langkah waktu tetap 1.

encoder_hidden_states (`list[torch.Tensor]`) : Embedding teks untuk pass ini.

condition_latents (`list[torch.Tensor]`) : Laten kondisioning yang digabungkan ke `hidden_states` sebelum patch embedding.

kv_cache (`WanAnimate2KVCache`) : Ditulis dengan `kv_cache_mode="extract"`, dibaca dengan `"cached"`.

kv_cache_mode (`str`) : `"extract"` menjalankan pass referensi dan mengisi `kv_cache`; `"cached"` menjalankan langkah denoising terhadap token referensi yang di-cache.

seq_len (`int`) : Jumlah token yang harus dimiliki setiap sampel setelah patch embedding.

encoder_hidden_states_image (`torch.Tensor`, *opsional*) : embedding gambar CLIP, digunakan ketika model dikonfigurasi dengan `use_img_emb`.

offset_grid_sizes (`torch.Tensor`, *opsional*) : Grid patch dari latens referensi, digunakan untuk menyelesaikan `refer_offset_*` yang diset ke -1. Wajib digunakan saat `kv_cache_mode="extract"`; saat `"cached"`, `reference_grid_sizes` menggambarkan grid yang sama dan digunakan sebagai gantinya.

reference_grid_sizes (`torch.Tensor`, *opsional*) : Grid patch dari latens referensi, digunakan untuk rotary embeddings referensi. Wajib diisi saat `kv_cache_mode="cached"`.

origin_len (`int`, *opsional*) : Jumlah frame dari video lengkap, yang menjadi dasar pembuatan in-context block mask. Wajib diisi saat `kv_cache_mode="cached"`.

origin_area (`list[int]`, *opsional*) : Ukuran spasial `[height, width]` dari video penuh, yang menjadi dasar pembuatan in-context block mask. Wajib diisi saat `kv_cache_mode="cached"`.

is_uncondtion (`bool`, *opsional*) : Apakah ini cabang tanpa syarat dari classifier-free guidance.

return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan `~models.transformer_2d.Transformer2DModelOutput` alih-alih tuple biasa.

**Mengembalikan:** [Transformer2DModelOutput](/docs/diffusers/v0.43.0/id/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) atau `tuple(list[torch.Tensor])`

Sampel prediksi per laten input, tanpa patch; tuple polos jika `return_dict` adalah `False`.

## Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

#### diffusers.models.modeling_outputs.Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

```python
diffusers.models.modeling_outputs.Transformer2DModelOutput(sample: torch.Tensor)
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_outputs.py#L21)

**Parameter:**

sample (`torch.Tensor` dengan bentuk `(batch_size, num_channels, height, width)` atau `(batch size, num_vector_embeds - 1, num_latent_pixels)` jika [Transformer2DModel](/docs/diffusers/v0.43.0/id/api/models/transformer2d#diffusers.Transformer2DModel) bersifat diskrit) : Output hidden states yang dikondisikan pada input `encoder_hidden_states`. Jika diskrit, mengembalikan distribusi probabilitas untuk piksel laten yang tidak berisik.

Output dari [Transformer2DModel](/docs/diffusers/v0.43.0/id/api/models/transformer2d#diffusers.Transformer2DModel).

