Diffusers documentation

جدولة متعددة الخطوات لنموذج الاتساق الكامن

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

جدولة متعددة الخطوات لنموذج الاتساق الكامن

نظرة عامة

جدولة متعددة الخطوات وجدولة خطوة واحدة (الخوارزمية 3) أُدخلت إلى جانب نماذج الاتساق الكامنة في ورقة Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference التي كتبها Simian Luo وYiqin Tan وLongbo Huang وJian Li وHang Zhao. يجب أن تكون هذه الجدولة قادرة على توليد عينات جيدة من LatentConsistencyModelPipeline في 1-8 خطوات.

LCMScheduler

فئة diffusers.LCMScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.00085beta_end: float = 0.012beta_schedule: str = 'scaled_linear'trained_betas: numpy.ndarray | list[float] | None = Noneoriginal_inference_steps: int = 50clip_sample: bool = Falseclip_sample_range: float = 1.0set_alpha_to_one: bool = Truesteps_offset: int = 0prediction_type: str = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995sample_max_value: float = 1.0timestep_spacing: str = 'leading'timestep_scaling: float = 10.0rescale_betas_zero_snr: bool = False )

المعاملات

  • num_train_timesteps (int، القيمة الافتراضية 1000) — عدد خطوات الانتشار لتدريب النموذج.
  • beta_start (float، القيمة الافتراضية 0.00085) — قيمة beta الابتدائية للاستدلال.
  • beta_end (float، القيمة الافتراضية 0.012) — القيمة النهائية لـbeta.
  • beta_schedule (str، القيمة الافتراضية "scaled_linear") — جدول بيتا، وهو إسقاط من نطاق بيتا إلى تسلسل من قيم بيتا لتقدم النموذج خطوة بخطوة. اختر من بين linear أو scaled_linear أو squaredcos_cap_v2.
  • trained_betas (np.ndarray أو list[float]، اختياري) — مرر مصفوفة من قيم بيتا مباشرةً إلى منشئ الكائن لتجاوز beta_start وbeta_end.
  • original_inference_steps (int)، القيمة الافتراضية 50 — عدد خطوات الاستدلال الافتراضي المستخدم لتوليد جدول أزمنة متباعد خطياً، حيث سنأخذ في النهاية num_inference_steps من أزمنة متباعدة بالتساوي لتشكيل جدول الأزمنة النهائي.
  • clip_sample (bool، القيمة الافتراضية False) — قص العينة المتوقعة من أجل الاستقرار العددي.
  • clip_sample_range (float، القيمة الافتراضية 1.0) — الحد الأقصى لحجم قصّ العينة. صالح فقط عندما يكون clip_sample=True.
  • set_alpha_to_one (bool، القيمة الافتراضية True) — يستخدم كل خطوة من خطوات الانتشار قيمة حاصل ضرب الألفا في تلك الخطوة وفي الخطوة السابقة. لا توجد ألفا سابقة للخطوة الأخيرة. عند تعيين هذا الخيار إلى True يتم تثبيت حاصل ضرب الألفا السابقة على 1، وإلا فإنه يستخدم قيمة الألفا في الخطوة 0.
  • steps_offset (int، القيمة الافتراضية 0) — إزاحة تُضاف إلى خطوات الاستدلال، كما تتطلبها بعض عائلات النماذج.
  • prediction_type (str, defaults to "epsilon") — Prediction type of the scheduler function; can be epsilon (predicts the noise of the diffusion process), sample (directly predicts the noisy sample) or v_prediction` (see section 2.4 of Imagen Video paper).
  • thresholding (bool، الافتراضي False) — ما إذا كان سيتم استخدام طريقة “العتبة الديناميكية”. هذه الطريقة غير مناسبة لنماذج الانتشار في الفضاء الكامن مثل Stable Diffusion.
  • dynamic_thresholding_ratio (float، القيمة الافتراضية 0.995) — النسبة المستخدمة في طريقة العتبة الديناميكية. تكون صالحة فقط عندما يكون thresholding=True.
  • sample_max_value (float، القيمة الافتراضية 1.0) — قيمة العتبة الخاصة بالتعتيم الديناميكي. صالحة فقط عندما يكون thresholding=True.
  • timestep_spacing (str، القيمة الافتراضية "leading") — طريقة توسيع خطوات الزمن. راجع الجدول 2 في جداول ضوضاء الانتشار الشائعة وخطوات العينات معيبة لمزيد من المعلومات.
  • timestep_scaling (float، القيمة الافتراضية 10.0) — المعامل الذي تُضرب به خطوات الزمن عند حساب شروط الحدود لنموذج الاتساق c_skip وc_out. زيادة هذا المعامل تقلل من خطأ التقريب (على الرغم من أن خطأ التقريب عند القيمة الافتراضية 10.0 صغير بالفعل).
  • rescale_betas_zero_snr (bool، القيمة الافتراضية False) — ما إذا كان يجب إعادة مقياس معاملات بيتا (betas) بحيث تكون نسبة الإشارة إلى الضوضاء النهائية (terminal SNR) صفرًا. يتيح هذا للنموذج توليد عينات ساطعة جدًا ومظلمة جدًا بدلاً من تقييده بتوليد عينات بإضاءة متوسطة. يرتبط ارتباطًا فضفاضًا بـ --offset_noise.

يمتد LCMScheduler على إجراء إزالة الضوضاء المُقدَّم في نماذج الانتشار الاحتمالية لإزالة الضوضاء (DDPMs) مع توجيه غير ماركوفي.

يرث هذا النموذج من SchedulerMixin و ConfigMixin. يتولى ~ConfigMixin تخزين جميع سمات الإعدادات التي تُمرَّر في دالة __init__ الخاصة بالجدول الزمني، مثل num_train_timesteps. يمكن الوصول إليها عبر scheduler.config.num_train_timesteps. يوفر SchedulerMixin وظائف عامة للتحميل والحفظ عبر الدالتين SchedulerMixin.save_pretrained() و from_pretrained().

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor

المعاملات

  • original_samples (torch.Tensor) — العينات الأصلية التي سيتم إضافة الضوضاء إليها.
  • noise (torch.Tensor) — الضوضاء التي يجب إضافتها إلى العينات.
  • timesteps (torch.IntTensor) — خطوات الزمن التي تشير إلى مستوى الضوضاء لكل عينة.

يعيد

torch.Tensor

العينات الضجيجية.

أضف الضوضاء إلى العينات الأصلية وفقًا لحجم الضوضاء في كل خطوة زمنية (وهذا هو عملية الانتشار الأمامية).

get_scalings_for_boundary_condition_discrete

< >

( timestep: int ) → tuple[float, float]

المعاملات

  • timestep (int) — خطوة الزمن المنفصلة التي يتم حساب المقاييس من أجلها.

يعيد

tuple[float, float]

مجموعة (tuple) تحتوي على c_skip (التحجيم لعينة الإدخال) وc_out (التحجيم للعينة المُتنبَّأ بها بعد إزالة الضوضاء).

يُحسب معاملات شروط الحدود (c_skip وc_out) للخطوة الزمنية المنفصلة المعطاة، كما تُستخدم في نموذج الاتساق الكامن (Latent Consistency Model).

get_velocity

< >

( sample: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor

المعاملات

  • sample (torch.Tensor) — العينة المدخلة.
  • noise (torch.Tensor) — مصفوفة الضوضاء.
  • timesteps (torch.IntTensor) — خطوات الزمن لحساب السرعة.

يعيد

torch.Tensor

السرعة المحسوبة.

احسب تنبؤ السرعة من العينة والضوضاء وفقًا لصيغة السرعة.

index_for_timestep

< >

( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int

المعاملات

  • timestep (float أو torch.Tensor) — قيمة الخطوة الزمنية التي يجب البحث عنها في الجدول الزمني.
  • schedule_timesteps (torch.Tensor، اختياري) — جدول الخطوات الزمنية للبحث فيه. إذا كان None، يتم استخدام self.timesteps.

يعيد

int

مؤشر خطوة الزمن في الجدول. بالنسبة للخطوة الأولى تمامًا، يُرجع المؤشر الثاني إذا كانت هناك تطابقات متعددة لتجنب تخطي قيمة سيجما عند البدء من منتصف الجدول (مثلًا، في تحويل الصورة إلى صورة).

ابحث عن فهرس خطوة زمنية محددة في جدول الخطوات الزمنية.

previous_timestep

< >

( timestep ) → int or torch.Tensor

المعاملات

  • timestep (int) — خطوة الزمن الحالية.

يعيد

int أو torch.Tensor

خطوة الزمن السابقة.

احسب خطوة الزمن السابقة في سلسلة الانتشار.

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

المعاملات

  • sample (torch.Tensor) — العينة المدخلة.
  • timestep (int، اختياري) — خطوة الزمن الحالية في سلسلة الانتشار.

يعيد

torch.Tensor

عينة إدخال مُقيّمة.

يضمن قابلية الاستبدال مع المجدولات التي تحتاج إلى تحجيم مدخلات نموذج إزالة الضوضاء اعتمادًا على خطوة الزمن الحالية.

set_begin_index

< >

( begin_index: int = 0 )

المعاملات

  • begin_index (int، القيمة الافتراضية 0) — الفهرس الابتدائي للمجدول.

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

set_timesteps

< >

( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device, NoneType] = Noneoriginal_inference_steps: int | None = Nonetimesteps: list[int] | None = Nonestrength: float = 1.0 ) → None

المعاملات

  • num_inference_steps (int, اختياري) — عدد خطوات الانتشار المستخدمة عند توليد العينات باستخدام نموذج مُدرَّب مسبقًا. إذا تم استخدامه، يجب أن يكون timesteps بقيمة None.
  • device (str أو torch.device، اختياري) — الجهاز الذي يجب نقل خطوات الزمن (timesteps) إليه. إذا كان None، فلن يتم نقل خطوات الزمن.
  • original_inference_steps (int, اختياري) — عدد خطوات الاستدلال الأصلية، الذي سيُستخدم لتوليد جدول أزمنة متباعد خطياً (وهو مختلف عن تطبيق diffusers القياسي). ثم سنأخذ num_inference_steps من أزمنة هذا الجدول، متباعدة بالتساوي من حيث الفهارس، ونستخدمها كجدول أزمنة نهائي. إذا لم يُضبط، فسيكون الافتراضي هو خاصية original_inference_steps.
  • timesteps (list[int]، اختياري) — خطوات زمنية مخصصة تُستخدم لدعم تباعد تعسفي بين الخطوات الزمنية. إذا كانت None، فسيتم استخدام استراتيجية التباعد الافتراضية للخطوات الزمنية، وهي التباعد المتساوي بين الخطوات الزمنية على جدول الخطوات الزمنية للتدريب/التقطير. إذا تم تمرير timesteps، يجب أن تكون num_inference_steps هي None.
  • strength (float، القيمة الافتراضية 1.0) — معامل القوة المستخدم لتوليد جدول خطوات زمنية جزئي (مثلًا لتحويل الصورة إلى صورة). القيمة 1.0 تستخدم الجدول الكامل.

يعيد

None

يحدد الخطوات الزمنية المنفصلة المستخدمة لسلسلة الانتشار (لتُنفَّذ قبل الاستدلال).

خطوة

< >

( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → LCMSchedulerOutput or tuple

المعاملات

  • model_output (torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم.
  • timestep (int) — خطوة الزمن المنفصلة الحالية في سلسلة الانتشار.
  • sample (torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار.
  • generator (torch.Generator، اختياري) — مولّد أرقام عشوائية لأخذ عينات قابلة للتكرار.
  • return_dict (bool، القيمة الافتراضية True) — ما إذا كان يجب إرجاع LCMSchedulerOutput أو tuple.

يعيد

LCMSchedulerOutput أو tuple

If return_dict is True, LCMSchedulerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.

تنبّأ بالعيّنة من الخطوة الزمنية السابقة عن طريق عكس عملية المعادلة التفاضلية العشوائية (SDE). تنقل هذه الدالة عملية الانتشار من مخرجات النموذج المُتعلَّم (والتي تكون في الغالب الضوضاء المتنبَّأ بها).

Update on GitHub