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