Diffusers documentation
SanaVideoTransformer3DModel
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
< source >( 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
< source >( 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
< source >( 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.