Diffusers documentation
SanaWMTransformer3DModel
SanaWMTransformer3DModel
محوّل انتشار ثلاثي الأبعاد (1.6 مليار معامل) لتوليد الفيديو من الصور مع التحكم بالكاميرا، يُستخدم كمُعيّن المرحلة الأولى في SanaWMPipeline. يجمع المحوّل بين:
- فرع رئيسي لانتباه خطي ثنائي الاتجاه GDN-Triton (عمق 20، مخفي 2240، 20 رأساً)،
- فرع تحكم بالكاميرا يعتمد على UCPE (تضمين موحّد لوضع الكاميرا) يستهلك خريطة أشعة (raymap) وتمثيل Plücker للمسار المطلوب، و
- تضمين موضع دوّار ثلاثي الأبعاد بنمط Wan بالإضافة إلى كتل انتباه softmax دورية تُحقن كل
softmax_every_nطبقات.
يمكن تحميل النموذج باستخدام:
import torch
from diffusers import SanaWMTransformer3DModel
transformer = SanaWMTransformer3DModel.from_pretrained(
"Efficient-Large-Model/SANA-WM_bidirectional-diffusers",
subfolder="transformer",
torch_dtype=torch.bfloat16,
)SanaWMTransformer3DModel
فئة diffusers.SanaWMTransformer3DModel
< source >( in_channels: int = 128num_layers: int = 20hidden_size: int = 2240num_attention_heads: int = 20patch_size: tuple[int, int, int] = (1, 1, 1)softmax_every_n: int = 4linear_head_dim: int = 112ffn_type: str = 'GLUMBConvTemp't_kernel_size: int = 3conv_kernel_size: int = 4k_conv_only: bool = Truepos_embed_type: str = 'wan_rope'qk_norm: bool = Truecross_norm: bool = Truey_norm: bool = Truecam_attn_compress: int = 1init_cam_from_base: bool = Trueuse_chunk_plucker_post_attn: bool = Truechunk_plucker_channels: int = 48chunk_plucker_post_attn_blocks: int = 20fp32_attention: bool = Trueimage_size: int = 720caption_channels: int = 2304mlp_ratio: float = 3.0mlp_acts: tuple = ('silu', 'silu', None)use_pe: bool = Truelearn_sigma: bool = Falsepred_sigma: bool = Falsemixed_precision: str = 'bf16' )
المعاملات
- in_channels (int، القيمة الافتراضية 128) — قنوات VAE الكامنة (LTX-2).
- softmax_every_n (int، القيمة الافتراضية 4) — استخدم كتلة انتباه softmax كل N كتل.
- linear_head_dim (int، القيمة الافتراضية 112) — بُعد رأس GDN.
- ffn_type (str، القيمة الافتراضية
"GLUMBConvTemp") — FFN. - t_kernel_size (int، القيمة الافتراضية 3) — نواة الالتفاف الزمني.
- conv_kernel_size (int، القيمة الافتراضية 4) — نواة التحوّل المكاني داخل الانتباه.
- k_conv_only (bool، القيمة الافتراضية True) — تطبيق conv على K فقط.
- pos_embed_type (str، القيمة الافتراضية
"wan_rope") — تضمين الموضع. - qk_norm (bool، القيمة الافتراضية True) — تطبيق RMSNorm على Q/K.
- cross_norm (bool، القيمة الافتراضية True) — تطبيق RMSNorm على K في الانتباه المتقاطع.
- y_norm (bool، القيمة الافتراضية True) — تطبيق
attention_y_normعلى تمثيلات النص. - init_cam_from_base (bool، القيمة الافتراضية True) — غير مستخدم؛ يتم تحميل فرع الكاميرا من نقطة التفتيش. تم إبقاؤه حتى يتم تحميل ملفات config.json المُصدَّرة.
- use_chunk_plucker_post_attn (bool، القيمة الافتراضية True). —
- chunk_plucker_channels (int، القيمة الافتراضية 48) —
6 dims * temporal_stride 8. - chunk_plucker_post_attn_blocks (int، القيمة الافتراضية 20) — جميع الكتل.
- fp32_attention (bool، القيمة الافتراضية True) — غير مستخدم؛ حيث يتم تشغيل الانتباه دائمًا في fp32. تم إبقاؤه حتى يتم تحميل ملفات config.json المُصدَّرة.
- image_size (int، القيمة الافتراضية 720) — الحجم الاسمي للصورة.
- caption_channels (int، القيمة الافتراضية 2304) — حجم Gemma-2 المخفي.
SANA-WM 1600M DiT ثنائي الاتجاه يتحكم فيه الكاميرا.
نموذج DiT من فئة واحدة (depth=20, hidden_size=2240, patch_size=(1,1,1), num_heads=20 — أي الإصدار العام Efficient-Large-Model/SANA-WM_bidirectional). تعمل save_pretrained / from_pretrained مباشرةً عبر ConfigMixin.
تعمل كل كتلة على انتباه مشروط بالكاميرا (UCPE): [BidirectionalGDNUCPESinglePathLiteLA]، باستثناء كل كتلة رقمها softmax_every_n التي تعمل على نظيرها الخاص بـ softmax [_SoftmaxUCPESinglePathLiteLA].
يكون ملف الحالة (state-dict) مطابقًا تمامًا لنقطة التفتيش (checkpoint) العامة الخاصة بـ sana باستثناء مخزن pos_embed الذي تم حذفه عمدًا.
forward
< source >( hidden_states: torch.Tensortimestep: torch.Tensorencoder_hidden_states: torch.Tensorencoder_attention_mask: torch.Tensor | None = Nonemask: torch.Tensor | None = Nonereturn_dict: bool = Truedata_info: Optional[dict] = Nonecamera_conditions: torch.Tensor | None = Nonechunk_plucker: torch.Tensor | None = Nonecam_pos_embeds: Optional[dict] = Nonepos_embeds: torch.Tensor | None = Noneraymats: torch.Tensor | None = Noneframe_valid_mask: torch.Tensor | None = Nonechunk_size: int | None = None )
المعاملات
- hidden_states — كامنات بأبعاد
(B, C, T, H, W). - timestep —
(B, 1, T)خطوات الانتشار لكل إطار (بأسلوب LTX). - encoder_hidden_states — تمثيلات نصية
(B, 1, L, D_caption). - encoder_attention_mask — قناع انتباه النص
(B, L)(وفقًا لاتفاقية diffusers). - mask — اسم بديل لـ
encoder_attention_maskيتطابق مع اسم معامل kwarg الخاص بـ sana DiT. إذا تم تمرير كلاهما، فإنmaskله الأولوية. - return_dict — إذا كانت
True(الافتراضي)، تُرجعTransformer2DModelOutput؛ وإلا تُرجع tuple واحد(sample,). - data_info — شروط إضافية؛ يُدمج
data_info["image_vae_embeds"]مع الكمونات على محور القناة عند وجوده. - camera_conditions —
(B, T, 20)شروط الكاميرا الخام التي تقود فرع التحكم بالكاميرا (UCPE). - chunk_plucker — تمثيلات أشعة Plucker
(B, C, T, H, W)، تُستهلك عندما يكون النموذج مُهيأً باستخدامuse_chunk_plucker_input/use_chunk_plucker_post_attn. - cam_pos_embeds — تضمينات موضعية للكاميرا محسوبة مسبقًا (إدخالات
"absmap"/"P") اختيارية، تُعاد استخدامها بدلًا من إعادة حسابها. - pos_embeds — تضمينات مواقع دوّارة محسوبة مسبقًا اختيارية؛ عند أن تكون
Noneتُبنى من شكل الكمون. - raymats — مصفوفات أشعة UCPE محسوبة مسبقًا (اختياري) (تُستخدم فقط عندما لا يحمل
cam_pos_embeds"P"). - frame_valid_mask — قناع صلاحية اختياري لكل إطار، على شكل
(B, 1, T, 1, 1)أو(B, 1, T)أو(B, T). - chunk_size — تجاوز لطول المقطع يُمرَّر إلى الكتل؛ ويعود إلى
chunk_sizeالمُهيّأ لكل كتلة.
شغّل SANA-WM DiT.
x: (N, T, patch_size*2 C) imgs: (N, H, W, C)
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.