Diffusers documentation

EDMDPMSolverMultistepScheduler

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

EDMDPMSolverMultistepScheduler

EDMDPMSolverMultistepScheduler هو صياغة Karras لـ DPMSolverMultistepScheduler، وهو مجدول متعدد الخطوات من DPM-Solver: A Fast ODE Solver for Diffusion Probabilistic Model Sampling in Around 10 Steps و DPM-Solver++: Fast Solver for Guided Sampling of Diffusion Probabilistic Models من تأليف Cheng Lu و Yuhao Zhou و Fan Bao و Jianfei Chen و Chongxuan Li و Jun Zhu.

DPMSolver (والنسخة المحسّنة DPMSolver++) هو محلل سريع مخصص من الرتبة العالية لمعادلات التفاضلية العادية للانتشار، مع ضمان لرتبة التقارب. عملياً، يمكن لعينة DPMSolver باستخدام 20 خطوة فقط أن تولّد عينات عالية الجودة، كما يمكنها توليد عينات جيدة جداً حتى في 10 خطوات.

EDMDPMSolverMultistepScheduler

فئة diffusers.EDMDPMSolverMultistepScheduler

< >

( sigma_min: float = 0.002sigma_max: float = 80.0sigma_data: float = 0.5sigma_schedule: typing.Literal['karras', 'exponential'] = 'karras'num_train_timesteps: int = 1000prediction_type: typing.Literal['epsilon', 'sample', 'v_prediction'] = 'epsilon'rho: float = 7.0solver_order: int = 2thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995sample_max_value: float = 1.0algorithm_type: typing.Literal['dpmsolver++', 'sde-dpmsolver++'] = 'dpmsolver++'solver_type: typing.Literal['midpoint', 'heun'] = 'midpoint'lower_order_final: bool = Trueeuler_at_final: bool = Falsefinal_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )

المعاملات

  • sigma_min (float، اختياري، القيمة الافتراضية 0.002) — أدنى مقدار للضوضاء في جدول سيجما. تم ضبطه على 0.002 في ورقة EDM [1]؛ والنطاق المعقول هو [0، 10].
  • sigma_max (float، اختياري، القيمة الافتراضية 80.0) — أقصى قيمة لضوضاء في جدول sigma. تم ضبطها على 80.0 في ورقة EDM [1]؛ النطاق المعقول هو [0.2, 80.0].
  • sigma_data (float، اختياري، القيمة الافتراضية 0.5) — انحراف المعيار لتوزيع البيانات. تم ضبطه على 0.5 في ورقة EDM [1].
  • sigma_schedule (str، اختياري، القيمة الافتراضية karras) — جدول سيجما لحساب sigmas. بشكل افتراضي، نستخدم الجدول المقدم في ورقة EDM (https://huggingface.co/papers/2206.00364). القيمة المقبولة الأخرى هي “exponential”. تم دمج الجدول الأسي في هذا النموذج: https://huggingface.co/stabilityai/cosxl.
  • num_train_timesteps (int، القيمة الافتراضية 1000) — عدد خطوات الانتشار لتدريب النموذج.
  • prediction_type (str, defaults to epsilon, optional) — 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).
  • rho (float، اختياري، القيمة الافتراضية 7.0) — معامل rho في جدول Karras sigma. تم ضبطه على 7.0 في ورقة EDM [1].
  • solver_order (int، القيمة الافتراضية 2) — ترتيب DPMSolver الذي يمكن أن يكون 1 أو 2 أو 3. يُوصى باستخدام solver_order=2 للعينة الموجَّهة، وsolver_order=3 للعينة غير المشروطة.
  • thresholding (bool، الافتراضي False) — ما إذا كان سيتم استخدام طريقة “العتبة الديناميكية”. هذه الطريقة غير مناسبة لنماذج الانتشار في الفضاء الكامن مثل Stable Diffusion.
  • dynamic_thresholding_ratio (float) — النسبة المستخدمة في طريقة العتبة الديناميكية. تكون صالحة فقط عندما يكون thresholding=True.
  • sample_max_value (float، القيمة الافتراضية 1.0) — القيمة العتبة للتعتيب الديناميكي. صالحة فقط عندما يكون thresholding=True و algorithm_type="dpmsolver++".
  • algorithm_type (str، القيمة الافتراضية dpmsolver++) — نوع الخوارزمية للمُحلِّل؛ يمكن أن يكون dpmsolver++ أو sde-dpmsolver++. ينفّذ النوع dpmsolver++ الخوارزميات الواردة في ورقة DPMSolver++. يوصى باستخدام dpmsolver++ أو sde-dpmsolver++ مع solver_order=2 لأخذ العينات الموجَّهة كما في Stable Diffusion.
  • solver_type (str، القيمة الافتراضية midpoint) — نوع المُحلِّل للمُحلِّل من الرتبة الثانية؛ يمكن أن يكون midpoint أو heun. يؤثر نوع المُحلِّل بشكل طفيف على جودة العينة، خاصةً عند استخدام عدد صغير من الخطوات. يُوصى باستخدام مُحلِّلات midpoint.
  • lower_order_final (bool، القيمة الافتراضية True) — ما إذا كان سيتم استخدام محللات من رتبة أدنى في الخطوات النهائية. صالح فقط لعدد خطوات الاستدلال < 15. يمكن أن يثبّت أخذ العينات في DPMSolver للخطوات < 15، خاصةً للخطوات <= 10.
  • euler_at_final (bool، القيمة الافتراضية False) — ما إذا كان سيتم استخدام طريقة أويلر في الخطوة الأخيرة. إنها موازنة بين الاستقرار العددي وغنى التفاصيل. يمكن أن يثبّت هذا عملية أخذ العينات لنسخة DPMSolver المعتمدة على المعادلات التفاضلية العشوائية (SDE) عند استخدام عدد صغير من خطوات الاستدلال، لكنه قد يؤدي أحياناً إلى ضبابية في الصورة.
  • final_sigmas_type (str، القيمة الافتراضية "zero") — قيمة sigma النهائية لجدول الضوضاء أثناء عملية أخذ العينات. إذا كانت "sigma_min"، فإن قيمة sigma النهائية هي نفسها آخر قيمة sigma في جدول التدريب. إذا كانت zero، تُضبط قيمة sigma النهائية على 0.

