Diffusers documentation
EDMEulerScheduler
EDMEulerScheduler
The Karras formulation of the Euler scheduler (Algorithm 2) from the Elucidating the Design Space of Diffusion-Based Generative Models paper by Karras et al. This is a fast scheduler which can often generate good outputs in 20-30 steps. The scheduler is based on the original k-diffusion implementation by Katherine Crowson.
EDMEulerScheduler
فئة diffusers.EDMEulerScheduler
< source >( 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', 'v_prediction'] = 'epsilon'rho: float = 7.0final_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )
المعاملات
- sigma_min (
float، اختياري، القيمة الافتراضية0.002) — أدنى حجم للضوضاء في جدول سيجما. تم ضبط هذه القيمة على 0.002 في ورقة EDM [1]؛ والنطاق المعقول هو [0، 10]. - sigma_max (
float، اختياري، القيمة الافتراضية80.0) — أقصى حجم للضوضاء في جدول سيجما. تم ضبط هذه القيمة على 80.0 في ورقة EDM [1]؛ النطاق المعقول هو [0.2، 80.0]. - sigma_data (
float، اختياري، القيمة الافتراضية0.5) — انحراف المعيار لتوزيع البيانات. تم ضبطه على 0.5 في ورقة EDM [1]. - sigma_schedule (
Literal["karras", "exponential"]، اختياري، القيمة الافتراضية"karras") — جدول سيجما لحسابsigmas. بشكل افتراضي، نستخدم الجدول المقدم في ورقة EDM (https://huggingface.co/papers/2206.00364). تم دمج جدول"exponential"في هذا النموذج: https://huggingface.co/stabilityai/cosxl. - num_train_timesteps (
int، اختياري، القيمة الافتراضية1000) — عدد خطوات الانتشار (diffusion) لتدريب النموذج. - prediction_type (
Literal["epsilon", "v_prediction"]، اختياري، القيمة الافتراضية"epsilon") — نوع التنبؤ لدالة المجدول."epsilon"يتنبأ بالضوضاء في عملية الانتشار، و"v_prediction"(انظر القسم 2.4 من ورقة Imagen Video). - rho (
float، اختياري، القيمة الافتراضية7.0) — معامل rho المستخدم لحساب جدول Karras sigma، والذي تم ضبطه على 7.0 في ورقة EDM [1]. - final_sigmas_type (
Literal["zero", "sigma_min"]، اختياري، القيمة الافتراضية"zero") — قيمةsigmaالنهائية لجدول الضوضاء أثناء عملية أخذ العينات. إذا كانت"sigma_min"، فإن قيمة sigma النهائية هي نفسها آخر قيمة sigma في جدول التدريب. أما إذا كانت"zero"، فتُضبط قيمة sigma النهائية على 0.
يُنفّذ مُجدول أويلر بصياغة EDM كما ورد في Karras et al. 2022 [1].
[1] كاراس، تيرو، وآخرون. “إيضاح مساحة التصميم للنماذج التوليدية القائمة على الانتشار.” https://huggingface.co/papers/2206.00364
يرث هذا النموذج من SchedulerMixin و ConfigMixin. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع مجدوليات الوقت مثل التحميل والحفظ.
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
المعاملات
- original_samples (
torch.Tensor) — العينات الأصلية التي سيتم إضافة الضوضاء إليها. - noise (
torch.Tensor) — مصفوفة الضوضاء التي تُضاف إلى العينات الأصلية. - timesteps (
torch.Tensor) — خطوات الزمن التي يُضاف عندها الضوضاء، والتي تحدد مستوى الضوضاء من الجدول الزمني.
يعيد
torch.Tensor
العينات الضوضائية مع ضوضاء مضافة مُقيّمة وفقًا لجدول خطوات الزمن.
أضف الضوضاء إلى العينات الأصلية وفقًا لجدول الضوضاء عند خطوات الزمن المحددة.
index_for_timestep
< source >( 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
مؤشر خطوة الزمن في الجدول. بالنسبة للخطوة الأولى تمامًا، يُرجع المؤشر الثاني إذا كانت هناك تطابقات متعددة لتجنب تخطي قيمة سيجما عند البدء من منتصف الجدول (مثلًا، في تحويل الصورة إلى صورة).
ابحث عن فهرس خطوة زمنية محددة في جدول الخطوات الزمنية.
precondition_inputs
< source >( sample: Tensorsigma: typing.Union[float, torch.Tensor] ) → torch.Tensor
جهّز عينة الإدخال مسبقًا عن طريق تحجيمها وفقًا لصياغة EDM.
precondition_noise
< source >( sigma: typing.Union[float, torch.Tensor] ) → torch.Tensor
قم بتكييف مستوى الضوضاء من خلال تطبيق تحويل لوغاريتمي.
precondition_outputs
< source >( sample: Tensormodel_output: Tensorsigma: typing.Union[float, torch.Tensor] ) → torch.Tensor
قم بإعداد مخرجات النموذج مسبقاً وفقاً لصياغة EDM.
scale_model_input
< source >( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor
قم بتوسيع مدخلات نموذج إزالة الضوضاء لتتوافق مع خوارزمية Euler. يضمن ذلك إمكانية الاستبدال مع المجدولات التي تحتاج إلى توسيع مدخلات نموذج إزالة الضوضاء اعتمادًا على خطوة الزمن الحالية.
set_begin_index
< source >( begin_index: int = 0 )
يحدد الفهرس الابتدائي للمجدول. يجب تشغيل هذه الدالة من خط الأنابيب قبل الاستدلال.
set_timesteps
< source >( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonesigmas: typing.Union[list[float], torch.Tensor, NoneType] = None )
المعاملات
- num_inference_steps (
int, اختياري) — عدد خطوات الانتشار المستخدمة عند توليد العينات باستخدام نموذج مُدرَّب مسبقًا. - device (
strأوtorch.device، اختياري) — الجهاز الذي يجب نقل خطوات الزمن (timesteps) إليه. إذا كانNone، فلن يتم نقل خطوات الزمن. - sigmas (
torch.Tensor | list[float]، اختياري) — قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمريرnum_inference_steps.
يحدد الخطوات الزمنية المنفصلة المستخدمة لسلسلة الانتشار (لتُنفَّذ قبل الاستدلال).
خطوة
< source >( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensors_churn: float = 0.0s_tmin: float = 0.0s_tmax: float = infs_noise: float = 1.0generator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = Truepred_original_sample: typing.Optional[torch.Tensor] = None ) → EDMEulerSchedulerOutput or tuple
المعاملات
- model_output (
torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم. - timestep (
floatأوtorch.Tensor) — خطوة الزمن المنفصلة الحالية في سلسلة الانتشار. - sample (
torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار. - s_churn (
float، اختياري، القيمة الافتراضية0.0) — كمية العشوائية التي تُضاف في كل خطوة. القيم الأعلى تضيف المزيد من الضوضاء. - s_tmin (
float، اختياري، القيمة الافتراضية0.0) — الحد الأدنى لقيمة سيجما الذي لا يُضاف ضجيجٌ تحته. - s_tmax (
float، اختياري، القيمة الافتراضيةfloat("inf")) — الحد الأقصى لقيمة سيجما الذي لا يُضاف فوقه أي ضوضاء. - s_noise (
float، اختياري، القيمة الافتراضية1.0) — معامل التدرج للضوضاء المضافة إلى العينة. - generator (
torch.Generator، اختياري) — مولّد أرقام عشوائية لضمان قابلية التكرار. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع EDMEulerSchedulerOutput أو tuple. - pred_original_sample (
torch.Tensor، اختياري) — العينة المُتنبَّأ بها بعد إزالة الضوضاء من خطوة سابقة. إذا تم تقديمها، يتم تجاوز إعادة الحساب.
يعيد
EDMEulerSchedulerOutput أو tuple
إذا كان return_dict هو True، يتم إرجاع EDMEulerSchedulerOutput، وإلا يتم إرجاع tuple حيث يكون العنصر الأول هو tensor للعينة السابقة والعنصر الثاني هو tensor للعينة الأصلية المتوقعة.
تنبّأ بالعيّنة من الخطوة الزمنية السابقة عن طريق عكس عملية المعادلة التفاضلية العشوائية (SDE). تنقل هذه الدالة عملية الانتشار من مخرجات النموذج المُتعلَّم (والتي تكون في الغالب الضوضاء المتنبَّأ بها).
EDMEulerSchedulerOutput
فئة diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput
< source >( prev_sample: Tensorpred_original_sample: typing.Optional[torch.Tensor] = None )
المعاملات
- prev_sample (
torch.Tensorمن الشكل(batch_size, num_channels, height, width)للصور) — العينة المحسوبة(x_{t-1})لخطوة الزمن السابقة. يجب استخدامprev_sampleكمدخل للنموذج التالي في حلقة إزالة الضوضاء. - pred_original_sample (
torch.Tensorمن الشكل(batch_size, num_channels, height, width)للصور) — العينة المُتنبَّأ بها بعد إزالة الضوضاء(x_{0})بناءً على مخرجات النموذج من خطوة الزمن الحالية. يمكن استخدامpred_original_sampleلمعاينة التقدم أو للتوجيه.
فئة الإخراج لدالة step الخاصة بالجدول الزمني.