Buckets:
DPMSolverMultistepScheduler
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 من تأليف تشينغ لو، ويهاو تشو، فان باو، جيانفي تشن، تشونغشوان لي، وجون تشو.
DPMSolver (والنسخة المحسّنة DPMSolver++) هو محلل سريع مخصص من الرتبة العالية لمعادلات التفاضلية العادية للانتشار مع ضمان لرتبة التقارب. عمليًا، يمكن لعينة DPMSolver باستخدام 20 خطوة فقط توليد عينات عالية الجودة، كما يمكنها توليد عينات جيدة جدًا حتى في 10 خطوات.
نصائح
يُوصى بإعداد solver_order إلى 2 لعينة الدليل، وsolver_order=3 للعينة غير الشرطية.
يُؤيَّد العتبة الديناميكية من Imagen، ولنماذج الانتشار في فضاء البكسلات، يمكنك ضبط كل من algorithm_type="dpmsolver++" وthresholding=True لاستخدام العتبة الديناميكية. ومن غير المناسب استخدام طريقة العتبات هذه لنماذج الانتشار في فضاء الكمون مثل Stable Diffusion.
يُؤيَّد أيضاً المتغير SDE من DPMSolver و DPM-Solver++، ولكن فقط لحلّات الرتبة الأولى والثانية. هذا حلّ SDE سريع لسلسلة SDE الانتشار العكسي. يُوصى باستخدام حلّ الرتبة الثانية sde-dpmsolver++.
DPMSolverMultistepScheduler[[diffusers.DPMSolverMultistepScheduler]]
diffusers.DPMSolverMultistepScheduler[[diffusers.DPMSolverMultistepScheduler]]
diffusers.DPMSolverMultistepScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.0001, beta_end: float = 0.02, beta_schedule: str = 'linear', trained_betas: numpy.ndarray | list[float] | None = None, solver_order: int = 2, prediction_type: typing.Literal['epsilon', 'sample', 'v_prediction', 'flow_prediction'] = 'epsilon', thresholding: bool = False, dynamic_thresholding_ratio: float = 0.995, sample_max_value: float = 1.0, algorithm_type: typing.Literal['dpmsolver', 'dpmsolver++', 'sde-dpmsolver', 'sde-dpmsolver++'] = 'dpmsolver++', solver_type: typing.Literal['midpoint', 'heun'] = 'midpoint', lower_order_final: bool = True, euler_at_final: bool = False, use_karras_sigmas: bool = False, use_exponential_sigmas: bool = False, use_beta_sigmas: bool = False, use_lu_lambdas: bool = False, use_flow_sigmas: bool = False, flow_shift: float = 1.0, final_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero', lambda_min_clipped: float = -inf, variance_type: typing.Optional[typing.Literal['learned', 'learned_range']] = None, timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace', steps_offset: int = 0, rescale_betas_zero_snr: bool = False, use_dynamic_shifting: bool = False, time_shift_type: typing.Literal['exponential'] = 'exponential')
المعاملات:
num_train_timesteps (int، القيمة الافتراضية 1000) : عدد خطوات الانتشار لتدريب النموذج.
beta_start (float، القيمة الافتراضية 0.0001) : القيمة الابتدائية لـbeta أثناء الاستدلال.
beta_end (float، القيمة الافتراضية 0.02) : القيمة النهائية لـbeta.
beta_schedule ("linear" أو "scaled_linear" أو "squaredcos_cap_v2"، الافتراضي هو "linear") : جدول بيتا، وهو إسقاط من نطاق بيتا إلى تسلسل من قيم بيتا لتقدم النموذج خطوة بخطوة.
trained_betas (np.ndarray، اختياري) : مرر مصفوفة من قيم بيتا مباشرةً إلى منشئ الكائن لتجاوز beta_start وbeta_end.
solver_order (int، القيمة الافتراضية 2) : ترتيب DPMSolver الذي يمكن أن يكون 1 أو 2 أو 3. يُوصى باستخدام solver_order=2 للعينة الموجَّهة، وsolver_order=3 للعينة غير المشروطة.
prediction_type ("epsilon"، أو "sample"، أو "v_prediction"، أو "flow_prediction"، الافتراضي هو "epsilon") : نوع التنبؤ لدالة المجدول. يتنبأ epsilon بالضوضاء في عملية الانتشار، ويتنبأ sample مباشرةً بالعينة الضوضائية، ويتنبأ v_prediction بالسرعة (انظر القسم 2.4 من ورقة Imagen Video)، ويتنبأ flow_prediction بالتدفق.
thresholding (bool، القيمة الافتراضية False) : ما إذا كان سيتم استخدام طريقة "العتبة الديناميكية". هذه الطريقة غير مناسبة لنماذج الانتشار في الفضاء الكامن مثل Stable Diffusion.
dynamic_thresholding_ratio (float، القيمة الافتراضية 0.995) : نسبة طريقة العتبة الديناميكية. صالحة فقط عندما يكون thresholding=True.
sample_max_value (float، القيمة الافتراضية 1.0) : قيمة العتبة الخاصة بالعتبة الديناميكية. صالحة فقط عندما يكون thresholding=True وalgorithm_type="dpmsolver++".
algorithm_type ("dpmsolver" أو "dpmsolver++" أو "sde-dpmsolver" أو "sde-dpmsolver++"، القيمة الافتراضية هي "dpmsolver++") : نوع الخوارزمية للمُحلِّل. يُنفِّذ النوع dpmsolver الخوارزميات الواردة في ورقة DPMSolver، بينما يُنفِّذ النوع dpmsolver++ الخوارزميات الواردة في ورقة DPMSolver++. يُوصى باستخدام dpmsolver++ أو sde-dpmsolver++ مع solver_order=2 لأخذ العينات الموجَّهة كما في Stable Diffusion.
solver_type ("midpoint" أو "heun"، الافتراضي هو "midpoint") : نوع المُحلِّل لمُحلِّل الرتبة الثانية. يؤثر نوع المُحلِّل بشكل طفيف على جودة العينة، خاصةً عند استخدام عدد قليل من الخطوات. يُوصى باستخدام مُحلِّلات midpoint.
lower_order_final (bool، القيمة الافتراضية True) : ما إذا كان سيتم استخدام محللات من رتبة أدنى في الخطوات النهائية. صالح فقط لعدد خطوات الاستدلال < 15. يمكن أن يثبّت أخذ العينات لـ DPMSolver عند عدد خطوات < 15، خاصةً عند عدد خطوات <= 10.
euler_at_final (bool، القيمة الافتراضية False) : ما إذا كان سيتم استخدام طريقة أويلر في الخطوة النهائية. إنها موازنة بين الاستقرار العددي وغنى التفاصيل. يمكن أن يُثبّت هذا عملية أخذ العينات لنسخة DPMSolver المعتمدة على المعادلات التفاضلية العشوائية (SDE) عند استخدام عدد صغير من خطوات الاستدلال، لكنه قد يؤدي أحيانًا إلى ضبابية في الصورة.
use_karras_sigmas (bool، اختياري، القيمة الافتراضية False) : ما إذا كان سيتم استخدام قيم Karras sigmas لحجم الخطوات في جدول الضوضاء أثناء عملية أخذ العينات. إذا كانت القيمة True، تُحدَّد قيم sigmas وفقاً لسلسلة من مستويات الضوضاء {σi}.
use_exponential_sigmas (bool، اختياري، القيمة الافتراضية False) : ما إذا كان سيتم استخدام قيم سيجما أسّية لحجم الخطوات في جدول الضوضاء أثناء عملية أخذ العينات.
use_beta_sigmas (bool, optional, defaults to False) : 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.
use_lu_lambdas (bool، اختياري، القيمة الافتراضية False) : ما إذا كان سيتم استخدام uniform-logSNR لحجم الخطوات المقترحة بواسطة DPM-Solver الخاص بـ Lu في جدول الضوضاء أثناء عملية أخذ العينات. إذا كانت القيمة True، يتم تحديد قيم sigmas وخطوات الوقت وفقاً لسلسلة من lambda(t).
use_flow_sigmas (bool، اختياري، القيمة الافتراضية False) : ما إذا كان سيتم استخدام قيم سيجما التدفق (flow sigmas) لحجم الخطوات في جدول الضوضاء أثناء عملية أخذ العينات.
flow_shift (float، اختياري، القيمة الافتراضية 1.0) : قيمة الإزاحة لجدول خطوات الزمن (timestep schedule) في مطابقة التدفق (flow matching).
final_sigmas_type ("zero" أو "sigma_min"، اختياري، الافتراضي "zero") : القيمة النهائية لـsigma في جدول الضوضاء أثناء عملية أخذ العينات. إذا كانت "sigma_min"، فإن قيمة sigma النهائية هي نفسها آخر قيمة sigma في جدول التدريب. إذا كانت "zero"، يتم تعيين قيمة sigma النهائية إلى 0.
lambda_min_clipped (float، القيمة الافتراضية -inf) : حدّ القصّ للقيمة الدنيا لـlambda(t) من أجل الاستقرار العددي. وهذا أمر بالغ الأهمية لجدول الضوضاء الجيبية (squaredcos_cap_v2).
variance_type ("learned" أو "learned_range"، اختياري) : اضبطه على "learned" أو "learned_range" لنماذج الانتشار التي تتنبأ بالتباين. إذا تم ضبطه، فإن مخرجات النموذج تحتوي على تباين غاوسي متنبأ به.
timestep_spacing ("linspace", "leading", or "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.
steps_offset (int، القيمة الافتراضية 0) : إزاحة تُضاف إلى خطوات الاستدلال، كما تتطلبها بعض عائلات النماذج.
rescale_betas_zero_snr (bool، القيمة الافتراضية False) : ما إذا كان يجب إعادة مقياس معاملات بيتا (betas) بحيث يكون SNR النهائي صفراً. يتيح هذا النموذج توليد عينات ساطعة جداً ومظلمة جداً بدلاً من تقييده بتوليد عينات بإضاءة متوسطة. له علاقة غير مباشرة بـ --offset_noise.
use_dynamic_shifting (bool، القيمة الافتراضية False) : ما إذا كان سيتم استخدام الإزاحة الديناميكية لجدول خطوات الزمن.
time_shift_type ("exponential"، الافتراضي هو "exponential") : نوع الإزاحة الزمنية التي تُطبَّق عند استخدام الإزاحة الديناميكية.
DPMSolverMultistepScheduler هو محلل سريع مخصص من الرتبة العالية لمعادلات التفاضلية العادية في النماذج الانتشارية.
يرث هذا النموذج من SchedulerMixin و ConfigMixin. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع مجدولات التعلم، مثل التحميل والحفظ.
add_noise[[diffusers.DPMSolverMultistepScheduler.add_noise]]
add_noise(original_samples: Tensor, noise: Tensor, timesteps: IntTensor)
المعاملات:
original_samples (torch.Tensor) : العينات الأصلية دون ضوضاء.
noise (torch.Tensor) : الضوضاء التي يجب إضافتها إلى العينات.
timesteps (torch.IntTensor) : الخطوات الزمنية التي يُضاف فيها الضوضاء إلى العينات.
يعيد: torch.Tensor
العينات الضجيجية.
أضف الضوضاء إلى العينات الأصلية وفقًا لجدول الضوضاء عند خطوات الزمن المحددة.
convert_model_output[[diffusers.DPMSolverMultistepScheduler.convert_model_output]]
convert_model_output(model_output: Tensor, *args, sample: typing.Optional[torch.Tensor] = None, **kwargs)
المعاملات:
model_output (torch.Tensor) : المخرجات المباشرة من نموذج الانتشار المُتعلَّم.
sample (torch.Tensor، اختياري) : نسخة حالية من عينة تم إنشاؤها بواسطة عملية الانتشار.
يعيد: torch.Tensor
مخرجات النموذج المحوّل.
حوّل مخرجات النموذج إلى النوع المقابل الذي يحتاجه خوارزمية DPMSolver/DPMSolver++. صُمِّم DPM-Solver لتقطيع تكامل نموذج التنبؤ بالضوضاء، بينما صُمِّم DPM-Solver++ لتقطيع تكامل نموذج التنبؤ بالبيانات.
> الخوارزمية ونوع النموذج منفصلان. يمكنك استخدام DPMSolver أو DPMSolver++ لكليهما الضوضاء > التنبؤ ونماذج التنبؤ بالبيانات.
dpm_solver_first_order_update[[diffusers.DPMSolverMultistepScheduler.dpm_solver_first_order_update]]
dpm_solver_first_order_update(model_output: Tensor, *args, sample: typing.Optional[torch.Tensor] = None, noise: typing.Optional[torch.Tensor] = None, **kwargs)
المعاملات:
model_output (torch.Tensor) : المخرجات المباشرة من نموذج الانتشار المُتعلَّم.
sample (torch.Tensor، اختياري) : نسخة حالية من عينة تم إنشاؤها بواسطة عملية الانتشار.
noise (torch.Tensor، اختياري) : متجه الضوضاء.
يعيد: torch.Tensor
المصفوفة العينة عند خطوة الزمن السابقة.
خطوة واحدة لحلّ DPMSolver من الدرجة الأولى (المكافئ لـ DDIM).
index_for_timestep[[diffusers.DPMSolverMultistepScheduler.index_for_timestep]]
index_for_timestep(timestep: typing.Union[int, torch.Tensor], schedule_timesteps: typing.Optional[torch.Tensor] = None)
المعاملات:
timestep (int أو torch.Tensor) : خطوة الزمن التي سيتم إيجاد فهرسها.
schedule_timesteps (torch.Tensor، اختياري) : جدول خطوات الزمن للبحث فيه. إذا كان None، يتم استخدام self.timesteps.
يعيد: int
مؤشر خطوة الزمن في الجدول الزمني.
حدد فهرس خطوة زمنية معينة في الجدول الزمني.
multistep_dpm_solver_second_order_update[[diffusers.DPMSolverMultistepScheduler.multistep_dpm_solver_second_order_update]]
multistep_dpm_solver_second_order_update(model_output_list: list[torch.Tensor], *args, sample: typing.Optional[torch.Tensor] = None, noise: typing.Optional[torch.Tensor] = None, **kwargs)
المعاملات:
model_output_list (list[torch.Tensor]) : المخرجات المباشرة من نموذج الانتشار المُتعلَّم عند خطوات الزمن الحالية واللاحقة.
sample (torch.Tensor، اختياري) : نسخة حالية من عينة تم إنشاؤها بواسطة عملية الانتشار.
noise (torch.Tensor، اختياري) : ضوضاء عشوائية تُستخدم في متغيرات المُحلِّل العشوائي (sde-*). يُشترط توفيره عند ضبط algorithm_type على أحد هذه المتغيرات، ولا يُستخدم في الحالات الأخرى.
يعيد: torch.Tensor
المصفوفة العينة عند خطوة الزمن السابقة.
خطوة واحدة لحلّ DPMSolver متعدد الخطوات من الدرجة الثانية.
multistep_dpm_solver_third_order_update[[diffusers.DPMSolverMultistepScheduler.multistep_dpm_solver_third_order_update]]
multistep_dpm_solver_third_order_update(model_output_list: list[torch.Tensor], *args, sample: typing.Optional[torch.Tensor] = None, noise: typing.Optional[torch.Tensor] = None, **kwargs)
المعاملات:
model_output_list (list[torch.Tensor]) : المخرجات المباشرة من نموذج الانتشار المُتعلَّم عند خطوات الزمن الحالية واللاحقة.
sample (torch.Tensor، اختياري) : نسخة حالية من عينة تم إنشاؤها بواسطة عملية الانتشار.
noise (torch.Tensor، اختياري) : متجه الضوضاء.
يعيد: torch.Tensor
المصفوفة العينة عند خطوة الزمن السابقة.
خطوة واحدة لحلّ DPMSolver متعدد الخطوات من الرتبة الثالثة.
scale_model_input[[diffusers.DPMSolverMultistepScheduler.scale_model_input]]
scale_model_input(sample: Tensor, *args, **kwargs)
المعاملات:
sample (torch.Tensor) : العينة المدخلة.
يعيد: torch.Tensor
عينة إدخال مُقيّمة.
يضمن قابلية الاستبدال مع المجدولات التي تحتاج إلى تحجيم مدخلات نموذج إزالة الضوضاء اعتمادًا على خطوة الزمن الحالية.
set_begin_index[[diffusers.DPMSolverMultistepScheduler.set_begin_index]]
set_begin_index(begin_index: int = 0)
المعاملات:
begin_index (int، القيمة الافتراضية 0) : فهرس البداية للمجدول.
يحدد الفهرس الابتدائي للمجدول. يجب تشغيل هذه الدالة من خط الأنابيب قبل الاستدلال.
set_timesteps[[diffusers.DPMSolverMultistepScheduler.set_timesteps]]
set_timesteps(num_inference_steps: int = None, device: typing.Union[str, torch.device] = None, mu: float | None = None, timesteps: list[int] | None = None)
المعاملات:
num_inference_steps (int، اختياري) : عدد خطوات الانتشار المستخدمة عند توليد العينات باستخدام نموذج مُدرَّب مسبقًا.
device (str أو torch.device، اختياري) : الجهاز الذي يجب نقل خطوات الزمن (timesteps) إليه. إذا كان None، فلن يتم نقل خطوات الزمن.
mu (float, اختياري) : أُسّ الإزاحة الديناميكية للزمن. يتطلب use_dynamic_shifting وقيمة time_shift_type تساوي "exponential"؛ عند تمريره، يُضبط flow_shift على exp(mu).
timesteps (list[int]، اختياري) : خطوات زمنية مخصصة تُستخدم لدعم جدول خطوات زمنية تعسفي. إذا كانت None، فسيتم توليد الخطوات الزمنية بناءً على خاصية timestep_spacing. إذا تم تمرير timesteps، فيجب أن تكون num_inference_steps وsigmas قيمتين None، وسيتم تجاهل خاصية timestep_spacing.
يحدد الخطوات الزمنية المنفصلة المستخدمة لسلسلة الانتشار (لتُنفَّذ قبل الاستدلال).
خطوة[[diffusers.DPMSolverMultistepScheduler.step]]
step(model_output: Tensor, timestep: typing.Union[int, torch.Tensor], sample: Tensor, generator: typing.Optional[torch.Generator] = None, variance_noise: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
المعاملات:
model_output (torch.Tensor) : المخرجات المباشرة من نموذج الانتشار المُتعلَّم.
timestep (int أو torch.Tensor) : الخطوة الزمنية المنفصلة الحالية في سلسلة الانتشار.
sample (torch.Tensor) : نسخة حالية من عينة تم إنشاؤها بواسطة عملية الانتشار.
generator (torch.Generator، اختياري) : مولّد أرقام عشوائية.
variance_noise (torch.Tensor، اختياري) : بديل لتوليد الضوضاء باستخدام generator من خلال تقديم الضوضاء مباشرةً للتباين نفسه. مفيد لطرق مثل LEdits++.
return_dict (bool، القيمة الافتراضية True) : ما إذا كان يجب إرجاع SchedulerOutput أو tuple أم لا.
يعيد: SchedulerOutput أو tuple
إذا كان return_dict هو True، يُعاد SchedulerOutput، وإلا يُعاد tuple حيث يكون العنصر الأول هو tensor العينة.
تنبّأ بالعيّنة من خطوة الزمن السابقة عن طريق عكس معادلة ستوكستك التفاضلية (SDE). تنقل هذه الدالة العيّنة باستخدام محلّل DPMSolver متعدد الخطوات.
SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]]
diffusers.schedulers.scheduling_utils.SchedulerOutput[[diffusers.schedulers.scheduling_utils.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 في المجدول.
Xet Storage Details
- Size:
- 24.8 kB
- Xet hash:
- df37834eabffc79b0fc8ea47f91e8d0709d2c2e2a98f975d3086a007b6d3c2ab
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.