Diffusers documentation
EulerDiscreteScheduler
EulerDiscreteScheduler
مجدول أويلر (الخوارزمية 2) مأخوذ من ورقة إيضاح مساحة التصميم للنماذج التوليدية القائمة على الانتشار التي كتبها كاراس وآخرون. هذا مجدول سريع يمكنه غالبًا توليد مخرجات جيدة في 20-30 خطوة. يعتمد المجدول على التنفيذ الأصلي لـ k-diffusion بواسطة Katherine Crowson.
EulerDiscreteScheduler
فئة diffusers.EulerDiscreteScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneprediction_type: str = 'epsilon'interpolation_type: str = 'linear'use_karras_sigmas: bool | None = Falseuse_exponential_sigmas: bool | None = Falseuse_beta_sigmas: bool | None = Falsesigma_min: float | None = Nonesigma_max: float | None = Nonetimestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace'timestep_type: typing.Literal['discrete', 'continuous'] = 'discrete'steps_offset: int = 0rescale_betas_zero_snr: bool = Falsefinal_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )
المعاملات
- num_train_timesteps (
int، القيمة الافتراضية 1000) — عدد خطوات الانتشار لتدريب النموذج. - beta_start (
float، القيمة الافتراضية 0.0001) — قيمةbetaالابتدائية للاستدلال. - beta_end (
float، القيمة الافتراضية 0.02) — قيمةbetaالنهائية. - beta_schedule (
Literal["linear", "scaled_linear", "squaredcos_cap_v2"]، القيمة الافتراضية"linear") — جدول بيتا، وهو إسقاط من نطاق بيتا إلى تسلسل من قيم بيتا لتخطي النموذج. اختر من بين"linear"أو"scaled_linear"أو"squaredcos_cap_v2". - trained_betas (
np.ndarray، اختياري) — مرر مصفوفة من قيم بيتا مباشرةً إلى منشئ الكائن لتجاوزbeta_startوbeta_end. - prediction_type (
Literal["epsilon", "sample", "v_prediction"], 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). - interpolation_type (
Literal["linear", "log_linear"])، القيمة الافتراضية"linear"، اختياري) — نوع الاستيفاء المستخدم لحساب قيم سيجما الوسيطة لخطوات إزالة الضوضاء في المجدول. يجب أن يكون أحد القيمتين"linear"أو"log_linear". - use_karras_sigmas (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام Karras sigmas لحجم الخطوات في جدول الضوضاء أثناء عملية أخذ العينات. إذا كانتTrue، فإن قيم sigmas تُحدَّد وفقاً لسلسلة من مستويات الضوضاء {σi}. - use_exponential_sigmas (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام قيم sigmas أسّية لحجم الخطوات في جدول الضوضاء أثناء عملية أخذ العينات. - use_beta_sigmas (
bool, optional, defaults toFalse) — Whether to use beta sigmas for step sizes in the noise schedule during the sampling process. Refer to Beta Sampling is All You Need for more information. - sigma_min (
float, اختياري) — القيمة الدنيا لسيجما في جدول الضوضاء. إذا لم يُقدَّم، فسيُستخدم آخر قيمة سيجما في الجدول افتراضيًا. - sigma_max (
float, اختياري) — القيمة القصوى لسيجما في جدول الضوضاء. إذا لم يُقدَّم، فسيتم افتراض أول قيمة سيجما في الجدول. - timestep_spacing (
Literal["linspace", "leading", "trailing"], defaults to"linspace") — The way the timesteps should be scaled. Refer to Table 2 of the Common Diffusion Noise Schedules and Sample Steps are Flawed for more information. - timestep_type (
Literal["discrete", "continuous"]، القيمة الافتراضية"discrete") — نوع خطوات الزمن (timesteps) المستخدمة. يمكن أن تكون"discrete"أو"continuous". - steps_offset (
int، القيمة الافتراضية 0) — إزاحة تُضاف إلى خطوات الاستدلال، كما تتطلبها بعض عائلات النماذج. - rescale_betas_zero_snr (
bool، القيمة الافتراضيةFalse) — ما إذا كان يجب إعادة مقياس معاملات بيتا (betas) بحيث تكون نسبة الإشارة إلى الضوضاء النهائية (terminal SNR) صفرًا. يتيح هذا للنموذج توليد عينات ساطعة جدًا ومظلمة جدًا بدلاً من تقييده بتوليد عينات بإضاءة متوسطة. يرتبط ارتباطًا فضفاضًا بـ--offset_noise. - final_sigmas_type (
Literal["zero", "sigma_min"])، القيمة الافتراضية"zero") — قيمةsigmaالنهائية لجدول الضوضاء أثناء عملية أخذ العينات. إذا كانت"sigma_min"، فإن قيمة sigma النهائية هي نفسها آخر قيمة sigma في جدول التدريب. أما إذا كانت"zero"، فتُضبط قيمة sigma النهائية على 0.
مجدول أويلر.
يرث هذا النموذج من SchedulerMixin و ConfigMixin. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع مجدوليات الوقت مثل التحميل والحفظ.
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
المعاملات
- original_samples (
torch.Tensor) — العينات الأصلية التي سيتم إضافة الضوضاء إليها. - noise (
torch.Tensor) — مصفوفة الضوضاء التي تُضاف إلى العينات الأصلية. - timesteps (
torch.Tensor) — خطوات الزمن التي يُضاف عندها الضوضاء، والتي تحدد مستوى الضوضاء من الجدول الزمني.
يعيد
torch.Tensor
العينات الضوضائية مع ضوضاء مضافة مُقيّمة وفقًا لجدول خطوات الزمن.
أضف الضوضاء إلى العينات الأصلية وفقًا لجدول الضوضاء عند خطوات الزمن المحددة.
get_velocity
< source >( sample: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
المعاملات
- sample (
torch.Tensor) — العينة المدخلة التي يتم حساب السرعة لها. - noise (
torch.Tensor) — مصفوفة الضوضاء المقابلة للعينة. - timesteps (
torch.Tensor) — خطوات الزمن التي يتم حساب السرعة عند
يعيد
torch.Tensor
تُحسب التنبؤ بالسرعة على النحو التالي: sqrt(alpha_prod) * noise - sqrt(1 - alpha_prod) * sample.
احسب تنبؤ السرعة للعينة والضوضاء المعطات عند خطوات الزمن المحددة.
تنفّذ هذه الطريقة التنبؤ بالسرعة المستخدم في نماذج v-prediction، حيث تتنبأ بمجموعة خطية من العينة والضوضاء.
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
مؤشر خطوة الزمن في الجدول. بالنسبة للخطوة الأولى تمامًا، يُرجع المؤشر الثاني إذا كانت هناك تطابقات متعددة لتجنب تخطي قيمة سيجما عند البدء من منتصف الجدول (مثلًا، في تحويل الصورة إلى صورة).
ابحث عن فهرس خطوة زمنية محددة في جدول الخطوات الزمنية.
scale_model_input
< source >( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor
يضمن قابلية الاستبدال مع المجدولات التي تحتاج إلى تحجيم مدخلات نموذج إزالة الضوضاء اعتمادًا على خطوة الزمن الحالية. يحجم مدخلات نموذج إزالة الضوضاء بواسطة (sigma**2 + 1) ** 0.5 ليتوافق مع خوارزمية أويلر.
set_begin_index
< source >( begin_index: int = 0 )
يحدد الفهرس الابتدائي للمجدول. يجب تشغيل هذه الدالة من خط الأنابيب قبل الاستدلال.
set_timesteps
< source >( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = Nonesigmas: list[float] | None = None )
المعاملات
- num_inference_steps (
int, اختياري) — عدد خطوات الانتشار المستخدمة عند توليد العينات بنموذج مُدرَّب مسبقًا. إذا كانNone، يجب تقديمtimestepsأوsigmas. - device (
strأوtorch.device، اختياري) — الجهاز الذي يجب نقل خطوات الزمن (timesteps) إليه. إذا كانNone، فلن يتم نقل خطوات الزمن. - timesteps (
list[int]، اختياري) — خطوات زمنية مخصصة تُستخدم لدعم جدول خطوات زمنية تعسفي. إذا كانتNone، فسيتم توليد الخطوات الزمنية بناءً على خاصيةtimestep_spacing. إذا تم تمريرtimesteps، فيجب أن تكونnum_inference_stepsوsigmasمساويةً لـNone، وسيتم تجاهل خاصيةtimestep_spacing. - sigmas (
list[float]، اختياري) — قيم sigmas مخصصة تُستخدم لدعم جدولة خطوات زمنية (timesteps) اختيارية. إذا كانتNone، فسيتم توليد الخطوات الزمنية وقيم sigmas بناءً على خصائص المجدول (scheduler) ذي الصلة. إذا تم تمريرsigmas، فيجب أن تكونnum_inference_stepsوtimestepsقيمتينNone، وسيتم توليد الخطوات الزمنية بناءً على جدول sigmas المخصص.
يحدد الخطوات الزمنية المنفصلة المستخدمة لسلسلة الانتشار (لتُنفَّذ قبل الاستدلال).
خطوة
< 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 = True ) → EulerDiscreteSchedulerOutput 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، اختياري، القيمة الافتراضيةinf) — الحد الأقصى لخطوة الزمن لتطبيق العشوائية. لن يُضاف الضوضاء إلا للخطوات الزمنية التي تكون قيمتها أقل من هذا الحد. - s_noise (
float، اختياري، القيمة الافتراضية1.0) — معامل التدرج للضوضاء المضافة إلى العينة. - generator (
torch.Generator، اختياري) — مولّد أرقام عشوائية لأخذ عينات قابلة للتكرار. - return_dict (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع EulerDiscreteSchedulerOutput أو tuple.
يعيد
EulerDiscreteSchedulerOutput أو tuple
إذا كان return_dict هو True، يُعاد EulerDiscreteSchedulerOutput، وإلا يُعاد tuple حيث العنصر الأول هو tensor العينة والعنصر الثاني هو العينة الأصلية المتوقعة.
تنبّأ بالعيّنة من الخطوة الزمنية السابقة عن طريق عكس عملية المعادلة التفاضلية العشوائية (SDE). تنقل هذه الدالة عملية الانتشار من مخرجات النموذج المُتعلَّم (والتي تكون في الغالب الضوضاء المتنبَّأ بها).
EulerDiscreteSchedulerOutput
فئة diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput
< 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 الخاصة بالجدول الزمني.