Buckets:

mishig's picture
|
download
raw
18 kB

PEFT

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

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

PeftAdapterMixin[[diffusers.loaders.PeftAdapterMixin]]

diffusers.loaders.PeftAdapterMixin[[diffusers.loaders.PeftAdapterMixin]]

diffusers.loaders.PeftAdapterMixin()

المصدر

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

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

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

active_adapters[[diffusers.loaders.PeftAdapterMixin.active_adapters]]

active_adapters()

المصدر

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

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

add_adapter[[diffusers.loaders.PeftAdapterMixin.add_adapter]]

add_adapter(adapter_config, adapter_name: str = 'default')

المصدر

المعاملات:

adapter_config ([~peft.PeftConfig]) : إعدادات المُكيّف الذي سيتم إضافته؛ المُكيّفات المدعومة هي طرق الضبط غير البادئة (non-prefix tuning) و prompts التكيفية (adaption prompt).

adapter_name (str، اختياري، القيمة الافتراضية "default") : اسم المُكيّف (adapter) الذي سيتم إضافته. إذا لم يتم تمرير اسم، فسيتم تعيين اسم افتراضي للمُكيّف.

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

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

delete_adapters[[diffusers.loaders.PeftAdapterMixin.delete_adapters]]

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[[diffusers.loaders.PeftAdapterMixin.disable_adapters]]

disable_adapters()

المصدر

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

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

disable_lora[[diffusers.loaders.PeftAdapterMixin.disable_lora]]

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[[diffusers.loaders.PeftAdapterMixin.enable_adapters]]

enable_adapters()

المصدر

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

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

enable_lora[[diffusers.loaders.PeftAdapterMixin.enable_lora]]

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[[diffusers.loaders.PeftAdapterMixin.enable_lora_hotswap]]

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

المصدر

المعاملات:

target_rank (int، اختياري، القيمة الافتراضية 128) : أعلى رتبة بين جميع المحوِّلات التي سيتم تحميلها.

check_compiled (str، اختياري، القيمة الافتراضية "error") : كيفية التعامل مع الحالة التي يكون فيها النموذج مُجمَّعًا مسبقًا، وهو ما ينبغي تجنّبه بشكل عام. الخيارات هي: - "error" (الافتراضي): رفع خطأ - "warn": إصدار تحذير - "ignore": عدم اتخاذ أي إجراء

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

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

load_lora_adapter[[diffusers.loaders.PeftAdapterMixin.load_lora_adapter]]

load_lora_adapter(pretrained_model_name_or_path_or_dict, prefix = '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، اختياري) : بادئة لتصفية قاموس الحالة.

cache_dir (str | os.PathLike، اختياري) : مسار إلى مجلد حيث تُخزَّن مؤقتًا إعدادات النموذج المُسبق التحميل المُحمَّل إذا لم يُستخدم التخزين المؤقت القياسي.

force_download (bool، اختياري، القيمة الافتراضية False) : ما إذا كان يجب إجبار إعادة تنزيل أوزان النموذج وملفات الإعداد، مع تجاوز النسخ المخزنة مؤقتًا إذا كانت موجودة.

proxies (dict[str, str]، اختياري) : قاموس لخوادم الوكيل (proxy servers) للاستخدام حسب البروتوكول أو نقطة النهاية، على سبيل المثال، {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. تُستخدم هذه الوكلاء في كل طلب.

local_files_only (bool، اختياري، القيمة الافتراضية False) : ما إذا كان سيتم تحميل أوزان النموذج المحلية وملفات الإعداد فقط أم لا. إذا تم ضبطه على True، فلن يتم تنزيل النموذج من Hub.

token (str أو bool، اختياري) : الرمز الذي يُستخدم كتوكن مصادقة HTTP bearer للملفات البعيدة. إذا كان True، يُستخدم التوكن المولّد من diffusers-cli login (المخزَّن في ~/.huggingface).

revision (str، اختياري، القيمة الافتراضية "main") : إصدار النموذج المحدد الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف التزامن، أو أي معرّف مسموح به بواسطة 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 alpha (أي التوسع)، فستحتاج إلى استدعاء طريقة إضافية قبل تحميل المُكيّف: py pipeline = ... # load diffusers pipeline max_rank = ... # the highest rank among all LoRAs that you want to load # call *before* compiling and loading the LoRA adapter pipeline.enable_lora_hotswap(target_rank=max_rank) pipeline.load_lora_weights(file_name) # optionally compile the model now لاحظ أن استبدال مُكيّفات مُشفّر النص غير مدعوم بعد. هناك بعض القيود الإضافية على هذه التقنية، وهي موثقة هنا: https://huggingface.co/docs/peft/main/en/package_reference/hotswap

metadata : بيانات وصفية لمُكيّف LoRA. عند تقديمها، لا تُستخدم البيانات الوصفية المستنتجة عبر state dict لتبديل LoraConfig.

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

save_lora_adapter[[diffusers.loaders.PeftAdapterMixin.save_lora_adapter]]

save_lora_adapter(save_directory, adapter_name: str = 'default', upcast_before_saving: bool = False, safe_serialization: bool = True, weight_name: str | None = None)

المصدر

المعاملات:

save_directory (str أو os.PathLike) : المجلد الذي سيتم حفظ معلمات LoRA فيه. سيتم إنشاؤه إذا لم يكن موجودًا.

adapter_name : (str، القيمة الافتراضية هي "default"): اسم المُكيّف (adapter) الذي سيتم تسلسله. مفيد عندما يحتوي النموذج الأساسي على عدة مُكيّفات محمّلة.

upcast_before_saving (bool، القيمة الافتراضية False) : ما إذا كان سيتم تحويل النموذج الأساسي إلى torch.float32 قبل التسلسل.

safe_serialization (bool، اختياري، الافتراضي True) : ما إذا كان سيتم حفظ النموذج باستخدام safetensors أو بالطريقة التقليدية الخاصة بـ PyTorch باستخدام pickle.

weight_name : (str, اختياري، القيمة الافتراضية None): اسم الملف الذي سيتم من خلاله تسلسل state dict.

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

set_adapter[[diffusers.loaders.PeftAdapterMixin.set_adapter]]

set_adapter(adapter_name: str | list[str])

المصدر

المعاملات:

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

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

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

set_adapters[[diffusers.loaders.PeftAdapterMixin.set_adapters]]

set_adapters(adapter_names: list[str] | str, weights: 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])

Xet Storage Details

Size:
18 kB
·
Xet hash:
47f1855344ba6a77d397ea46328a80d34e6af96decb347f9868500f58fa9010c

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.