Diffusers documentation
CMStochasticIterativeScheduler
CMStochasticIterativeScheduler
قدّم Consistency Models الذي كتبه Yang Song و Prafulla Dhariwal و Mark Chen و Ilya Sutskever جدولة متعددة الخطوات وأخرى بخطوة واحدة (الخوارزمية 1) قادرة على توليد عينات جيدة في خطوة واحدة أو عدد قليل من الخطوات.
ملخص الورقة البحثية هو:
حقّقت نماذج الانتشار تقدماً كبيراً في مجالات توليد الصور والصوت والفيديو، لكنها تعتمد على عملية أخذ عينات تكرارية تسبب بطئاً في التوليد. للتغلب على هذه القيود، نقترح نماذج الاتساق، وهي عائلة جديدة من النماذج تولّد عينات عالية الجودة عن طريق خرائط الضوضاء مباشرةً إلى البيانات. فهي تدعم التوليد السريع بخطوة واحدة بالتصميم، مع السماح في الوقت نفسه بأخذ عينات متعددة الخطوات لتبادل الحسابات مقابل جودة العينة. كما تدعم تحرير البيانات بدون تدريب مسبق، مثل ملء الصور (inpainting)، والتلوين، والدقة الفائقة، دون الحاجة إلى تدريب صريح على هذه المهام. يمكن تدريب نماذج الاتساق إما عن طريق تقطير نماذج الانتشار المدربة مسبقاً، أو كنماذج توليدية مستقلة تماماً. من خلال تجارب شاملة، نثبت أنها تتفوق على تقنيات التقطير الحالية لنماذج الانتشار في أخذ العينات بخطوة واحدة وبضع خطوات، محققةً أحدث مستوى من الأداء (state-of-the-art) بمقياس FID قدره 3.55 على CIFAR-10 و6.20 على ImageNet 64x64 للتوليد بخطوة واحدة. عند تدريبها بشكل منفصل، تصبح نماذج الاتساق عائلة جديدة من النماذج التوليدية يمكن أن تتفوق على النماذج التوليدية الحالية بخطوة واحدة وغير العدائية على المعايير القياسية مثل CIFAR-10 وImageNet 64x64 وLSUN 256x256.
يمكن العثور على قاعدة الكود الأصلية في openai/consistency_models.
CMStochasticIterativeScheduler
فئة diffusers.CMStochasticIterativeScheduler
< source >( num_train_timesteps: int = 40sigma_min: float = 0.002sigma_max: float = 80.0sigma_data: float = 0.5s_noise: float = 1.0rho: float = 7.0clip_denoised: bool = True )
المعاملات
- num_train_timesteps (
int، القيمة الافتراضية 40) — عدد خطوات الانتشار لتدريب النموذج. - sigma_min (
float، القيمة الافتراضية 0.002) — أدنى حجم للضوضاء في جدول سيجما. القيمة الافتراضية هي 0.002 من التنفيذ الأصلي. - sigma_max (
float، القيمة الافتراضية 80.0) — أقصى قيمة لضوضاء في جدول سيجما. القيمة الافتراضية هي 80.0 من التنفيذ الأصلي. - sigma_data (
float, القيمة الافتراضية 0.5) — انحراف المعيار لتوزيع البيانات من ورقة EDM البحثية. القيمة الافتراضية هي 0.5 من التنفيذ الأصلي. - s_noise (
float، القيمة الافتراضية 1.0) — كمية الضوضاء الإضافية لمقاومة فقدان التفاصيل أثناء أخذ العينات. النطاق المعقول هو [1.000, 1.011]. القيمة الافتراضية هي 1.0 من التنفيذ الأصلي. - rho (
float، القيمة الافتراضية 7.0) — المعامل المستخدم لحساب جدول Karras sigma من ورقة EDM. القيمة الافتراضية هي 7.0 من التنفيذ الأصلي. - clip_denoised (
bool) — القيمة الافتراضيةTrue— ما إذا كان سيتم قص المخرجات بعد إزالة الضوضاء إلى(-1, 1). - timesteps (
listأوnp.ndarrayأوtorch.Tensor، اختياري) — جدول صريح لخطوات الزمن يمكن تحديده بشكل اختياري. يُتوقع أن تكون الخطوات مرتبة بترتيب تصاعدي.
التعيّن متعدد الخطوات والتعيّن أحادي الخطوة لنماذج الاتساق.
يرث هذا النموذج من 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_scalings
< source >( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]
يُحسب عوامل التوسيع لمخرجات نموذج الاتساق.
get_scalings_for_boundary_condition
< source >( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]
يحصل على معاملات التوسيع المستخدمة في ترميز نموذج الاتساق (من الملحق C من الورقة) لفرض شرط الحد.
> يُضبط
epsilonفي معادلاتc_skipوc_outعلىsigma_min.
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 + sigma_data**2) ** 0.5.
set_begin_index
< source >( begin_index: int = 0 )
يحدد الفهرس الابتدائي للمجدول. يجب تشغيل هذه الدالة من خط الأنابيب قبل الاستدلال.
set_timesteps
< source >( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = None )
المعاملات
- num_inference_steps (
int, اختياري) — عدد خطوات الانتشار المستخدمة عند توليد العينات باستخدام نموذج مُدرَّب مسبقًا. - device (
strأوtorch.device، اختياري) — الجهاز الذي يجب نقل خطوات الزمن (timesteps) إليه. إذا كانNone، فلن يتم نقل خطوات الزمن. - timesteps (
list[int]، اختياري) — خطوات زمنية مخصصة تُستخدم لدعم تباعد تعسفي بين الخطوات الزمنية. إذا كانتNone، فسيتم استخدام استراتيجية التباعد الافتراضية للخطوات الزمنية، وهي التباعد المتساوي بينها. إذا تم تمريرtimesteps، فيجب أن تكونnum_inference_stepsهيNone.
يحدد الخطوات الزمنية المستخدمة لسلسلة الانتشار (لتُنفَّذ قبل الاستدلال).
sigma_to_t
< source >( sigmas: float | numpy.ndarray ) → np.ndarray
يحصل على خطوات زمنية مُقيَّمة من قيم Karras sigmas كمدخل إلى نموذج الاتساق.
خطوة
< source >( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → CMStochasticIterativeSchedulerOutput or tuple
المعاملات
- model_output (
torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم. - timestep (
floatأوtorch.Tensor) — خطوة الزمن الحالية في سلسلة الانتشار. - sample (
torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار. - generator (
torch.Generator، اختياري) — مولّد أرقام عشوائية. - return_dict (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع CMStochasticIterativeSchedulerOutput أوtuple.
يعيد
CMStochasticIterativeSchedulerOutput أو tuple
If return_dict is True,
CMStochasticIterativeSchedulerOutput is returned,
otherwise a tuple is returned where the first element is the sample tensor.
تنبّأ بالعيّنة من الخطوة الزمنية السابقة عن طريق عكس عملية المعادلة التفاضلية العشوائية (SDE). تنقل هذه الدالة عملية الانتشار من مخرجات النموذج المُتعلَّم (والتي تكون في الغالب الضوضاء المتنبَّأ بها).
CMStochasticIterativeSchedulerOutput
فئة diffusers.schedulers.scheduling_consistency_models.CMStochasticIterativeSchedulerOutput
< source >( prev_sample: Tensor )
فئة الإخراج لدالة step في المجدول.