يُنفّذ EDMDPMSolverMultistepScheduler في صياغة EDM كما وردت في Karras et al. 2022 [1]. يُعدّ EDMDPMSolverMultistepScheduler محلّلاً عالي الترتيب مخصصاً وسريعاً لمعادلات ODE الانتشارية.

[1] كاراس، تيرو، وآخرون. “إيضاح مساحة التصميم للنماذج التوليدية القائمة على الانتشار.” https://huggingface.co/papers/2206.00364

يرث هذا النموذج من SchedulerMixin و ConfigMixin. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع مجدوليات الوقت مثل التحميل والحفظ.

add_noise

< >

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

المعاملات

  • original_samples (torch.Tensor) — العينات الأصلية التي سيتم إضافة الضوضاء إليها.
  • noise (torch.Tensor) — مصفوفة الضوضاء التي تُضاف إلى العينات الأصلية.
  • timesteps (torch.Tensor) — خطوات الزمن التي يُضاف عندها الضوضاء، والتي تحدد مستوى الضوضاء من الجدول الزمني.

يعيد

torch.Tensor

العينات الضوضائية مع ضوضاء مضافة مُقيّمة وفقًا لجدول خطوات الزمن.

أضف الضوضاء إلى العينات الأصلية وفقًا لجدول الضوضاء عند خطوات الزمن المحددة.

convert_model_output

< >

( model_output: Tensorsample: Tensor ) → torch.Tensor

