# SanaVideoTransformer3DModel

NVIDIA ve MIT HAN Lab'tan Junsong Chen, Yuyang Zhao, Jincheng Yu, Ruihang Chu, Junyu Chen, Shuai Yang, Xianbang Wang, Yicheng Pan, Daquan Zhou, Huan Ling, Haozhe Liu, Hongwei Yi, Hao Zhang, Muyang Li, Yukang Chen, Han Cai, Sanja Fidler, Ping Luo, Song Han ve Enze Xie tarafından geliştirilen [SANA-Video: Efficient Video Generation with Block Linear Diffusion Transformer](https://huggingface.co/papers/2509.24695) makalesinden 3D veri (video) için bir Diffusion Transformer modeli.

Makalenin özeti şudur:

*SANA-Video'yu tanıtıyoruz; 720x1280 çözünürlüğe ve dakikalarca süreye kadar videoları verimli bir şekilde üretebilen küçük bir difüzyon modeli. SANA-Video, güçlü metin-video hizalamasıyla yüksek çözünürlüklü, yüksek kaliteli ve uzun videoları şaşırtıcı bir hızda sentezleyebilir ve RTX 5090 GPU üzerinde dağıtılabilir. Verimli, etkili ve uzun video üretimimizi sağlayan iki temel tasarım vardır: (1) Linear DiT: Video üretiminde işlenen büyük token sayısı nedeniyle vanilla attention'dan daha verimli olan lineer attention'ı temel işlem olarak kullanıyoruz. (2) Block Linear Attention için Sabit-Hafıza KV önbelleği: Lineer attention'ın kümülatif özelliklerinden türetilen sabit-hafıza bir durum kullanarak uzun video üretimi için blok bazlı otoregresif bir yaklaşım tasarladık. Bu KV önbelleği, Linear DiT'ye sabit bir hafıza maliyetiyle global bağlam sağlayarak geleneksel bir KV önbelleğine olan ihtiyacı ortadan kaldırır ve verimli, dakikalarca süren video üretimini mümkün kılar. Ayrıca, etkili veri filtreleri ve model eğitim stratejilerini inceleyerek eğitim maliyetini 64 H100 GPU üzerinde 12 güne indirdik; bu, MovieGen'in maliyetinin yalnızca %1'ine karşılık gelir. Düşük maliyeti sayesinde SANA-Video, ölçülen gecikmede 16 kat daha hızlı olmasına rağmen, modern en iyi küçük difüzyon modelleriyle (ör. Wan 2.1-1.3B ve SkyReel-V2-1.3B) rekabetçi performans elde eder. Üstelik SANA-Video, NVFP4 hassasiyetiyle RTX 5090 GPU'larda dağıtılabilir; bu da 5 saniyelik 720p bir video üretme için çıkarım hızını 71 saniyeden 29 saniyeye (2.4 kat hızlanma) düşürür. Özetle, SANA-Video düşük maliyetli, yüksek kaliteli video üretimini mümkün kılar.*

Model, aşağıdaki kod parçasıyla yüklenebilir.

```python
from diffusers import SanaVideoTransformer3DModel
import torch

transformer = SanaVideoTransformer3DModel.from_pretrained("Efficient-Large-Model/SANA-Video_2B_480p_diffusers", subfolder="transformer", dtype=torch.bfloat16)
```

## SanaVideoTransformer3DModel[[diffusers.SanaVideoTransformer3DModel]]

#### diffusers.SanaVideoTransformer3DModel[[diffusers.SanaVideoTransformer3DModel]]

