Diffusers documentation

AutoencoderDC

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderDC

نموذج Autoencoder ثنائي الأبعاد المستخدم في SANA والمُقدَّم في DCAE من قِبل المؤلفين Junyu Chen*، Han Cai*، Junsong Chen، Enze Xie، Shang Yang، Haotian Tang، Muyang Li، Yao Lu، Song Han من مختبر MIT HAN Lab.

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

نقدّم هنا Deep Compression Autoencoder (DC-AE)، وهو عائلة جديدة من نماذج الترميز الذاتي (autoencoder) لتسريع نماذج الانتشار عالية الدقة. لقد أظهرت نماذج الترميز الذاتي الحالية نتائج مبهرة عند نسبة ضغط مكانية معتدلة (مثل 8x)، لكنها تفشل في الحفاظ على دقة إعادة بناء مرضية عند نسب الضغط المكانية العالية (مثل 64x). نتعامل مع هذا التحدي من خلال تقديم تقنيتين رئيسيتين: (1) الترميز الذاتي المتبقي (Residual Autoencoding)، حيث نصمّم نماذجنا لتتعلم المتبقيات (residuals) بناءً على الميزات المحوّلة من الفضاء إلى القناة (space-to-channel transformed features) لتخفيف صعوبة التحسين في الترميزات الذاتية ذات الضغط المكاني العالي؛ (2) التكيف عالي الدقة المنفصل (Decoupled High-Resolution Adaptation)، وهو استراتيجية تدريب من ثلاث مراحل منفصلة بكفاءة للتخفيف من عقوبة التعميم (generalization penalty) في الترميزات الذاتية ذات الضغط المكاني العالي. بفضل هذه التصاميم، نرفع نسبة الضغط المكانية للترميز الذاتي حتى 128 مع الحفاظ على جودة إعادة البناء. عند تطبيق DC-AE الخاص بنا على نماذج الانتشار الكامنة (latent diffusion models)، نحقق تسريعًا كبيرًا دون انخفاض في الدقة. على سبيل المثال، على ImageNet 512x512، يوفر DC-AE الخاص بنا تسريعًا في الاستدلال بمقدار 19.1x وتسريعًا في التدريب بمقدار 17.9x على معالج H100 GPU لنموذج UViT-H، مع تحقيق FID أفضل، مقارنةً بترميز SD-VAE-f8 الذاتي الشائع الاستخدام. الكود الخاص بنا متاح في هذا الرابط https URL.

تم إصدار نماذج DCAE التالية ودعمها في Diffusers.

تنسيق Diffusersالصيغة الأصلية
mit-han-lab/dc-ae-f32c32-sana-1.0-diffusersmit-han-lab/dc-ae-f32c32-sana-1.0
mit-han-lab/dc-ae-f32c32-in-1.0-diffusersmit-han-lab/dc-ae-f32c32-in-1.0
mit-han-lab/dc-ae-f32c32-mix-1.0-diffusersmit-han-lab/dc-ae-f32c32-mix-1.0
mit-han-lab/dc-ae-f64c128-in-1.0-diffusersmit-han-lab/dc-ae-f64c128-in-1.0
mit-han-lab/dc-ae-f64c128-mix-1.0-diffusersmit-han-lab/dc-ae-f64c128-mix-1.0
mit-han-lab/dc-ae-f128c512-in-1.0-diffusersmit-han-lab/dc-ae-f128c512-in-1.0
mit-han-lab/dc-ae-f128c512-mix-1.0-diffusersmit-han-lab/dc-ae-f128c512-mix-1.0

تمت مساهمة هذا النموذج من قِبل lawrence-cj.

قم بتحميل نموذج بصيغة Diffusers باستخدام from_pretrained().

from diffusers import AutoencoderDC

ae = AutoencoderDC.from_pretrained("mit-han-lab/dc-ae-f32c32-sana-1.0-diffusers", dtype=torch.float32).to("cuda")  # or "mps", "xpu", "cpu"

تحميل نموذج في Diffusers عبر from_single_file

from difusers import AutoencoderDC

ckpt_path = "https://huggingface.co/mit-han-lab/dc-ae-f32c32-sana-1.0/blob/main/model.safetensors"
model = AutoencoderDC.from_single_file(ckpt_path) 

