# SanaVideoTransformer3DModel

نموذج Diffusion Transformer للبيانات ثلاثية الأبعاد (فيديو) من [SANA-Video: Efficient Video Generation with Block Linear Diffusion Transformer](https://huggingface.co/papers/2509.24695) من NVIDIA و MIT HAN Lab، بواسطة 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, Enze Xie.

ملخص الورقة البحثية هو:

*نقدّم SANA-Video، وهو نموذج انتشار صغير قادر على توليد مقاطع فيديو بكفاءة تصل إلى دقة 720x1280 ومدة تصل إلى دقيقة واحدة. يولّد SANA-Video مقاطع فيديو عالية الدقة والجودة وطويلة المدة مع توافق قوي بين النص والفيديو وبسرعة فائقة، ويمكن نشره على بطاقة RTX 5090 GPU. تضمن تصميمان أساسيان توليد فيديو فعّال وفعال وطويل: (1) Linear DiT: نستفيد من الانتباه الخطي (linear attention) كعملية أساسية، وهو أكثر كفاءة من الانتباه التقليدي (vanilla attention) نظرًا لعدد الرموز الكبير الذي تتم معالجته في توليد الفيديو. (2) ذاكرة KV ثابتة الحجم لـ Block Linear Attention: صممنا نهجًا ذاتي التراجع (autoregressive) على مستوى الكتل لتوليد الفيديو الطويل من خلال استخدام حالة ذاكرة ثابتة الحجم، مشتقة من الخصائص التراكمية للانتباه الخطي. توفر هذه ذاكرة KV لـ Linear DiT سياقًا عامًا بتكلفة ذاكرة ثابتة، مما يلغي الحاجة إلى ذاكرة KV تقليدية ويمكّن من توليد فيديو طويل المدة بكفاءة. بالإضافة إلى ذلك، نستكشف مرشحات بيانات فعّالة واستراتيجيات تدريب للنموذج، مما ضيّق تكلفة التدريب إلى 12 يومًا على 64 بطاقة H100 GPU، وهي تكلفة لا تمثل سوى 1% من تكلفة MovieGen. وبفضل تكلفته المنخفضة، يحقق SANA-Video أداءً تنافسيًا مقارنةً بنماذج الانتشار الصغيرة الحديثة المتقدمة (مثل Wan 2.1-1.3B و SkyReel-V2-1.3B) مع كونه أسرع بـ 16 مرة في زمن الاستجابة المقاس. علاوة على ذلك، يمكن نشر SANA-Video على بطاقات RTX 5090 GPU بدقة NVFP4، مما يسرّع سرعة الاستدلال لتوليد فيديو بدقة 720p ومدته 5 ثوانٍ من 71 ثانية إلى 29 ثانية (تسريع بمقدار 2.4 مرة). باختصار، يمكّن SANA-Video من توليد فيديو عالي الجودة بتكلفة منخفضة.*

يمكن تحميل النموذج باستخدام مقتطف الشيفرة التالي.

```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[int, int, int] = (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)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_sana_video.py#L459)

**المعاملات:**

in_channels (`int`، القيمة الافتراضية `16`) : عدد القنوات في المدخلات.

out_channels (`int`، *اختياري*، القيمة الافتراضية `16`) : عدد القنوات في المخرجات.

num_attention_heads (`int`، القيمة الافتراضية `20`) : عدد الرؤوس المستخدمة في الانتباه متعدد الرؤوس.

attention_head_dim (`int`، القيمة الافتراضية `112`) : عدد القنوات في كل رأس.

num_layers (`int`، القيمة الافتراضية `20`) : عدد طبقات كتل Transformer المستخدمة.

num_cross_attention_heads (`int`، *اختياري*، القيمة الافتراضية `20`) : عدد الرؤوس المستخدمة للانتباه المتقاطع.

cross_attention_head_dim (`int`، *اختياري*، القيمة الافتراضية `112`) : عدد القنوات في كل رأس لانتباه التقاطع.

cross_attention_dim (`int`، *اختياري*، القيمة الافتراضية `2240`) : عدد القنوات في مخرجات الانتباه المتقاطع.

caption_channels (`int`، القيمة الافتراضية `2304`) : عدد القنوات في تضمينات الوصف.

mlp_ratio (`float`، القيمة الافتراضية `2.5`) : نسبة التوسيع المستخدمة في طبقة GLUMBConv.

dropout (`float`، القيمة الافتراضية `0.0`) : احتمال الإسقاط (dropout).

attention_bias (`bool`، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام الانحياز في طبقة الانتباه.

sample_size (`int`، القيمة الافتراضية `32`) : الحجم الأساسي للكامن المُدخل.

patch_size (`int`، القيمة الافتراضية `1`) : حجم البقع المستخدمة في طبقة تضمين البقع.

norm_elementwise_affine (`bool`، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام التقارب العنصري في طبقة التطبيع.

norm_eps (`float`، القيمة الافتراضية `1e-6`) : قيمة إبسيلون لطبقة التطبيع.

qk_norm (`str`، *اختياري*، القيمة الافتراضية `None`) : طريقة التطبيع المستخدمة للاستعلام والمفتاح.

نموذج Transformer ثلاثي الأبعاد تم تقديمه في عائلة نماذج [Sana-Video](https://huggingface.co/papers/2509.24695).

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

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_sana_video.py#L575)

**المعاملات:**

hidden_states (`torch.Tensor` من الشكل `(batch_size, in_channels, num_frames, height, width)`) : مدخلات `hidden_states`.

encoder_hidden_states (`torch.Tensor` من الشكل `(batch_size, sequence_len, embed_dims)`) : التضمينات الشرطية (التضمينات المحسوبة من الشروط المدخلة مثل الأوامر) للاستخدام.

timestep (`torch.LongTensor`) : يُستخدم للإشارة إلى خطوة إزالة الضوضاء.

guidance (`torch.Tensor`، *اختياري*) : تضمين مقياس التوجيه.

encoder_attention_mask (`torch.Tensor`، *اختياري*) : قناع الانتباه المتقاطع المطبّق على `encoder_hidden_states`.

attention_mask (`torch.Tensor`، *اختياري*) : قناع الانتباه الذاتي المطبّق على `hidden_states`.

attention_kwargs (`dict`، *اختياري*) : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرَّف تحت `self.processor` في [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

controlnet_block_samples (`tuple` من `torch.Tensor`، *اختياري*) : قائمة من الموترات التي إذا تم تحديدها تُضاف إلى بقايا كتل التحويل.

return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `~models.transformer_2d.Transformer2DModelOutput` بدلاً من tuple عادي.

**يعيد:**

إذا كان `return_dict` صحيحًا، يُعاد `~models.transformer_2d.Transformer2DModelOutput`، وإلا يُعاد `tuple` يكون عنصره الأول هو تينسور العينة.

طريقة [SanaVideoTransformer3DModel](/docs/diffusers/v0.43.0/ar/api/models/sana_video_transformer3d#diffusers.SanaVideoTransformer3DModel) الأمامية.

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

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_outputs.py#L21)

**المعاملات:**

sample (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)` أو `(batch size, num_vector_embeds - 1, num_latent_pixels)` إذا كان [Transformer2DModel](/docs/diffusers/v0.43.0/ar/api/models/transformer2d#diffusers.Transformer2DModel) منفصلاً): مخرجات الحالات المخفية المشروطة على مدخل `encoder_hidden_states`. إذا كان منفصلاً، يعيد توزيعات الاحتمال للبكسلات الكامنة غير الملوثة.

مخرجات [Transformer2DModel](/docs/diffusers/v0.43.0/ar/api/models/transformer2d#diffusers.Transformer2DModel).

