Diffusers documentation
المجدولون
المجدولون
🤗 Diffusers provides many scheduler functions for the diffusion process. A scheduler takes a model’s output (the sample which the diffusion process is iterating on) and a timestep to return a denoised sample. The timestep is important because it dictates where in the diffusion process the step is; data is generated by iterating forward n timesteps and inference occurs by propagating backward through the timesteps. Based on the timestep, a scheduler may be discrete in which case the timestep is an int or continuous in which case the timestep is a float.
يعتمد على السياق، يحدد المُجدول كيفية إضافة الضوضاء إلى صورة بشكل تكراري، أو كيفية تحديث عينة بناءً على مخرجات النموذج:
- أثناء التدريب، يضيف مُجدول ضوضاء (توجد خوارزميات مختلفة لكيفية إضافة الضوضاء) إلى عينة لتدريب نموذج الانتشار
- أثناء الاستدلال، يحدد المجدول كيفية تحديث عينة بناءً على مخرجات نموذج مُدرَّب مسبقًا
تم تنفيذ العديد من المجدولات من مكتبة k-diffusion بواسطة Katherine Crowson، وهي تُستخدم على نطاق واسع أيضاً في A1111. لمساعدتك على مطابقة المجدولات من k-diffusion وA1111 مع المجدولات في 🤗 Diffusers، راجع الجدول أدناه:
| A1111/k-diffusion | 🤗 Diffusers | الاستخدام |
|---|---|---|
| DPM++ 2M | DPMSolverMultistepScheduler | |
| DPM++ 2M Karras | DPMSolverMultistepScheduler | مع use_karras_sigmas=True |
| DPM++ 2M SDE | DPMSolverMultistepScheduler | باستخدام algorithm_type="sde-dpmsolver++" |
| DPM++ 2M SDE Karras | DPMSolverMultistepScheduler | ابدأ باستخدام use_karras_sigmas=True وalgorithm_type="sde-dpmsolver++" |
| DPM++ 2S a | N/A | شبيه جدًا بـDPMSolverSinglestepScheduler |
| DPM++ 2S a Karras | N/A | شبيه جدًا بـ DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...) |
| DPM++ SDE | DPMSolverSinglestepScheduler | |
| DPM++ SDE Karras | DPMSolverSinglestepScheduler | مع use_karras_sigmas=True |
| DPM2 | KDPM2DiscreteScheduler | |
| DPM2 Karras | KDPM2DiscreteScheduler | مع use_karras_sigmas=True |
| DPM2 a | KDPM2AncestralDiscreteScheduler | |
| DPM2 a Karras | KDPM2AncestralDiscreteScheduler | مع use_karras_sigmas=True |
| DPM التكيفي | N/A | |
| DPM fast | N/A | |
| Euler | EulerDiscreteScheduler | |
| Euler a | EulerAncestralDiscreteScheduler | |
| هون | HeunDiscreteScheduler | |
| LMS | LMSDiscreteScheduler | |
| LMS Karras | LMSDiscreteScheduler | مع use_karras_sigmas=True |
| N/A | DEISMultistepScheduler | |
| N/A | UniPCMultistepScheduler |
جداول الضوضاء وأنواع الجداول
| A1111/k-diffusion | 🤗 Diffusers |
|---|---|
| Karras | مع use_karras_sigmas=True |
| sgm_uniform | init مع timestep_spacing="trailing" |
| بسيط | init مع timestep_spacing="trailing" |
| أُسّي | init مع timestep_spacing="linspace"، use_exponential_sigmas=True |
| بيتا | init مع timestep_spacing="linspace"، use_beta_sigmas=True |
جميع المجدولين مبنية من الفئة الأساسية SchedulerMixin التي تنفّذ أدوات منخفضة المستوى مشتركة بين جميع المجدولين.
SchedulerMixin
الفئة الأساسية لجميع مجدولات التعلم.
تحتوي SchedulerMixin على دوال مشتركة بين جميع المجدولين، مثل وظائف التحميل والحفظ العامة.
يتولى ConfigMixin مهمة تخزين سمات الإعداد (مثل num_train_timesteps) التي تُمرَّر إلى دالة __init__ للمجدول، ويمكن الوصول إلى هذه السمات عبر scheduler.config.num_train_timesteps.
خصائص الفئة:
- _compatibles (
list[str]) — قائمة بفئات المجدول (scheduler) المتوافقة مع فئة المجدول الأصلية. استخدم from_config() لتحميل فئة مجدول متوافقة مختلفة (يجب أن يتم تجاوزها بواسطة الفئة الأصلية).
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike | None = Nonesubfolder: str | None = Nonereturn_unused_kwargs: bool = False**kwargs: Any ) → SchedulerMixin or tuple[SchedulerMixin, dict[str, Any]]
المعاملات
- pretrained_model_name_or_path (
strأوos.PathLike, اختياري) — يمكن أن يكون:- سلسلة نصية، وهي معرف النموذج (على سبيل المثال
google/ddpm-celebahq-256) لنموذج مُدرَّب مسبقًا مستضاف على الـ Hub. - مسار إلى مجلد (على سبيل المثال
./my_model_directory) يحتوي على إعدادات المجدول المحفوظة باستخدام save_pretrained().
- سلسلة نصية، وهي معرف النموذج (على سبيل المثال
- subfolder (
str، اختياري) — موقع المجلد الفرعي لملف النموذج داخل مستودع نموذج أكبر على Hub أو محليًا. - return_unused_kwargs (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع معاملات kwargs التي لا تستهلكها فئة Python أم لا. - cache_dir (
strأوos.PathLike، اختياري) — المسار إلى مجلد حيث يتم تخزين إعدادات النموذج المُدرَّب مسبقًا المُحمَّل مؤقتًا إذا لم يُستخدم المجلد المؤقت القياسي. - force_download (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إجبار إعادة تنزيل أوزان النموذج وملفات الإعداد، مع تجاوز النسخ المخزنة مؤقتًا إذا كانت موجودة. - proxies (
dict[str, str]، اختياري) — قاموس لخوادم الوكيل (proxy) للاستخدام حسب البروتوكول أو نقطة النهاية، على سبيل المثال{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. تُستخدم هذه الوكلاء في كل طلب. - output_loading_info (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع قاموس يحتوي على المفاتيح الناقصة والمفاتيح غير المتوقعة ورسائل الأخطاء أم لا. - local_files_only (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم تحميل أوزان النموذج وملفات الإعداد المحلية فقط أم لا. إذا تم ضبطه علىTrue، فلن يتم تنزيل النموذج من Hub. - token (
strأوbool، اختياري) — الرمز الذي يُستخدم كتفويض حامل HTTP للملفات البعيدة. إذا كانTrue، يُستخدم الرمز المولّد منdiffusers-cli login(المخزّن في~/.huggingface). - revision (
str، اختياري، القيمة الافتراضية"main") — الإصدار المحدد من النموذج الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف commit، أو أي معرّف مسموح به بواسطة Git.
يعيد
SchedulerMixin أو tuple[SchedulerMixin, dict[str, Any]]
المجدول المُثبَّت من الإعداد. إذا كان return_unused_kwargs هو True، يُعاد tuple يكون عنصره الثاني قاموسًا من معاملات الكلمات المفتاحية غير المستخدمة.
أنشئ جدولة (scheduler) من ملف تكوين JSON مُعرّف مسبقًا في مجلد محلي أو مستودع على Hub.
> لاستخدام النماذج الخاصة أو النماذج المُقيَّدة، سجّل الدخول باستخدام
hf > auth login. كما يمكنك تفعيل وضع “offline-mode” الخاص لاستخدام هذه الطريقة في بيئة محمية بجدار ناري.
save_pretrained
< source >( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs: Any )
المعاملات
- save_directory (
strأوos.PathLike) — المجلد الذي سيتم حفظ ملف الإعدادات بصيغة JSON فيه (سيتم إنشاؤه إذا لم يكن موجودًا). - push_to_hub (
bool، اختياري، الافتراضيFalse) — ما إذا كان سيتم دفع نموذجك إلى Hugging Face Hub بعد حفظه. يمكنك تحديد المستودع الذي تريد الدفع إليه باستخدامrepo_id(سيكون الافتراضي هو اسمsave_directoryفي نطاقك). - kwargs (
dict[str, Any]، اختياري) — معلمات إضافية تُمرَّر إلى طريقة push_to_hub().
احفظ كائن تكوين المجدول في مجلد بحيث يمكن إعادة تحميله باستخدام طريقة الفئة from_pretrained().
SchedulerOutput
فئة diffusers.schedulers.scheduling_utils.SchedulerOutput
< source >( prev_sample: Tensor )
الفئة الأساسية لمخرجات دالة step في المجدول.
KarrasDiffusionSchedulers
KarrasDiffusionSchedulers تعميم واسع للمجدولين في 🤗 Diffusers. تتميز المجدولات في هذه الفئة على مستوى عالٍ باستراتيجية أخذ عينات الضوضاء، ونوع الشبكة والتوسع، واستراتيجية التدريب، وكيفية وزن الخسارة.
تندرج المجدولات المختلفة في هذه الفئة، اعتماداً على نوع محلل المعادلات التفاضلية العادية (ODE)، ضمن التصنيف المذكور أعلاه، وتوفر تجريدًا جيدًا لتصميم المجدولات الرئيسية المُنفَّذة في 🤗 Diffusers. يمكن العثور على المجدولات في هذه الفئة هنا.
PushToHubMixin
مزيج (Mixin) لدفع نموذج أو مجدول أو خط أنابيب إلى Hugging Face Hub.
push_to_hub
< source >( repo_id: strcommit_message: str | None = Noneprivate: bool | None = Nonetoken: str | None = Nonecreate_pr: bool = Falsesafe_serialization: bool = Truevariant: str | None = Nonesubfolder: str | None = None )
المعاملات
- repo_id (
str) — اسم المستودع الذي تريد دفع ملفات النموذج أو المجدول أو خط الأنابيب إليه. يجب أن يحتوي على اسم مؤسستك عند الدفع إلى مؤسسة. كما يمكن أن يكونrepo_idمسارًا إلى مجلد محلي. - commit_message (
str، اختياري) — الرسالة التي تُرسل عند الدفع. القيمة الافتراضية هي"Upload {object}". - private (
bool، اختياري) — ما إذا كان سيتم جعل المستودع خاصًا. إذا كانNone(الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي للمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا بالفعل. - token (
str، اختياري) — الرمز الذي يُستخدم كتوكن مصادقة HTTP Bearer للملفات البعيدة. الرمز الذي يتم إنشاؤه عند تشغيلhf auth login(يُخزَّن في~/.huggingface). - create_pr (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم إنشاء طلب سحب (PR) بالملفات المرفوعة أم الالتزام مباشرة. - safe_serialization (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم تحويل أوزان النموذج إلى صيغةsafetensorsأم لا. - variant (
str، اختياري) — إذا تم تحديده، تُحفظ الأوزان بالتنسيقpytorch_model.<variant>.bin.
ارفع ملفات النموذج أو المجدول أو خط الأنابيب إلى 🤗 Hugging Face Hub.
أمثلة:
from diffusers import UNet2DConditionModel
unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")
# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")
# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")