يتميز نموذج AutoencoderDC بنسختَي نقطة تحقق من ملف واحد هما in وmix، حيث تتطابق مفاتيح نقاط التحقق بينهما، لكنهما تستخدمان عوامل توسيط مختلفة. لا يمكن لـ Diffusers استنتاج ملف الإعداد الصحيح تلقائيًا للاستخدام مع النموذج بناءً على نقطة التحقق وحدها، وسيتم افتراضيًا تكوين النموذج باستخدام ملف إعداد النسخة mix. لتجاوز ملف الإعداد المحدد تلقائيًا، يُرجى استخدام الحجة config عند استخدام تحميل ملف واحد مع نقاط تحقق من النسخة in.

from diffusers import AutoencoderDC

ckpt_path = "https://huggingface.co/mit-han-lab/dc-ae-f128c512-in-1.0/blob/main/model.safetensors"
model = AutoencoderDC.from_single_file(ckpt_path, config="mit-han-lab/dc-ae-f128c512-in-1.0-diffusers")

AutoencoderDC

فئة diffusers.AutoencoderDC

< >

( in_channels: int = 3latent_channels: int = 32attention_head_dim: int = 32encoder_block_types: str | tuple[str] = 'ResBlock'decoder_block_types: str | tuple[str] = 'ResBlock'encoder_block_out_channels: tuple = (128, 256, 512, 512, 1024, 1024)decoder_block_out_channels: tuple = (128, 256, 512, 512, 1024, 1024)encoder_layers_per_block: tuple = (2, 2, 2, 3, 3, 3)decoder_layers_per_block: tuple = (3, 3, 3, 3, 3, 3)encoder_qkv_multiscales: tuple = ((), (), (), (5,), (5,), (5,))decoder_qkv_multiscales: tuple = ((), (), (), (5,), (5,), (5,))upsample_block_type: str = 'pixel_shuffle'downsample_block_type: str = 'pixel_unshuffle'decoder_norm_types: str | tuple[str] = 'rms_norm'decoder_act_fns: str | tuple[str] = 'silu'encoder_out_shortcut: bool = Truedecoder_in_shortcut: bool = Truedecoder_conv_act_fn: str = 'relu'scaling_factor: float = 1.0 )

المعاملات

  • in_channels (int)، القيمة الافتراضية 3) — عدد قنوات الإدخال في العينات.
  • latent_channels (int، القيمة الافتراضية 32) — عدد القنوات في تمثيل الفضاء الكامن.
  • encoder_block_types (str | tuple[str]، القيمة الافتراضية "ResBlock") — نوع أو أنواع الكتل المستخدمة في المُشفِّر.
  • decoder_block_types (str | tuple[str]، القيمة الافتراضية "ResBlock") — نوع أو أنواع الكتل المستخدمة في المُفكِّك.
  • encoder_block_out_channels (tuple[int, ...]، القيمة الافتراضية (128, 256, 512, 512, 1024, 1024)) — عدد قنوات الإخراج لكل كتلة في المُشفِّر.
  • decoder_block_out_channels (tuple[int, ...]، القيمة الافتراضية (128, 256, 512, 512, 1024, 1024)) — عدد قنوات الإخراج لكل كتلة في فك الترميز.
  • encoder_layers_per_block (tuple[int]، القيمة الافتراضية (2, 2, 2, 3, 3, 3)) — عدد الطبقات في كل كتلة داخل المُشفِّر.
  • decoder_layers_per_block (tuple[int]، القيمة الافتراضية (3, 3, 3, 3, 3, 3)) — عدد الطبقات في كل كتلة داخل المُفكِّك.
  • encoder_qkv_multiscales (tuple[tuple[int, ...], ...]، القيمة الافتراضية ((), (), (), (5,), (5,), (5,))) — إعدادات متعددة المقاييس لتحويلات QKV (الاستعلام-المفتاح-القيمة) في المُشفِّر.
  • decoder_qkv_multiscales (tuple[tuple[int, ...], ...]، القيمة الافتراضية ((), (), (), (5,), (5,), (5,))) — إعدادات متعددة المقاييس لتحويلات QKV (الاستعلام-المفتاح-القيمة) في المُفكِّك.
  • upsample_block_type (str، القيمة الافتراضية "pixel_shuffle") — نوع الكتلة المستخدمة للتصعيد (upsampling) في فك الترميز.
  • downsample_block_type (str، القيمة الافتراضية "pixel_unshuffle") — نوع الكتلة المستخدمة لعملية تقليل الدقة في المُشفِّر.
  • decoder_norm_types (str | tuple[str]، القيمة الافتراضية "rms_norm") — أنواع التطبيع المستخدمة في المُفكِّك.
  • decoder_act_fns (str | tuple[str]، القيمة الافتراضية "silu") — دوال التنشيط المستخدمة في المُفكِّك.
  • encoder_out_shortcut (bool، القيمة الافتراضية True) — ما إذا كان سيتم استخدام الاختصار في نهاية المُشفِّر.
  • decoder_in_shortcut (bool، القيمة الافتراضية True) — ما إذا كان سيتم استخدام الاختصار في بداية المُفكِّك.
  • decoder_conv_act_fn (str، القيمة الافتراضية "relu") — دالة التنشيط المستخدمة في نهاية المُفكِّك.
  • scaling_factor (float، القيمة الافتراضية 1.0) — المقلوب الضربي لجذر متوسط مربع الميزات الكامنة. يُستخدم هذا العامل لتقريب مساحة الكامنة بحيث تكون تباينها وحدة واحدة عند تدريب نموذج الانتشار. يتم قياس الكامنة باستخدام الصيغة z = z * scaling_factor قبل تمريرها إلى نموذج الانتشار. عند فك الترميز، تُعاد الكامنة إلى مقياسها الأصلي باستخدام الصيغة: z = 1 / scaling_factor * z.

