Diffusers documentation
DPMSolverMultistepInverse
DPMSolverMultistepInverse
DPMSolverMultistepInverse هو المجدول المعكوس من 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 من تأليف تشينغ لو، ويهاو تشو، فان باو، جيانفي تشن، تشونغشوان لي، وجون تشو.
تعتمد الطريقة بشكل أساسي على تعريف عكس DDIM في Null-text Inversion for Editing Real Images using Guided Diffusion Models وتنفيذ دفتر الملاحظات الخاص بعكس DiffEdit الكامن من Xiang-cd/DiffEdit-stable-diffusion.
نصائح
يُؤيَّد استخدام العتبة الديناميكية من Imagen، ولنماذج الانتشار في فضاء البكسلات، يمكنك ضبط كل من algorithm_type="dpmsolver++" وthresholding=True لاستخدام العتبة الديناميكية. ومن غير المناسب استخدام طريقة العتبات هذه لنماذج الانتشار في فضاء الكمون مثل Stable Diffusion.
DPMSolverMultistepInverseScheduler
فئة diffusers.DPMSolverMultistepInverseScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: typing.Literal['linear', 'scaled_linear', 'squaredcos_cap_v2'] = 'linear'trained_betas: numpy.ndarray | list[float] | None = Nonesolver_order: int = 2prediction_type: typing.Literal['epsilon', 'sample', 'v_prediction', 'flow_prediction'] = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995sample_max_value: float = 1.0algorithm_type: typing.Literal['dpmsolver', 'dpmsolver++', 'sde-dpmsolver', 'sde-dpmsolver++'] = 'dpmsolver++'solver_type: typing.Literal['midpoint', 'heun'] = 'midpoint'lower_order_final: bool = Trueeuler_at_final: bool = Falseuse_karras_sigmas: bool = Falseuse_exponential_sigmas: bool = Falseuse_beta_sigmas: bool = Falseuse_flow_sigmas: bool = Falseflow_shift: float = 1.0lambda_min_clipped: float = -infvariance_type: typing.Optional[typing.Literal['learned', 'learned_range']] = Nonetimestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace'steps_offset: int = 0 )
المعاملات
- num_train_timesteps (
int، القيمة الافتراضية 1000) — عدد خطوات الانتشار لتدريب النموذج. - beta_start (
float، القيمة الافتراضية 0.0001) — قيمةbetaالابتدائية للاستدلال. - beta_end (
float، القيمة الافتراضية 0.02) — قيمةbetaالنهائية. - beta_schedule (
str، القيمة الافتراضية"linear") — جدول بيتا، وهو إسناد من نطاق بيتا إلى تسلسل من قيم بيتا لتخطي النموذج. اختر من بينlinearأوscaled_linearأوsquaredcos_cap_v2. - trained_betas (
np.ndarray، اختياري) — مرر مصفوفة من قيم بيتا مباشرةً إلى منشئ الكائن لتجاوزbeta_startوbeta_end. - solver_order (
int، القيمة الافتراضية 2) — ترتيب DPMSolver الذي يمكن أن يكون1أو2أو3. يُوصى باستخدامsolver_order=2للعينة الموجَّهة، وsolver_order=3للعينة غير المشروطة. - prediction_type (
str, defaults toepsilon, optional) — Prediction type of the scheduler function; can beepsilon(predicts the noise of the diffusion process),sample(directly predicts the noisy sample) orv_prediction` (see section 2.4 of Imagen Video paper). - 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أوdpmsolver++أوsde-dpmsolverأوsde-dpmsolver++. يُنفِّذ النوعdpmsolverالخوارزميات الواردة في ورقة 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) عند استخدام عدد صغير من خطوات الاستدلال، لكنه قد يؤدي أحياناً إلى ضبابية في الصورة. - 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. - use_flow_sigmas (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام قيم flow sigmas لحساب أحجام الخطوات في جدول الضوضاء أثناء عملية أخذ العينات. - flow_shift (
float, اختياري، القيمة الافتراضية 1.0) — معامل إزاحة التدفق. صالح فقط عندما يكونuse_flow_sigmas=True. - lambda_min_clipped (
float، القيمة الافتراضية-inf) — حدّ القصّ للقيمة الدنيا لـlambda(t)من أجل الاستقرار العددي. وهذا أمر بالغ الأهمية لجدول الضوضاء الجيبية (squaredcos_cap_v2). - variance_type (
str، اختياري) — يُضبط على “learned” أو “learned_range” لنماذج الانتشار التي تتنبأ بالتباين. إذا تم ضبطه، فإن مخرجات النموذج تحتوي على تباين غاوسي متنبأ به. - timestep_spacing (
str, 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) — إزاحة تُضاف إلى خطوات الاستدلال، كما تتطلبها بعض عائلات النماذج.
DPMSolverMultistepInverseScheduler هو المجدول العكسي لـ DPMSolverMultistepScheduler.
يرث هذا النموذج من SchedulerMixin و ConfigMixin. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع مجدوليات الوقت مثل التحميل والحفظ.
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor
أضف الضوضاء إلى original_samples النظيفة باستخدام الدالة المكافئة في المجدول.
convert_model_output
< source >( model_output: Tensor*argssample: typing.Optional[torch.Tensor] = None**kwargs ) → torch.Tensor
تحويل مخرجات النموذج إلى النوع المقابل الذي يحتاجه خوارزمية DPMSolver/DPMSolver++. صُمِّم DPM-Solver لتقطيع تكامل نموذج التنبؤ بالضوضاء، بينما صُمِّم DPM-Solver++ لتقطيع تكامل نموذج التنبؤ بالبيانات.
> خوارزمية ونوع النموذج منفصلان. يمكنك استخدام DPMSolver أو DPMSolver++ لكلٍّ من نماذج التنبؤ بالضوضاء ونماذج التنبؤ بالبيانات.
dpm_solver_first_order_update
< source >( model_output: Tensor*argssample: typing.Optional[torch.Tensor] = Nonenoise: typing.Optional[torch.Tensor] = None**kwargs ) → torch.Tensor
خطوة واحدة لحلّ DPMSolver من الدرجة الأولى (المكافئ لـ DDIM).
multistep_dpm_solver_second_order_update
< source >( model_output_list: list[torch.Tensor]*argssample: typing.Optional[torch.Tensor] = Nonenoise: typing.Optional[torch.Tensor] = None**kwargs ) → torch.Tensor
المعاملات
- model_output_list (
list[torch.Tensor]) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم عند خطوات الزمن الحالية واللاحقة. - sample (
torch.Tensor, اختياري) — نسخة حالية من عينة أنشأتها عملية الانتشار. - noise (
torch.Tensor، اختياري) — ضوضاء عشوائية تُستخدم في متغيرات المُحلِّل العشوائي (sde-*). يُشترط توفيره عند ضبطalgorithm_typeعلى أحد هذه المتغيرات، ولا يُستخدم في الحالات الأخرى.
يعيد
torch.Tensor
المصفوفة العينة عند خطوة الزمن السابقة.
خطوة واحدة لحلّ DPMSolver متعدد الخطوات من الدرجة الثانية.
multistep_dpm_solver_third_order_update
< source >( model_output_list: list[torch.Tensor]*argssample: typing.Optional[torch.Tensor] = Nonenoise: typing.Optional[torch.Tensor] = None**kwargs ) → torch.Tensor
المعاملات
- model_output_list (
list[torch.Tensor]) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم عند خطوات الزمن الحالية واللاحقة. - sample (
torch.Tensor، اختياري) — نسخة حالية من عينة تم إنشاؤها بواسطة عملية الانتشار. - noise (
torch.Tensor، اختياري) — مصفوفة الضوضاء.
يعيد
torch.Tensor
المصفوفة العينة عند خطوة الزمن السابقة.
خطوة واحدة لحلّ DPMSolver متعدد الخطوات من الرتبة الثالثة.
scale_model_input
< source >( sample: Tensor*args**kwargs ) → torch.Tensor
يضمن قابلية الاستبدال مع المجدولات التي تحتاج إلى تحجيم مدخلات نموذج إزالة الضوضاء اعتمادًا على خطوة الزمن الحالية.
set_timesteps
< source >( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device, NoneType] = None )
يحدد الخطوات الزمنية المنفصلة المستخدمة لسلسلة الانتشار (لتُنفَّذ قبل الاستدلال).
خطوة
< source >( model_output: Tensortimestep: typing.Union[int, torch.Tensor]sample: Tensorgenerator: typing.Optional[torch.Generator] = Nonevariance_noise: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → SchedulerOutput or tuple
المعاملات
- model_output (
torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم. - timestep (
int) — خطوة الزمن المنفصلة الحالية في سلسلة الانتشار. - sample (
torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار. - generator (
torch.Generator، اختياري) — مولّد أرقام عشوائية. - variance_noise (
torch.Tensor) — بديل لتوليد الضوضاء باستخدامgeneratorمن خلال تقديم الضوضاء مباشرةً للتباين نفسه. مفيد لطرق مثلCycleDiffusion. - return_dict (
bool) — ما إذا كان يجب إرجاع SchedulerOutput أوtuple.
يعيد
SchedulerOutput أو tuple
إذا كانت True هي قيمة return_dict، يُعاد SchedulerOutput، وإلا يُعاد tuple حيث يكون العنصر الأول هو tensor العينة.
تنبّأ بالعيّنة من خطوة الزمن السابقة عن طريق عكس معادلة ستوكستك التفاضلية (SDE). تنقل هذه الدالة العيّنة باستخدام multistep DPMSolver.
SchedulerOutput
فئة diffusers.schedulers.scheduling_utils.SchedulerOutput
< source >( prev_sample: Tensor )
الفئة الأساسية لمخرجات دالة step في المجدول.