Diffusers documentation

PEFT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

PEFT

يدعم Diffusers تحميل المُكيّفات (adapters) مثل LoRA باستخدام مكتبة PEFT من خلال فئة PeftAdapterMixin. وهذا يتيح لفئات النمذجة في Diffusers مثل UNet2DConditionModel وSD3Transformer2DModel العمل مع مُكيّف.

راجع شروحات الاستدلال باستخدام PEFT للحصول على نظرة عامة حول كيفية استخدام PEFT في Diffusers للاستدلال.

PeftAdapterMixin

فئة diffusers.loaders.PeftAdapterMixin

< >

( )

فئة تحتوي على جميع الدوال الخاصة بتحميل واستخدام أوزان المحوِّلات (adapters) المدعومة في مكتبة PEFT. لمزيد من التفاصيل حول المحوِّلات وحقنها في النموذج الأساسي، راجع التوثيق الخاص بـ PEFT.

قم بتثبيت أحدث إصدار من PEFT، واستخدم هذا المكوّن المدمج (mixin) للقيام بما يلي:

  • إرفاق محوِّلات جديدة في النموذج.
  • إرفاق عدة محددات وتفعيلها/تعطيلها بشكل متكرر.
  • تفعيل/تعطيل جميع المُكيّفات من النموذج.
  • احصل على قائمة بالمُكيِّفات النشطة.

active_adapters

< >

( )

يحصل على القائمة الحالية للمُكيِّفات النشطة للنموذج.

إذا لم تكن على دراية بالمُكيِّفات (Adapters) وطرق PEFT، ندعوك إلى قراءة المزيد عنها في التوثيق الخاص بـ PEFT.

add_adapter

< >

( adapter_configadapter_name: str = 'default' )

المعاملات

  • adapter_config ([~peft.PeftConfig]) — إعدادات المُكيّف (adapter) المُراد إضافته؛ المُكيّفات المدعومة هي طرق الضبط غير البادئة (non-prefix tuning) و prompts التكيفية (adaption prompt).
  • adapter_name (str، اختياري، الافتراضي "default") — اسم المُكيّف (adapter) الذي سيتم إضافته. إذا لم يتم تمرير اسم، فسيتم تعيين اسم افتراضي للمُكيّف.

يضيف مُكيّفًا جديدًا إلى النموذج الحالي للتدريب. إذا لم يتم تمرير اسم للمكيّف، يُسند اسم افتراضي للمكيّف لاتباع اتفاقية مكتبة PEFT.

إذا لم تكن على دراية بالمُكيِّفات (Adapters) وطرق PEFT، ندعوك إلى قراءة المزيد عنها في التوثيق الخاص بـ PEFT.

delete_adapters

< >

( adapter_names: list[str] | str )

المعاملات

  • adapter_names (list[str, str]) — أسماء (سلسلة واحدة أو قائمة من السلاسل) للمُكيِّف الذي سيتم حذفه.

احذف طبقات LoRA الخاصة بالمُكيّف من النموذج الأساسي.

مثال:

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_names="cinematic"
)
pipeline.unet.delete_adapters("cinematic")

disable_adapters

< >

( )

تعطيل جميع المُكيّفات (adapters) المرتبطة بالنموذج والعودة إلى الاستدلال باستخدام النموذج الأساسي فقط.

إذا لم تكن على دراية بالمُكيِّفات (Adapters) وطرق PEFT، ندعوك إلى قراءة المزيد عنها في التوثيق الخاص بـ PEFT.

disable_lora

< >

( )

يعطّل طبقات LoRA النشطة في النموذج الأساسي.

مثال:

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic"
)
pipeline.unet.disable_lora()

enable_adapters

< >

( )

تفعيل المُكيّفات (adapters) المرتبطة بالنموذج. يستخدم النموذج self.active_adapters() لاسترجاع قائمة المُكيّفات التي يجب تفعيلها.