نموذج Autoencoder تم تقديمه في DCAE واستخدامه في SANA.

يرث هذا النموذج من ModelMixin. راجع توثيق الفئة الأصلية لمعرفة طرقه العامة المُنفَّذة لجميع النماذج (مثل التنزيل أو الحفظ).

encode

< >

( x: Tensorreturn_dict: bool = True )

المعاملات

  • x (torch.Tensor) — دفعة مدخلات من الصور.
  • return_dict (bool، القيمة الافتراضية True) — ما إذا كان يجب إرجاع ~models.vae.EncoderOutput بدلاً من tuple عادي.

ترميز دفعة من الصور إلى كامنات.

decode

< >

( z: Tensorreturn_dict: bool = True ) → ~models.vae.DecoderOutput or tuple

المعاملات

  • z (torch.Tensor) — دفعة مدخلات من المتجهات الكامنة.
  • return_dict (bool، القيمة الافتراضية True) — ما إذا كان يجب إرجاع ~models.vae.DecoderOutput بدلاً من tuple عادي.

يعيد

~models.vae.DecoderOutput أو tuple

If return_dict is True, a ~models.vae.DecoderOutput is returned, otherwise a plain tuple is returned.

فكّ تشفير دفعة من الصور.

enable_tiling

< >

( tile_sample_min_height: int | None = Nonetile_sample_min_width: int | None = Nonetile_sample_stride_height: float | None = Nonetile_sample_stride_width: float | None = None )

المعاملات

  • tile_sample_min_height (int, اختياري) — الحد الأدنى للارتفاع المطلوب حتى يتم فصل العينة إلى بلاطات عبر بُعد الارتفاع.
  • tile_sample_min_width (int, اختياري) — الحد الأدنى لعرض العينة المطلوب لفصلها إلى بلاطات عبر بُعد العرض.
  • tile_sample_stride_height (int, اختياري) — الحد الأدنى من التداخل بين بلاطتين عموديتين متتاليتين. يهدف هذا إلى ضمان عدم ظهور أي شوائب تخطيط عبر بُعد الارتفاع.
  • tile_sample_stride_width (int, اختياري) — الخطوة بين بلاطتين أفقيتين متتاليتين. يهدف هذا إلى ضمان عدم ظهور أي شوائب ناتجة عن التقطيع عبر بُعد العرض.

تفعيل فك ترميز AE المُجزّأ. عند تفعيل هذا الخيار، سيقوم AE بتقسيم المصفوفة المدخلة إلى بلاطات لحساب فك الترميز والترميز على عدة خطوات. وهذا مفيد لتوفير كمية كبيرة من الذاكرة ولتيسير معالجة صور أكبر.

forward

< >

( sample: Tensorreturn_dict: bool = True ) → ~models.vae.DecoderOutput or tuple

المعاملات

  • sample (torch.Tensor) — عينة الإدخال.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع DecoderOutput بدلاً من tuple عادي.

يعيد

~models.vae.DecoderOutput أو tuple

إذا كان return_dict صحيحًا، يُعاد ~models.vae.DecoderOutput، وإلا يُعاد tuple عادي.

DecoderOutput

فئة diffusers.models.autoencoders.vae.DecoderOutput

< >

( sample: Tensorcommit_loss: typing.Optional[torch.FloatTensor] = None )

المعاملات

  • sample (torch.Tensor من الشكل (batch_size, num_channels, height, width)) — عينة المخرجات المُفكَّكة من الطبقة الأخيرة للنموذج.

مخرجات طريقة فك الترميز.

Update on GitHub