Diffusers documentation

SanaVideoTransformer3DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SanaVideoTransformer3DModel

نموذج Diffusion Transformer للبيانات ثلاثية الأبعاد (فيديو) من SANA-Video: Efficient Video Generation with Block Linear Diffusion Transformer من 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 من توليد فيديو عالي الجودة بتكلفة منخفضة.

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

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

< >

( in_channels: int = 16out_channels: int | None = 16num_attention_heads: int = 20attention_head_dim: int = 112num_layers: int = 20num_cross_attention_heads: int | None = 20cross_attention_head_dim: int | None = 112cross_attention_dim: int | None = 2240caption_channels: int = 2304mlp_ratio: float = 2.5dropout: float = 0.0attention_bias: bool = Falsesample_size: int = 30patch_size: tuple[int, int, int] = (1, 2, 2)norm_elementwise_affine: bool = Falsenorm_eps: float = 1e-06interpolation_scale: int | None = Noneguidance_embeds: bool = Falseguidance_embeds_scale: float = 0.1qk_norm: str | None = 'rms_norm_across_heads'rope_max_seq_len: int = 1024 )

المعاملات

  • 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).
  • 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.

forward

< >

( hidden_states: Tensorencoder_hidden_states: Tensortimestep: Tensorguidance: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneattention_kwargs: dict[str, typing.Any] | None = Nonecontrolnet_block_samples: tuple[torch.Tensor] | None = Nonereturn_dict: bool = True )

المعاملات

  • 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.
  • controlnet_block_samples (tuple من torch.Tensor، اختياري) — قائمة من الموترات التي إذا تم تحديدها تُضاف إلى بقايا كتل التحوّل.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع ~models.transformer_2d.Transformer2DModelOutput بدلاً من tuple عادي.

طريقة SanaVideoTransformer3DModel الأمامية.

Transformer2DModelOutput

فئة diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

المعاملات

  • sample (torch.Tensor من الشكل (batch_size, num_channels, height, width) أو (batch size, num_vector_embeds - 1, num_latent_pixels) إذا كان Transformer2DModel منفصلاً) — مخرجات الحالات المخفية المشروطة على مدخل encoder_hidden_states. إذا كان منفصلاً، يعيد توزيعات الاحتمال للبكسلات الكامنة غير الملوثة.

مخرجات Transformer2DModel.

Update on GitHub