Diffusers documentation

SanaTransformer2DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SanaTransformer2DModel

A Diffusion Transformer model for 2D data from SANA: Efficient High-Resolution Image Synthesis with Linear Diffusion Transformers was introduced from NVIDIA and MIT HAN Lab, by Enze Xie, Junsong Chen, Junyu Chen, Han Cai, Haotian Tang, Yujun Lin, Zhekai Zhang, Muyang Li, Ligeng Zhu, Yao Lu, Song Han.

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

نقدّم Sana، وهو إطار لتوليد الصور من النص قادر على توليد صور بكفاءة تصل دقتها إلى 4096×4096. يمكن لـ Sana توليد صور عالية الدقة والجودة مع توافق قوي بين النص والصورة بسرعة فائقة، ويمكن نشره على وحدة معالجة رسومية في حاسوب محمول. تشمل التصاميم الأساسية: (1) مُشفِّر تلقائي ضاغط بعمق: على عكس المُشفِّفات التلقائية التقليدية التي تضغط الصور 8× فقط، درّبنا مُشفِّفاً تلقائياً يمكنه ضغط الصور 32×، مما يقلل بشكل فعال عدد الرموز الكامنة. (2) DiT الخطي: استبدلنا كل الانتباه العادي في DiT بالانتباه الخطي، وهو أكثر كفاءة عند الدقات العالية دون التضحية بالجودة. (3) مُشفِّر نصي يعتمد على المُفكِّك فقط: استبدلنا T5 بنموذج لغوي صغير حديث يعتمد على المُفكِّك فقط كمُشفِّر للنص، وصممنا تعليمات بشرية معقدة باستخدام التعلم في السياق لتعزيز التوافق بين الصورة والنص. (4) تدريب وعيّنة فعّالان: نقترح Flow-DPM-Solver لتقليل خطوات العينة، مع تسمية واختيار فعّالين للوصف لتسريع التقارب. ونتيجة لذلك، يُعد Sana-0.6B منافساً قوياً لنماذج الانتشار العملاقة الحديثة (مثل Flux-12B)، فهو أصغر بـ 20 مرة وأسرع بأكثر من 100 مرة في معدل الإنتاج المقاس. علاوة على ذلك، يمكن نشر Sana-0.6B على وحدة معالجة رسومية بحجم 16 جيجابايت في حاسوب محمول، ويستغرق أقل من ثانية واحدة لتوليد صورة بدقة 1024×1024. يتيح Sana إنشاء المحتوى بتكلفة منخفضة. سيتم إصدار الكود والنموذج علنياً.

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

from diffusers import SanaTransformer2DModel

transformer = SanaTransformer2DModel.from_pretrained("Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers", subfolder="transformer", dtype=torch.bfloat16)

SanaTransformer2DModel

فئة diffusers.SanaTransformer2DModel

< >

( in_channels: int = 32out_channels: int | None = 32num_attention_heads: int = 70attention_head_dim: int = 32num_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 = 32patch_size: int = 1norm_elementwise_affine: bool = Falsenorm_eps: float = 1e-06interpolation_scale: int | None = Noneguidance_embeds: bool = Falseguidance_embeds_scale: float = 0.1qk_norm: str | None = Nonetimestep_scale: float = 1.0 )

المعاملات

  • in_channels (int، القيمة الافتراضية 32) — عدد القنوات في المدخلات.
  • out_channels (int، اختياري، القيمة الافتراضية 32) — عدد القنوات في المخرجات.
  • num_attention_heads (int، القيمة الافتراضية 70) — عدد الرؤوس المستخدمة في الانتباه متعدد الرؤوس.
  • attention_head_dim (int، القيمة الافتراضية 32) — عدد القنوات في كل رأس.
  • 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) — طريقة التطبيع المستخدمة للاستعلام والمفتاح.
  • timestep_scale (float، القيمة الافتراضية 1.0) — المقياس المستخدم للتimesteps.

نموذج Transformer ثنائي الأبعاد تم تقديمه في عائلة نماذج Sana.

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, 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 عادي.

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

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