إذا لم تكن على دراية بالمُكيِّفات (Adapters) وطرق PEFT، ندعوك إلى قراءة المزيد عنها في التوثيق الخاص بـ PEFT.

enable_lora

< >

( )

يُفعّل طبقات LoRA النشطة في النموذج الأساسي.

مثال:

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic"
)
pipeline.unet.enable_lora()

enable_lora_hotswap

< >

( target_rank: int = 128check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error' )

المعاملات

  • target_rank (int، اختياري، القيمة الافتراضية 128) — أعلى رتبة بين جميع المحوِّلات التي سيتم تحميلها.
  • check_compiled (str, اختياري, الافتراضي هو "error") — كيفية التعامل مع الحالة التي يكون فيها النموذج مُجمَّعًا مسبقًا، وهو ما ينبغي تجنّبه بشكل عام. الخيارات هي:
    • “error” (الافتراضي): يرمي خطأ
    • “warn”: إصدار تحذير
    • “ignore”: لا تفعل شيئًا

يتيح إمكانية تبديل محولات LoRA بشكل فوري.

لا يُشترط استدعاء هذه الطريقة إلا عند تبديل المحولات (adapters) بشكل مباشر، وفي حال كان النموذج مُجمَّعًا (compiled) أو إذا اختلفت رتب المحولات المُحمَّلة.

load_lora_adapter

< >

( pretrained_model_name_or_path_or_dictprefix = 'transformer'hotswap: bool = False**kwargs )

المعاملات

  • pretrained_model_name_or_path_or_dict (str أو os.PathLike أو dict) — يمكن أن يكون أحد ما يلي:
    • سلسلة نصية، وهي معرف النموذج (على سبيل المثال google/ddpm-celebahq-256) لنموذج مُدرَّب مسبقًا مستضاف على الـ Hub.
    • مسار إلى مجلد (على سبيل المثال ./my_model_directory) يحتوي على أوزان النموذج المحفوظة باستخدام ModelMixin.save_pretrained().
    • حالة torch.
  • prefix (str، اختياري) — بادئة لتصفية state dict.
  • cache_dir (str | os.PathLike، اختياري) — المسار إلى مجلد حيث يتم تخزين إعدادات النموذج المُدرَّب مسبقًا المُحمَّل مؤقتًا إذا لم يُستخدم المجلد المؤقت القياسي.
  • force_download (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إجبار إعادة تنزيل أوزان النموذج وملفات الإعداد، مع تجاوز النسخ المخزنة مؤقتًا إذا كانت موجودة.
  • proxies (dict[str, str]، اختياري) — قاموس لخوادم الوكيل (proxy) للاستخدام حسب البروتوكول أو نقطة النهاية، على سبيل المثال {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. تُستخدم هذه الوكلاء في كل طلب.
  • local_files_only (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تحميل أوزان النموذج وملفات الإعداد المحلية فقط أم لا. إذا تم ضبطه على True، فلن يتم تنزيل النموذج من Hub.
  • token (str أو bool، اختياري) — الرمز الذي يُستخدم كتفويض حامل HTTP للملفات البعيدة. إذا كان True، يُستخدم الرمز المولّد من diffusers-cli login (المخزّن في ~/.huggingface).
  • revision (str، اختياري، القيمة الافتراضية "main") — الإصدار المحدد من النموذج الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف commit، أو أي معرّف مسموح به بواسطة Git.
  • subfolder (str، اختياري، الافتراضي "") — موقع المجلد الفرعي لملف النموذج داخل مستودع نموذج أكبر على Hub أو محليًا.
  • network_alphas (dict[str, float]) — قيمة ألفا للشبكة المستخدمة للتعلم المستقر ومنع النقص. تحمل هذه القيمة نفس معنى الخيار --network_alpha في سكربت المدرب kohya-ss. راجع هذا الرابط.
  • low_cpu_mem_usage (bool، اختياري) — تسريع تحميل النموذج من خلال تحميل أوزان LoRA المُدرَّبة مسبقًا فقط دون تهيئة الأوزان العشوائية.
  • hotswap — (bool, اختياري) القيمة الافتراضية هي False. ما إذا كان يجب استبدال مُكيّف (LoRA) موجود بمُكيّف جديد تم تحميله في مكانه. وهذا يعني أنه، بدلاً من تحميل مُكيّف إضافي، سيتم أخذ أوزان المُكيّف الحالي واستبدالها بأوزان المُكيّف الجديد. يمكن أن يكون هذا أسرع وأكثر كفاءة في استخدام الذاكرة. ومع ذلك، فإن الميزة الرئيسية للاستبدال السريع هي أنه عند تجميع النموذج باستخدام torch.compile، لا يتطلب تحميل المُكيّف الجديد إعادة تجميع النموذج. عند استخدام الاستبدال السريع، يجب أن يكون adapter_name اسم مُكيّف تم تحميله بالفعل.

    إذا كان للمُكيّف الجديد والمُكيّف القديم رتب مختلفة و/أو قيم LoRA alphas مختلفة (أي معاملات التوسيع)، فستحتاج إلى استدعاء طريقة إضافية قبل تحميل المُكيّف:

يحمّل مُكيّف LoRA في النموذج الأساسي.

save_lora_adapter

< >

( save_directoryadapter_name: str = 'default'upcast_before_saving: bool = Falsesafe_serialization: bool = Trueweight_name: str | None = None )

المعاملات

  • save_directory (str أو os.PathLike) — المجلد الذي سيتم حفظ معاملات LoRA فيه. سيتم إنشاؤه إذا لم يكن موجودًا.
  • adapter_name — (str، القيمة الافتراضية هي “default”): اسم المُكيّف الذي سيتم تسلسله. يكون مفيدًا عندما يحتوي النموذج الأساسي على عدة مُكيّفات محمّلة.
  • upcast_before_saving (bool، القيمة الافتراضية False) — ما إذا كان يجب تحويل النموذج الأساسي إلى torch.float32 قبل التسلسل.
  • safe_serialization (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم حفظ النموذج باستخدام safetensors أو بالطريقة التقليدية الخاصة بـ PyTorch باستخدام pickle.
  • weight_name — (str، اختياري، القيمة الافتراضية None): اسم الملف الذي سيتم من خلاله تسلسل قاموس الحالة.

احفظ معاملات LoRA المقابلة للنموذج الأساسي.

set_adapter

< >

( adapter_name: str | list[str] )

المعاملات

  • adapter_name (str | list[str])) — قائمة المُكيّفات التي يجب ضبطها، أو اسم المُكيّف في حالة وجود مُكيّف واحد.

يُعيّن مُكيّفًا محددًا من خلال إجبار النموذج على استخدام ذلك المُكيّف فقط، مع تعطيل المُكيّفات الأخرى.

إذا لم تكن على دراية بالمُكيِّفات (Adapters) وطرق PEFT، ندعوك إلى قراءة المزيد عنها في التوثيق الخاص بـ PEFT.

set_adapters

< >

( adapter_names: list[str] | strweights: float | dict | list[float] | list[dict] | list[None] | None = None )

المعاملات

  • adapter_names (list[str] أو str) — أسماء المُكيِّفات (adapters) المراد استخدامها.
  • weights (Union[List[float], float], اختياري) — أوزان المُكيِّف (أو المُكيِّفات) المستخدمة مع UNet. إذا كانت None، تُضبط الأوزان على 1.0 لجميع المُكيِّفات.

اضبط المُكيِّفات (adapters) النشطة حاليًا للاستخدام في شبكة الانتشار (مثل unet وtransformer وغيرها).

مثال:

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic"
)
pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel")
pipeline.unet.set_adapters(["cinematic", "pixel"], weights=[0.5, 0.5])
Update on GitHub