```python
diffusers.SanaVideoTransformer3DModel(in_channels: int = 16, out_channels: int | None = 16, num_attention_heads: int = 20, attention_head_dim: int = 112, num_layers: int = 20, num_cross_attention_heads: int | None = 20, cross_attention_head_dim: int | None = 112, cross_attention_dim: int | None = 2240, caption_channels: int = 2304, mlp_ratio: float = 2.5, dropout: float = 0.0, attention_bias: bool = False, sample_size: int = 30, patch_size: tuple = (1, 2, 2), norm_elementwise_affine: bool = False, norm_eps: float = 1e-06, interpolation_scale: int | None = None, guidance_embeds: bool = False, guidance_embeds_scale: float = 0.1, qk_norm: str | None = 'rms_norm_across_heads', rope_max_seq_len: int = 1024)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_sana_video.py#L459)

**Parametreler:**

in_channels (`int`, varsayılan `16`) : Girdideki kanal sayısı.

out_channels (`int`, *isteğe bağlı*, varsayılan `16`) : Çıktıdaki kanal sayısı.

num_attention_heads (`int`, varsayılan `20`) : Çok başlı dikkat için kullanılacak baş sayısı.

attention_head_dim (`int`, varsayılan `112`) : Her baştaki kanal sayısı.

num_layers (`int`, varsayılan `20`) : Kullanılacak Transformer bloğu katman sayısı.

num_cross_attention_heads (`int`, *isteğe bağlı*, varsayılan `20`) : Çapraz dikkat için kullanılacak baş sayısı.

cross_attention_head_dim (`int`, *isteğe bağlı*, varsayılan `112`) : Çapraz dikkat için her baştaki kanal sayısı.

cross_attention_dim (`int`, *isteğe bağlı*, varsayılan `2240`) : Çapraz dikkat çıktısındaki kanal sayısı.

caption_channels (`int`, varsayılan `2304`) : Başlık gömme vektörlerindeki kanal sayısı.

mlp_ratio (`float`, varsayılan `2.5`) : GLUMBConv katmanında kullanılacak genişletme oranı.

dropout (`float`, varsayılan `0.0`) : Dropout olasılığı.

attention_bias (`bool`, varsayılan `False`) : Dikkat katmanında önyargı (bias) kullanılıp kullanılmayacağı.

sample_size (`int`, varsayılan `32`) : Girdi latentinin temel boyutu.

patch_size (`int`, varsayılan `1`) : Yama gömme katmanında kullanılacak yamaların boyutu.

norm_elementwise_affine (`bool`, varsayılan `False`) : Normalizasyon katmanında öge bazlı yakınlığın (elementwise affinity) kullanılıp kullanılmayacağı.

norm_eps (`float`, varsayılan `1e-6`) : Normalizasyon katmanı için epsilon değeri.

qk_norm (`str`, *isteğe bağlı*, varsayılan `None`) : Sorgu ve anahtar için kullanılacak normalizasyon.

[Sana-Video](https://huggingface.co/papers/2509.24695) model ailesinde tanıtılan 3B Transformer modeli.

#### forward[[diffusers.SanaVideoTransformer3DModel.forward]]

```python
forward(hidden_states: Tensor, encoder_hidden_states: Tensor, timestep: Tensor, guidance: typing.Optional[torch.Tensor] = None, encoder_attention_mask: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, attention_kwargs: dict[str, typing.Any] | None = None, controlnet_block_samples: tuple[torch.Tensor] | None = None, return_dict: bool = True)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_sana_video.py#L575)

**Parametreler:**

hidden_states (`torch.Tensor`, şekli `(batch_size, in_channels, num_frames, height, width)`) : Girdi `hidden_states`.

encoder_hidden_states (`torch.Tensor`, şekli `(batch_size, sequence_len, embed_dims)`) : Kullanılacak koşullu gömlemeler (giriş koşullarından, örneğin istemlerden hesaplanan gömlemeler).

timestep (`torch.LongTensor`) : Gürültü azaltma adımını belirtmek için kullanılır.

guidance (`torch.Tensor`, *isteğe bağlı*) : Rehberlik ölçeği gömme (embedding).

encoder_attention_mask (`torch.Tensor`, *isteğe bağlı*) : `encoder_hidden_states`'e uygulanan çapraz dikkat maskesi.

attention_mask (`torch.Tensor`, *isteğe bağlı*) : `hidden_states`'e uygulanan öz-dikkat maskesi.

attention_kwargs (`dict`, *isteğe bağlı*) : Belirtilirse, [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) içinde `self.processor` altında tanımlanan `AttentionProcessor`'a iletilen bir kwargs sözlüğü.

controlnet_block_samples (`tuple` of `torch.Tensor`, *opsiyonel*) : Belirtilirse, transformer bloklarının artımlarına eklenen tensörlerin listesi.

return_dict (`bool`, *isteğe bağlı*, varsayılan `True`) : Düz bir tuple yerine `~models.transformer_2d.Transformer2DModelOutput` döndürülüp döndürülmediğini belirtir.

**Dönüş:**

`return_dict` True ise, `~models.transformer_2d.Transformer2DModelOutput` döndürülür, aksi takdirde ilk öğesi örnek tensörü olan bir `tuple` döndürülür.

[SanaVideoTransformer3DModel](/docs/diffusers/main/tr/api/models/sana_video_transformer3d#diffusers.SanaVideoTransformer3DModel) ileri yöntemi.

## 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)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/modeling_outputs.py#L21)

**Parametreler:**

sample (`torch.Tensor`, şekli `(batch_size, num_channels, height, width)` veya [Transformer2DModel](/docs/diffusers/main/tr/api/models/transformer2d#diffusers.Transformer2DModel) ayrık (discrete) ise `(batch size, num_vector_embeds - 1, num_latent_pixels)`) : `encoder_hidden_states` girdisine koşullu gizli durum (hidden states) çıktısı. Ayrık (discrete) ise, gürültüsü olmayan (unnoised) gizli (latent) pikseller için olasılık dağılımlarını döndürür.

[Transformer2DModel](/docs/diffusers/main/tr/api/models/transformer2d#diffusers.Transformer2DModel)'nin çıktısı.