المعاملات

  • model_output (torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم.
  • sample (torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار.

يعيد

torch.Tensor

مخرجات النموذج المحوّل.

تحويل مخرجات النموذج إلى النوع المقابل الذي يحتاجه خوارزمية DPMSolver/DPMSolver++. صُمِّم DPM-Solver لتقطيع تكامل نموذج التنبؤ بالضوضاء، بينما صُمِّم DPM-Solver++ لتقطيع تكامل نموذج التنبؤ بالبيانات.

> خوارزمية ونوع النموذج منفصلان. يمكنك استخدام DPMSolver أو DPMSolver++ لكلٍّ من نماذج التنبؤ بالضوضاء ونماذج التنبؤ بالبيانات.

dpm_solver_first_order_update

< >

( model_output: Tensorsample: Tensornoise: typing.Optional[torch.Tensor] = None ) → torch.Tensor

المعاملات

  • model_output (torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم.
  • sample (torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار.
  • noise (torch.Tensor، اختياري) — مصفوفة الضوضاء التي تُضاف إلى العينات الأصلية.

يعيد

torch.Tensor

المصفوفة العينة عند خطوة الزمن السابقة.

خطوة واحدة لحلّ DPMSolver من الدرجة الأولى (المكافئ لـ DDIM).

index_for_timestep

< >

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

المعاملات

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

يعيد

int

مؤشر خطوة الزمن في الجدول الزمني.

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

multistep_dpm_solver_second_order_update

< >

( model_output_list: typing.List[torch.Tensor]sample: Tensornoise: typing.Optional[torch.Tensor] = None ) → torch.Tensor

المعاملات

  • model_output_list (list[torch.Tensor]) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم عند خطوات الزمن الحالية واللاحقة.
  • sample (torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار.
  • noise (torch.Tensor، اختياري) — مصفوفة الضوضاء التي تُضاف إلى العينات الأصلية.

يعيد

torch.Tensor

المصفوفة العينة عند خطوة الزمن السابقة.

خطوة واحدة لحلّ DPMSolver متعدد الخطوات من الدرجة الثانية.

multistep_dpm_solver_third_order_update

< >

( model_output_list: listsample: Tensor ) → torch.Tensor

المعاملات

  • model_output_list (list[torch.Tensor]) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم عند خطوات الزمن الحالية واللاحقة.
  • sample (torch.Tensor) — نسخة حالية من عينة تم إنشاؤها بواسطة عملية الانتشار.

يعيد

torch.Tensor

المصفوفة العينة عند خطوة الزمن السابقة.

خطوة واحدة لحلّ DPMSolver متعدد الخطوات من الرتبة الثالثة.

precondition_inputs

< >

( sample: Tensorsigma: typing.Union[float, torch.Tensor] ) → torch.Tensor

المعاملات

  • sample (torch.Tensor) — مصفوفة العينة المدخلة التي سيتم تجهيزها مسبقًا.
  • sigma (float أو torch.Tensor) — قيمة سيجما (مستوى الضوضاء) الحالية.

يعيد

torch.Tensor

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

جهّز عينة الإدخال مسبقًا عن طريق تحجيمها وفقًا لصياغة EDM.

precondition_noise

< >

( sigma: typing.Union[float, torch.Tensor] ) → torch.Tensor

المعاملات

  • sigma (float أو torch.Tensor) — قيمة سيجما (مستوى الضوضاء) التي سيتم إعدادها مسبقًا.

يعيد

torch.Tensor

قيمة الضوضاء المُعدَّلة المُحسوبة على أنها 0.25 * log(sigma).

قم بتكييف مستوى الضوضاء من خلال تطبيق تحويل لوغاريتمي.

precondition_outputs

< >

( sample: Tensormodel_output: Tensorsigma: typing.Union[float, torch.Tensor] ) → torch.Tensor

المعاملات

  • sample (torch.Tensor) — مصفوفة العينة المدخلة.
  • model_output (torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم.
  • sigma (float أو torch.Tensor) — قيمة سيجما (مستوى الضوضاء) الحالية.

يعيد

torch.Tensor

العينة المُزالة الضوضاء المحسوبة عن طريق دمج اتصال التخطي وتوسيط المخرجات.

قم بإعداد مخرجات النموذج مسبقاً وفقاً لصياغة EDM.

scale_model_input

< >

( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor

المعاملات

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

يعيد

torch.Tensor

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

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

set_begin_index

< >

( begin_index: int = 0 )

المعاملات

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

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

set_timesteps

< >

( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device, NoneType] = None )

المعاملات

  • num_inference_steps (int) — عدد خطوات الانتشار المستخدمة عند توليد العينات باستخدام نموذج مُدرَّب مسبقًا.
  • device (str أو torch.device، اختياري) — الجهاز الذي يجب نقل خطوات الزمن (timesteps) إليه. إذا كان None، فلن يتم نقل خطوات الزمن.

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

خطوة

< >

( model_output: Tensortimestep: typing.Union[int, torch.Tensor]sample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SchedulerOutput or tuple

المعاملات

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

يعيد

SchedulerOutput أو tuple

إذا كانت True هي قيمة return_dict، يُعاد SchedulerOutput، وإلا يُعاد tuple حيث يكون العنصر الأول هو tensor العينة.

تنبّأ بالعيّنة من خطوة الزمن السابقة عن طريق عكس معادلة ستوكستك التفاضلية (SDE). تنقل هذه الدالة العيّنة باستخدام multistep DPMSolver.

SchedulerOutput

فئة diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( prev_sample: Tensor )

المعاملات

  • prev_sample (torch.Tensor من الشكل (batch_size, num_channels, height, width) للصور) — العينة المحسوبة (x_{t-1}) لخطوة الزمن السابقة. يجب استخدام prev_sample كمدخل للنموذج التالي في حلقة إزالة الضوضاء.

الفئة الأساسية لمخرجات دالة step في المجدول.

Update on GitHub