PEFT 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.21.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

دوال لتكامل PEFT

مجموعة من الدوال التي قد تكون مفيدة للنماذج غير PeftModel، مثل تكامل transformers أو diffusers

يمكن اعتبار الدوال المقدمة هنا “واجهة برمجة تطبيقات عامة” لـ PEFT، وبالتالي فهي آمنة للاستخدام من قبل الحزم التي توفر تكاملات مع PEFT.

قم بتحويل أنواع بيانات أوزان المحوّل

peft.tuners.tuners_utils.cast_adapter_dtype

< >

( model: nn.Moduleadapter_name: strautocast_adapter_dtype: bool = True )

المعاملات

  • adapter_name (str) — اسم المُكيّف.
  • autocast_adapter_dtype (bool، اختياري) — ما إذا كان سيتم تحويل نوع بيانات المحوّل تلقائيًا. القيمة الافتراضية هي True.

طريقة مساعدة لتحويل أوزان المُكيّف إلى نوع البيانات الصحيح. تعيد تعيين معاملات جديدة لطبقات المُكيّف، وإذا كان بعض الكائنات تشير إلى المعاملات القديمة، فلن يتم تحديثها.

حاليًا، يقوم هذا فقط بترقية أنواع البيانات العائمة (float dtypes) إلى float32.

حذف مُكيّف PEFT من النموذج

peft.tuners.tuners_utils.delete_adapter

< >

( model: nn.Moduleadapter_name: strprefix: strlayer_cls: type[BaseTunerLayer] = <class 'peft.tuners.tuners_utils.BaseTunerLayer'> ) → new_adapter (list[str] | None)

المعاملات

  • model (nn.Module) — النموذج الذي يجب حذف المُكيّف منه.
  • adapter_name (str) — اسم المُكيّف الذي سيتم حذفه.
  • prefix (str) — بادئة طريقة PEFT، مثل “lora_” لـ LoRA.
  • layer_cls (نوع، اختياري) — فئة طبقة المُكيّف. القيمة الافتراضية هي BaseTunerLayer.

يعيد

new_adapter (list[str] | None)

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

حذف مُكيّف PEFT موجود.

ملاحظة: لا تحذف هذه الدالة إعدادات PEFT على النموذج، إن وُجدت. كما أنها لن تُزيل طبقات PEFT بالكامل إذا حُذف مُكيّف PEFT الأخير. لهذا الغرض، يُنصح باستخدام model.unload() إذا كنت تستخدم نسخة من نموذج PEFT، أو ببساطة إعادة تحميل النموذج الأساسي.

احصل على قاموس الحالة (state dict) لمُكيّف PEFT

peft.get_peft_model_state_dict

< >

( modelstate_dict = Noneadapter_name: str = 'default'unwrap_compiled: bool = Falsesave_embedding_layers: bool | Literal['auto'] = 'auto' )

المعاملات

  • model (PeftModel) — نموذج Peft. عند استخدام torch.nn.DistributedDataParallel أو DeepSpeed أو FSDP، يجب أن يكون النموذج هو النموذج الأساسي/النموذج غير المغلف (أي model.module).
  • state_dict (dict، اختياري، القيمة الافتراضية None) — قائمة الحالة (state dict) للنموذج. إذا لم تُقدَّم، فسيتم استخدام قائمة الحالة للنموذج المُمرَّر.
  • adapter_name (str، اختياري، الافتراضي "default") — اسم المُكيّف الذي يجب إرجاع حالة القاموس الخاص به.
  • unwrap_compiled (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب فك تغليف النموذج إذا تم استخدام torch.compile.
  • save_embedding_layers (Union[bool, str], , اختياري, الافتراضي auto) — إذا كان True، يتم حفظ طبقات التضمين بالإضافة إلى أوزان المحوّل. إذا كان auto، يتم فحص طبقات التضمين الشائعة peft.utils.other.EMBEDDING_LAYER_NAMES في target_modules الخاص بالإعدادات عند توفرها. بناءً على ذلك، يتم تعيين العلم المنطقي. يعمل هذا فقط مع نماذج 🤗 transformers.

احصل على state dict للمُكيّف (adapter) المحدد في نموذج PEFT.

يشمل هذا معاملات PEFT فقط، وليس معاملات النموذج الأساسي. وبالتالي، يكون state_dict المُعاد صغيراً بشكل عام مقارنةً بحجم النموذج الكامل. لاسترجاع state_dict الكامل، ما عليك سوى استدعاء model.state_dict().

لاحظ أن اسم المُكيّف يُحذف من state_dict، إذ إنّه مجرد اسم تعسفي يمكن تغييره عند تحميل المُكيّف. لذا، على سبيل المثال، إذا كان اسم المُكيّف 'default' والمفتاح الأصلي هو 'model.q_proj.lora_A.default.weight'، فإن المفتاح المُعاد سيكون 'model.q_proj.lora_A.weight'. استخدم هذه الدالة بالتزامن مع set_peft_model_state_dict() للتعامل مع اسم المُكيّف عند تحميل الأوزان.

حقن مُكيّف PEFT في النموذج بناءً على إعداد PEFT

peft.inject_adapter_in_model

< >

( peft_config: PeftConfigmodel: torch.nn.Moduleadapter_name: str = 'default'low_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )

المعاملات

  • peft_config (PeftConfig) — كائن الإعدادات الذي يحتوي على معاملات نموذج PEFT.
  • model (torch.nn.Module) — النموذج المُدخل الذي سيتم حقن المُكيّف فيه.
  • adapter_name (str، optional، افتراضيًا "default") — اسم المُكيّف الذي سيتم حقنه، وإذا لم يُقدَّم، يُستخدم اسم المُكيّف الافتراضي (“default”).
  • low_cpu_mem_usage (bool, optional, defaults to False) — إنشاء أوزان مُكيّف فارغة على جهاز meta. مفيد لتسريع عملية التحميل.
  • state_dict (dict، اختياري، القيمة الافتراضية None) — إذا تم تمرير state_dict هنا، فسيتم حقن المُكيّفات (adapters) بناءً على إدخالات الـ state_dict. يمكن أن يكون هذا مفيدًا عندما تكون target_modules الدقيقة لطريقة PEFT غير معروفة، على سبيل المثال لأن نقطة التفتيش (checkpoint) أُنشئت دون بيانات وصفية. لاحظ أن القيم من state_dict لا تُستخدم، بل تُستخدم المفاتيح فقط لتحديد الطبقات الصحيحة التي يجب تكييفها.

أنشئ طبقات PEFT وأدرجها في النموذج في مكانها.

حاليًا، لا تدعم واجهة برمجة التطبيقات (API) طرق تعلم الموجهات (prompt learning) أو الموجهات التكيفية (adaption prompt) أو المُعدِّلات (tuners) التي تحتفظ بحالة المُعدِّل (adapter state) مشتركة بين طبقات الهدف المتعددة. استخدم get_peft_model() لهذا الأخير.

تتشابه هذه الدالة مع get_peft_model() لكنها لا تُرجع كائنًا من PeftModel. وبدلاً من ذلك، تُرجع النسخة الأصلية المعدلة من النموذج المُمرَّر.

اضبط مُكيّف PEFT النشط (أو النشطين) للنموذج

peft.tuners.tuners_utils.set_adapter

< >

( modeladapter_name: str | list[str]inference_mode: bool = Falselayer_cls: type[BaseTunerLayer] = <class 'peft.tuners.tuners_utils.BaseTunerLayer'> )

المعاملات

  • model (nn.Module) — النموذج الذي يجب تعيين المُكيِّف (المُكيِّفات) عليه.
  • adapter_name (str, list[str]) — أسماء المُكيِّف (المُكيِّفات) التي سيتم تعيينها كفعّالة
  • inference_mode (bool, اختياري) — ما إذا كان يجب تجميد المُكيّف المُفعّل (أي requires_grad=False). القيمة الافتراضية هي False.
  • layer_cls (نوع، اختياري) — فئة طبقة المُكيّف. القيمة الافتراضية هي BaseTunerLayer.

اضبط مُكيّف PEFT النشط (أو النشطين) للنموذج.

المُكيِّفات النشطة هي تلك المُكيِّفات التي تشارك في المرور الأمامي. استخدم هذه الدالة إذا كنت ترغب في التبديل بين عدة مُكيِّفات PEFT.

اضبط وضع التدريب للمُكيِّفات المحددة

peft.tuners.tuners_utils.set_training

< >

( modeladapter_names: str | Sequence[str]training: bool = True )

المعاملات

  • model (nn.Module) — النموذج الذي يجب تحديث أوضاع تدريب وحدات المحوّل (adapter) الخاصة به.
  • adapter_names (str أو Sequence[str]) — اسم المُكيّف (أو المُكيّفات) الذي يجب تحديث وضع التدريب الخاص به.
  • training (bool، اختياري) — ما إذا كان سيتم تفعيل وضع التدريب (True، الافتراضي) أو تعطيله (False).

تفعيل أو تعطيل وضع التدريب على وحدات المحوّل المحددة.

اضبط خاصية requires_grad للمُكيّفات المحددة

peft.tuners.tuners_utils.set_requires_grad

< >

( modeladapter_names: str | Sequence[str]requires_grad: bool = True )

المعاملات

  • model (nn.Module) — النموذج الذي يجب تحديث متطلبات التدرجات الخاصة بمُكيِّفاته (adapters).
  • adapter_names (str أو Sequence[str]) — اسم المُكيِّف (أو المُكيِّفات) التي يجب تمكين/تعطيل التدرجات الخاصة بها.
  • requires_grad (bool, اختياري) — ما إذا كان سيتم تفعيل (True، الافتراضي) أو تعطيل (False).

تفعيل أو تعطيل التدرجات على المُكيِّف (المُكيِّفات) المُحدَّد.

حمّل أوزان قاموس حالة PEFT في النموذج

peft.set_peft_model_state_dict

< >

( modelpeft_model_state_dictadapter_name = 'default'ignore_mismatched_sizes: bool = Falselow_cpu_mem_usage: bool = False )

المعاملات

  • model (PeftModel) — نموذج Peft.
  • peft_model_state_dict (dict) — قائمة الحالة لنموذج Peft.
  • adapter_name (str، اختياري، الافتراضي "default") — اسم المُكيّف الذي يجب تعيين حالة القاموس الخاص به.
  • ignore_mismatched_sizes (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تجاهل الأحجام غير المتطابقة في قاموس الحالة.
  • low_cpu_mem_usage (bool, optional, defaults to False) — This argument must be True if the model was loaded with adapter weights on the meta device, e.g. after calling inject_adapter_in_model with low_cpu_mem_usage=True. Otherwise, leave it as False.

اضبط حالة القاموس (state dict) لنموذج PEFT.

بما أن لديك state_dict خاصًا بـ PEFT (كما يُعاد بواسطة get_peft_model_state_dict())، قم بإدراج الأوزان في النموذج. يجب أن يكون النموذج يحتوي مسبقًا على محولات PEFT (على سبيل المثال، عبر inject_adapter_in_model()).

يُشكّل ضبط أوزان المُكيّف (adapter) أيضًا إعادة إدراج اسم المُكيّف. وقد يكون هذا الاسم مختلفًا عن الاسم الذي استُخدم في الأصل لتدريب المُكيّف.

Update on GitHub