PEFT documentation

النماذج

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

النماذج

PeftModel هي فئة النموذج الأساسية لتحديد نموذج Transformer الأساسي وإعداده لتطبيق طريقة PEFT عليه. تحتوي فئة PeftModel الأساسية على طرق لتحميل وحفظ النماذج من Hub.

PeftModel

فئة peft.PeftModel

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'autocast_adapter_dtype: bool = Truelow_cpu_mem_usage: bool = False )

المعاملات

  • model (torch.nn.Module) — النموذج الأساسي الذي سيتم تكييفه، وهو عادةً نموذج من Transformers.
  • peft_config (PeftConfig) — إعدادات نموذج Peft.
  • adapter_name (str، اختياري) — اسم المُكيّف، القيمة الافتراضية هي "default".
  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف المُعرَّفة بنوعَي float16 وbfloat16 إلى float32، إذ يُعد ذلك مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على بعض مُكيّفات PEFT. إذا تم ضبطه على False، فستبقى أنواع البيانات كما هي، مطابقةً لأنواع البيانات للطبقة المقابلة.
  • low_cpu_mem_usage (bool, optional, القيمة الافتراضية هي False) — إنشاء أوزان مُكيّف فارغة على جهاز meta. مفيد لتسريع عملية التحميل.

    > لا تستخدم low_cpu_mem_usage=True عند إنشاء مُكيّف PEFT جديد للتدريب.

النموذج الأساسي الذي يشمل طرق Peft المختلفة.

الخصائص:

  • base_model (torch.nn.Module) — نموذج التحويل الأساسي المستخدم في Peft.
  • peft_config (PeftConfig) — إعدادات نموذج Peft.
  • modules_to_save (list of str) — قائمة أسماء الوحدات الفرعية التي يجب حفظها عند حفظ النموذج.
  • prompt_encoder (PromptEncoder) — مُشفِّر المُوجِّه المستخدم مع Peft عند استخدام PromptLearningConfig.
  • prompt_tokens (torch.Tensor) — رموز المحفّز الافتراضية المستخدمة في Peft عند استخدام PromptLearningConfig.
  • transformer_backbone_name (str) — اسم العمود الفقري للترانسفورمر في النموذج الأساسي عند استخدام PromptLearningConfig.
  • word_embeddings (torch.nn.Embedding) — تمثيلات الكلمات في العمود الفقري للحوّال في النموذج الأساسي عند استخدام PromptLearningConfig.

add_adapter

< >

( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )

المعاملات

  • adapter_name (str) — اسم المُكيّف الذي سيُضاف.
  • peft_config (PeftConfig) — إعدادات المُكيّف الذي سيُضاف.
  • low_cpu_mem_usage (bool, optional, الافتراضي False) — إنشاء أوزان مُكيّف فارغة على جهاز meta. مفيد لتسريع العملية عند تحميل المُكيّفات المحفوظة. لا تستخدم هذا الخيار عند إنشاء مُكيّف PEFT جديد للتدريب.
  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف باستخدام float16 و bfloat16 إلى float32، حيث يُعد هذا مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على مُكيّفات PEFT المحددة. إذا تم ضبطه على False، فستبقى أنواع البيانات كما هي، مطابقةً لتلك الخاصة بالطبقة المقابلة.

أضِف مُكيِّفًا إلى النموذج بناءً على الإعداد المُمرَّر.

هذا المُكيّف غير مُدرَّب. لتحميل مُكيّف مُدرَّب، راجع PeftModel.load_adapter().

يجب أن يكون اسم المُكيّف الجديد فريدًا.

لا يتم تعيين المُكيّف الجديد كمُكيّف نشط تلقائيًا. استخدم PeftModel.set_adapter() لتعيين المُكيّف النشط.

create_or_update_model_card

< >

( output_dir: str )

حدّث بطاقة النموذج أو أنشئها لتضمين معلومات حول peft:

  1. يضيف وسم مكتبة peft
  2. يضيف إصدار peft
  3. يضيف معلومات النموذج الأساسي
  4. يضيف معلومات التكميم إذا تم استخدامه

delete_adapter

< >

( adapter_name: str )

المعاملات

  • adapter_name (str) — اسم المُكيّف الذي سيتم حذفه.

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

disable_adapter

< >

( )

مدير سياق يُعطّل وحدة المُكيّف. استخدم هذا لتشغيل الاستدلال على النموذج الأساسي.

مثال:

>>> with model.disable_adapter():
...     model(inputs)

forward

< >

( *args: Any**kwargs: Any )

المرور الأمامي للنموذج.

from_pretrained

< >

( model: torch.nn.Modulemodel_id: Union[str, os.PathLike]adapter_name: str = 'default'is_trainable: bool = Falseconfig: Optional[PeftConfig] = Noneautocast_adapter_dtype: bool = Trueephemeral_gpu_offload: bool = Falselow_cpu_mem_usage: bool = Falsekey_mapping: Optional[dict[str, str]] = None**kwargs: Any )

المعاملات

  • model (torch.nn.Module) — النموذج الذي سيتم تكييفه. بالنسبة لنماذج 🤗 Transformers، يجب تهيئة النموذج باستخدام from_pretrained.
  • model_id (str أو os.PathLike) — اسم إعداد PEFT الذي سيتم استخدامه. يمكن أن يكون:
    • سلسلة نصية، وهي model id لإعداد PEFT مستضاف داخل مستودع نموذج على Hugging Face Hub.
    • مسار إلى مجلد يحتوي على ملف إعدادات PEFT تم حفظه باستخدام طريقة save_pretrained (./my_peft_config_directory/).
  • adapter_name (str، اختياري، القيمة الافتراضية "default") — اسم المُكيّف الذي سيتم تحميله. هذا مفيد لتحميل عدة مُكيّفات.
  • is_trainable (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب أن يكون المُكيّف قابلًا للتدريب أم لا. إذا كانت القيمة False، فسيتم تجميد المُكيّف ولن يمكن استخدامه إلا للاستدلال.
  • config (PeftConfig، اختياري) — كائن التهيئة الذي يُستخدم بدلاً من التهيئة المحمّلة تلقائياً. هذا الكائن متنافٍ مع model_id وkwargs. يكون هذا مفيداً عندما تكون التهيئة قد حُمّلت مسبقاً قبل استدعاء from_pretrained.
  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف باستخدام float16 و bfloat16 إلى float32، حيث يُعد هذا مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على مُكيّفات PEFT المحددة. إذا تم ضبطه على False، فستبقى أنواع البيانات كما هي، مطابقةً لتلك الخاصة بالطبقة المقابلة.
  • ephemeral_gpu_offload (bool, اختياري) — ما إذا كان سيتم استخدام إزاحة GPU المؤقتة للوحدات المحمّلة جزئيًا. القيمة الافتراضية هي False. يكون هذا مفيدًا عندما تُبقي أجزاء من النموذج و/أو مكوّناته (مثل المحوِّلات) في ذاكرة المعالج المركزي حتى تصبح مطلوبة. وبدلًا من تنفيذ عمليات مكلفة على بيانات صغيرة، تُنقل البيانات إلى وحدة معالجة الرسوميات عند الطلب، ثم تُنفَّذ العملية/العمليات، وتُعاد النتائج إلى ذاكرة المعالج المركزي. يؤدي هذا إلى زيادة طفيفة ومؤقتة في استهلاك ذاكرة VRAM، لكنه يمنح تسريعًا بمقدار مرات في حالات معينة.
  • low_cpu_mem_usage (bool, optional, defaults to False) — إنشاء أوزان المُكيّف فارغة على جهاز meta قبل تحميل الأوزان المحفوظة. مفيد لتسريع العملية.
  • key_mapping (dict، اختياري، القيمة الافتراضية None) — خريطة إضافية لمفاتيح state_dict الخاصة بـ PEFT تُطبَّق قبل تحميل state_dict. عند تطبيق هذه الخريطة، يُزال البادئة الخاصة بـ PEFT "base_model.model" مسبقًا ولا يُدرج اسم المُكيِّف (مثل "default") بعد. لا تمرر هذا الحجة إلا إذا كنت تعرف ما تفعله.
  • kwargs — (optional): Additional keyword arguments passed along to the specific PEFT configuration class. This includes torch_device (str, optional): the device to load the adapter on (forwarded to load_adapter[PeftModel.load_adapter]); if None, the device will be inferred.

أنشئ نموذج PEFT من نموذج مُدرَّب مسبقًا وأوزان PEFT محمّلة.

لاحظ أن model المُمرَّر قد يتم تعديله في مكانه.

get_base_model

< >

( )

يعيد النموذج الأساسي.

get_layer_status

< >

( ) → listpeft.peft_model.TunerLayerStatus

يعيد

listpeft.peft_model.TunerLayerStatus

قائمة من كائنات dataclass، يحتوي كل منها على حالة طبقة المحوّل (adapter) المقابلة.

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

تعيد هذه الطريقة قائمة من كائنات فئة البيانات TunerLayerStatus، يحتوي كل منها على السمات التالية:

  • name (str): اسم طبقة المُكيّف، مثل model.encoder.block.0.layer.0.SelfAttention.q.
  • module_type (str): نوع طبقة المُكيّف، مثل lora.Linear.
  • enabled (bool): ما إذا كان طبقة المُكيّف مفعّلة.
  • active_adapters (list[str]): أسماء المُكيِّفات النشطة، إن وُجدت، مثل ["default"].
  • merged_adapters (list[str]): أسماء المُدمِجات المُدمَجة، إن وُجدت، مثل ["default"].
  • available_adapters (list[str]): أسماء المُكيِّفات المتاحة، مثل ["default"].
  • quantization_backend (str أو None): اسم وحدة معالجة التكميم، مثل "bnb 4bit"، أو None إذا لم يتم التكميم.

get_model_status

< >

( ) → peft.peft_model.TunerModelStatus

يعيد

peft.peft_model.TunerModelStatus

فئة بيانات تحتوي على حالة النموذج.

احصل على حالة مُعدِّلات النموذج.

تعيد هذه الطريقة كائنًا من فئة البيانات TunerModelStatus، والذي يحتوي على السمات التالية:

  • base_model_type (str): نوع النموذج الأساسي، مثل T5Model.
  • adapter_model_type (str): نوع نموذج المُكيّف، مثل LoraModel.
  • peft_types (dict[str, str]): خريطة من اسم المُكيّف إلى نوع المُكيّف، على سبيل المثال {"default": "LORA"}.
  • trainable_params (int): عدد المعاملات القابلة للتدريب في النموذج.
  • total_params (int): إجمالي عدد المعاملات في النموذج.
  • num_adapter_layers (int): عدد طبقات المحوّل في النموذج.
  • enabled (bool, Literal["irregular"]): ما إذا كانت جميع طبقات المُكيِّف مفعّلة. إذا كانت بعض الطبقات مفعّلة وبعضها الآخر غير مفعّل، فسيكون هذا "irregular". هذا يعني أن نموذجك في حالة غير متسقة وقد لا يعمل كما هو متوقع.
  • active_adapters (list[str], Literal["irregular"]): أسماء المُكيِّفات النشطة. إذا لم تكن المُكيِّفات النشطة متسقة عبر جميع الطبقات، فسيكون هذا "irregular"، مما يعني أن نموذجك في حالة غير متسقة وقد لا يعمل كما هو متوقع.
  • merged_adapters (list[str], Literal["irregular"]): أسماء المُدمِجات المُدمَجة. إذا لم تكن المُدمِجات المُدمَجة متسقة عبر جميع الطبقات، فسيكون هذا "irregular"، مما يعني أن نموذجك في حالة غير متسقة وقد لا يعمل كما هو متوقع.
  • available_adapters (list[str]): أسماء المُكيِّفات المتاحة، مثل ["default"].
  • quantization_backend (str, None, Literal["irregular"]): اسم واجهة التكميم، مثل "bnb 4bit"، أو None إذا لم يتم التكميم. إذا لم تكن الواجهة متسقة عبر جميع الطبقات، فسيكون "irregular".

get_nb_trainable_parameters

< >

( )

يعيد عدد المعاملات القابلة للتدريب وعدد جميع المعاملات في النموذج.

get_prompt

< >

( batch_size: inttask_ids: Optional[torch.Tensor] = Nonemax_cache_len: Optional[int] = None )

يعيد التلميحات الافتراضية المستخدمة في Peft. لا ينطبق إلا عند استخدام طريقة تعلّم التلميحات.

get_prompt_embedding_to_save

< >

( adapter_name: str )

يعيد تضمين الموجه (prompt embedding) الذي يجب حفظه عند حفظ النموذج. ينطبق هذا فقط عند استخدام طريقة تعلّم الموجه (prompt learning).

فحص الحالة

< >

( min_trainable_params: int = 1max_trainable_params_percent = 50 )

المعاملات

  • min_trainable_params (int، اختياري، الافتراضي=1) — الحد الأدنى المتوقع لعدد المعاملات. إذا تم العثور على عدد أقل من ذلك، يُبلَّغ عن ذلك على أنه خطأ.
  • max_trainable_params_percent (int، اختياري، الافتراضي=50) — النسبة المئوية القصوى للمعاملات التي يجب أن تكون قابلة للتدريب. إذا تم العثور على عدد أكبر من ذلك، يتم الإبلاغ عن ذلك كتحذير.

تحقق من هذا النموذج بحثًا عن حالات مُكيِّفات (adapter states) مشبوهة قبل التدريب.

تلخّص هذه الدوال واجهات برمجة التطبيقات (APIs) الخاصة بحالة النموذج والطبقات، وتشمل النتائج المتعلقة بحالة المُكيِّف (adapter) غير المتسقة، والمُكيِّفات المدمجة، وأعداد المعاملات القابلة للتدريب غير المعقولة. ولا تتحقق هذه الدوال من حلقة التدريب، أو المُحسِّن (optimizer)، أو مجموعة البيانات. سيُبلَّغ عن الحالة بأنها "irregular" إذا وُجدت عدم اتساقات في النموذج، على سبيل المثال عندما تكون بعض الطبقات مفعَّلة وبعضها معطَّلاً لنفس المُكيِّف. وهذا يعني في الغالب أن شيئاً ما لم يسر على ما يُرام، ويجب عليك التحقق من أنك لم تُغيّر بعض السمات على النموذج بشكل خاطئ عن طريق الخطأ.

إذا اكتشف الفحص شيئاً مشبوهاً، فسيتم الإبلاغ عنه في حقل "findings". قائمة "findings"" فارغة تعني أنه لم يتم رصد حالة مُكيّف مشبوهة، وليس أن تشغيل التدريب مضمون النجاح.

load_adapter

< >

( model_id: Union[str, os.PathLike]adapter_name: stris_trainable: bool = Falsetorch_device: Optional[str] = Noneautocast_adapter_dtype: bool = Trueephemeral_gpu_offload: bool = Falselow_cpu_mem_usage: bool = Falsekey_mapping: Optional[dict[str, str]] = None**kwargs: Any )

المعاملات

  • model_id (str أو os.PathLike) — اسم إعداد PEFT الذي سيتم استخدامه. يمكن أن يكون:
    • سلسلة نصية، وهي model id لإعداد PEFT مستضاف داخل مستودع نموذج على Hugging Face Hub.
    • مسار إلى مجلد يحتوي على ملف إعدادات PEFT تم حفظه باستخدام طريقة save_pretrained (./my_peft_config_directory/).
  • adapter_name (str) — اسم المُكيّف الذي سيُضاف.
  • is_trainable (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب أن يكون المُكيّف قابلًا للتدريب أم لا. إذا كانت القيمة False، فسيتم تجميد المُكيّف ولن يمكن استخدامه إلا للاستدلال.
  • torch_device (str، اختياري، القيمة الافتراضية هي None) — الجهاز الذي سيتم تحميل المُكيّف عليه. إذا كانت None، فسيتم استنتاج الجهاز.
  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف باستخدام float16 و bfloat16 إلى float32، حيث يُعد هذا مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على مُكيّفات PEFT المحددة. إذا تم ضبطه على False، فستبقى أنواع البيانات كما هي، مطابقةً لتلك الخاصة بالطبقة المقابلة.
  • ephemeral_gpu_offload (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم استخدام إزاحة GPU المؤقتة للوحدات المحمّلة جزئيًا. القيمة الافتراضية هي False.
  • low_cpu_mem_usage (bool, optional, defaults to False) — إنشاء أوزان المُكيّف فارغة على جهاز meta قبل تحميل الأوزان المحفوظة. مفيد لتسريع العملية.
  • key_mapping (dict، اختياري، القيمة الافتراضية None) — خريطة إضافية لمفاتيح state_dict الخاصة بـ PEFT تُطبَّق قبل تحميل state_dict. عند تطبيق هذه الخريطة، يُزال البادئة الخاصة بـ PEFT "base_model.model" مسبقًا ولا يُدرج اسم المُكيِّف (مثل "default") بعد. لا تمرر هذا الحجة إلا إذا كنت تعرف ما تفعله.
  • kwargs — (optional): Additional arguments to modify the way the adapter is loaded, e.g. the token for Hugging Face Hub.

حمّل مُكيّفًا مُدرَّبًا في النموذج.

يجب أن يكون اسم المُكيّف الجديد فريدًا.

لا يتم تعيين المُكيّف الجديد كمُكيّف نشط تلقائيًا. استخدم PeftModel.set_adapter() لتعيين المُكيّف النشط.

prepare_model_for_gradient_checkpointing

< >

( model: PreTrainedModel )

يُعدّ النموذج لفحص التدرّج عند الحاجة

ملاحظة: في إصدارات Transformers الأحدث، يُطلق على هذا المصطلح اسم ‘activation checkpointing’.

print_healthcheck

< >

( sink = <built-in function print>min_trainable_params: int = 1max_trainable_params_percent = 50**kwargs )

المعاملات

  • sink (callable، اختياري، الافتراضي=print) — الدالة التي تُستدعى لطباعة المخرجات. افتراضيًا، هي الدالة المدمجة print، لكن يمكن أن تكون شيئًا آخر مثل logger.info.
  • min_trainable_params (int، اختياري، الافتراضي=1) — الحد الأدنى المتوقع لعدد المعاملات. إذا تم العثور على عدد أقل من ذلك، يُبلَّغ عن ذلك على أنه خطأ.
  • max_trainable_params_percent (int، اختياري، الافتراضي=50) — النسبة المئوية القصوى للمعاملات التي يجب أن تكون قابلة للتدريب. إذا تم العثور على عدد أكبر من ذلك، يتم الإبلاغ عن ذلك كتحذير.
  • kwargs — تُمرَّر حُجج الكلمات المفتاحية الإضافية إلى format_healthcheck.

اطبع تقرير فحص صحة مضغوطًا وقابلًا للقراءة من قِبل البشر.

تلخّص المخرجات حالة نموذج PEFT الخاص بك وتشمل نتائج تتعلق بحالة المُكيّفات غير المتسقة، والمُكيّفات المدمجة، وأعداد المعاملات القابلة للتدريب غير المعقولة. ولا يتحقق هذا الإجراء من حلقة التدريب أو المُحسِّن أو مجموعة البيانات. سيُبلَّغ عن الحالة على أنها "irregular" إذا وُجدت عدم اتساقات في النموذج، على سبيل المثال عندما تكون بعض الطبقات مفعّلة وبعضها معطّلًا لنفس المُكيّف. وهذا يعني في الغالب أن شيئًا ما حدث بشكل خاطئ، ويجب عليك التحقق من أنك لم تُغيّر بعض السمات على النموذج بشكل غير صحيح عن طريق الخطأ.

إذا تم اكتشاف مشكلات، فستظهر في القسم الأخير تحت “findings”. وإذا لم يتم اكتشاف أي مشكلات، فلا يعني ذلك أن تشغيل التدريب مضمون النجاح.

print_trainable_parameters

< >

( )

يطبع عدد المعاملات القابلة للتدريب في النموذج.

ملاحظة: يستخدم print_trainable_parameters() الدالة get_nb_trainable_parameters() وهي مختلفة عن num_parameters(only_trainable=True) من huggingface/transformers. تُرجع get_nb_trainable_parameters() (المعاملات القابلة للتدريب، جميع المعاملات) لنموذج Peft الذي يتضمن نموذج transformer الأساسي المُعدَّل. ففي تقنيات مثل LoRA، يتم تعديل نموذج transformer الأساسي في مكانه باستخدام وحدات LoRA. ومع ذلك، في حالة ضبط الموجه (prompt tuning)، يبقى نموذج transformer الأساسي دون تعديل. تُرجع num_parameters(only_trainable=True) عدد المعاملات القابلة للتدريب في نموذج transformer الأساسي، وقد يختلف هذا العدد.

save_pretrained

< >

( save_directory: strsafe_serialization: bool = Trueselected_adapters: Optional[list[str]] = Nonesave_embedding_layers: Union[str, bool] = 'auto'is_main_process: bool = Truepath_initial_model_for_weight_conversion: Optional[str] = None**kwargs: Any )

المعاملات

  • save_directory (str) — المجلد الذي سيتم حفظ ملفات النموذج المُكيّف (adapter) والإعدادات فيه (سيتم إنشاؤه إذا لم يكن موجودًا).
  • safe_serialization (bool، اختياري) — ما إذا كان سيتم حفظ ملفات المحوّل (adapter) بتنسيق safetensors، والافتراضي هو True.
  • selected_adapters (List[str]، اختياري) — قائمة بالمُكيِّفات التي سيتم حفظها. إذا كانت None، فسيتم افتراض جميع المُكيِّفات.
  • save_embedding_layers (Union[bool, str], اختياري، القيمة الافتراضية "auto") — إذا كانت True، يتم حفظ طبقات التضمين بالإضافة إلى أوزان المحوّل. إذا كانت auto، يتم فحص طبقات التضمين الشائعة peft.utils.other.EMBEDDING_LAYER_NAMES في target_modules الخاص بالإعدادات عند توفرها، وإعداد العلم المنطقي تلقائيًا. يعمل هذا فقط مع نماذج 🤗 transformers.
  • is_main_process (bool، اختياري) — ما إذا كان العملية التي تستدعي هذا هي العملية الرئيسية أم لا. سيكون الافتراضي True. لن يتم حفظ نقطة التفتيش إذا لم تكن على العملية الرئيسية، وهو أمر مهم لإعدادات الأجهزة المتعددة (مثل DDP).
  • path_initial_model_for_weight_conversion (str، اختياري) — المسار إلى المُكيّف المُهيّأ، والذي يُحصل عليه بعد تهيئة النموذج باستخدام PiSSA/CorDA/OLoRA وقبل إجراء أي تدريب. عندما لا يكون path_initial_model_for_weight_conversion مساوياً لـ None، يتم حساب الفرق في المُكيّف قبل وبعد الضبط الدقيق. يمكن تمثيل هذا الفرق على أنه معاملات مُكيّف LoRA قياسي. على عكس PiSSA وما شابه، لا يتطلب استخدام هذا المُكيّف المُحوّل إجراء تغييرات على النموذج الأساسي، مما يتيح بيسر استخدام عدة مُكيّفات PiSSA/CorDA/OLoRA مع مُكيّفات LoRA، وتفعيل أو تعطيل أي من المُكيّفات. يُرجى ملاحظة أن هذا التحويل غير مدعوم إذا تم استخدام rslora بالاقتران مع rank_pattern أو alpha_pattern. راجع peft.tuners.lora.LoraModel.subtract_mutated_init() لمزيد من المعلومات.
  • kwargs (معلمات إضافية بالكلمة المفتاحية، اختيارية) — معلمات إضافية بالكلمة المفتاحية تُمرَّر إلى طريقة push_to_hub.

تُحفظ بواسطة هذه الدالة نموذج المُكيّف وملفات إعداداته في مجلد، بحيث يمكن إعادة تحميله باستخدام طريقة الفئة PeftModel.from_pretrained()، كما يمكن استخدامه بواسطة الطريقة PeftModel.push_to_hub().

set_adapter

< >

( adapter_name: strinference_mode: bool = False )

المعاملات

  • adapter_name (str) — اسم المُكيّف الذي سيُعيَّن كالمُكيّف النشط. يجب تحميل المُكيّف أولاً.
  • inference_mode (bool, اختياري) — ما إذا كان يجب تجميد المُكيّف المُفعّل (أي requires_grad=False). القيمة الافتراضية هي False.

يحدد المُكيّف النشط.

لا يمكن تفعيل مُكيّف واحد فقط في كل مرة، لأنّ جميع طرق PEFT لا تدعم وجود عدة مُكيّفات نشطة في آنٍ واحد. لتفعيل عدة مُكيّفات في الطرق المدعومة، استخدم model.base_model.set_adapter(adapter_names).

بالإضافة إلى ذلك، ستقوم هذه الدالة بجعل المُكيّف المحدد قابلًا للتدريب (أي requires_grad=True) ما لم يكن inference_mode بقيمة True.

set_requires_grad

< >

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

المعاملات

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

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

ملاحظة: غير مدعوم لطرق تعلم الموجهات مثل ضبط الموجهات.

supports_lora_conversion

< >

( adapter_name: str = 'default' )

ما إذا كان من الممكن تحويل مُكيّف هذا النموذج إلى LoRA.

عادةً، يعمل هذا إذا كانت طريقة PEFT إضافية، أي W’ = W_base + delta_weight.

PeftModelForSequenceClassification

نموذج PeftModel لمهام تصنيف التسلسلات.

فئة peft.PeftModelForSequenceClassification

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

المعاملات

  • model (PreTrainedModel) — نموذج التحويل الأساسي.
  • peft_config (PeftConfig) — إعدادات Peft.
  • adapter_name (str، اختياري) — اسم المُكيّف، القيمة الافتراضية هي "default".
  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف المُعرَّفة بنوعَي float16 وbfloat16 إلى float32، إذ يُعد ذلك مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على بعض مُكيّفات PEFT. إذا تم ضبطه على False، فستبقى أنواع البيانات كما هي، مطابقةً لأنواع البيانات للطبقة المقابلة.

نموذج Peft لمهام تصنيف التسلسلات.

الخصائص:

  • config (PretrainedConfig) — كائن التهيئة للنموذج الأساسي.
  • cls_layer_name (str) — اسم طبقة التصنيف.

مثال:

>>> from transformers import AutoModelForSequenceClassification
>>> from peft import PeftModelForSequenceClassification, get_peft_config

>>> config = {
...     "peft_type": "PREFIX_TUNING",
...     "task_type": "SEQ_CLS",
...     "inference_mode": False,
...     "num_virtual_tokens": 20,
...     "token_dim": 768,
...     "num_transformer_submodules": 1,
...     "num_attention_heads": 12,
...     "num_layers": 12,
...     "encoder_hidden_size": 768,
...     "prefix_projection": False,
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForSequenceClassification(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 370178 || all params: 108680450 || trainable%: 0.3406113979101117

PeftModelForTokenClassification

نموذج PeftModel لمهام تصنيف الرموز.

فئة peft.PeftModelForTokenClassification

< >

( model: torch.nn.Modulepeft_config: PeftConfig = Noneadapter_name: str = 'default'**kwargs )

المعاملات

  • model (PreTrainedModel) — نموذج التحويل الأساسي.
  • peft_config (PeftConfig) — إعدادات Peft.
  • adapter_name (str، اختياري) — اسم المُكيّف، القيمة الافتراضية هي "default".
  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف المُعرَّفة بنوعَي float16 وbfloat16 إلى float32، إذ يُعد ذلك مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على بعض مُكيّفات PEFT. إذا تم ضبطه على False، فستبقى أنواع البيانات كما هي، مطابقةً لأنواع البيانات للطبقة المقابلة.

نموذج Peft لمهام تصنيف الرموز.

الخصائص:

  • config (PretrainedConfig) — كائن التهيئة للنموذج الأساسي.
  • cls_layer_name (str) — اسم طبقة التصنيف.

مثال:

>>> from transformers import AutoModelForTokenClassification
>>> from peft import PeftModelForTokenClassification, get_peft_config

>>> config = {
...     "peft_type": "PREFIX_TUNING",
...     "task_type": "TOKEN_CLS",
...     "inference_mode": False,
...     "num_virtual_tokens": 20,
...     "token_dim": 768,
...     "num_transformer_submodules": 1,
...     "num_attention_heads": 12,
...     "num_layers": 12,
...     "encoder_hidden_size": 768,
...     "prefix_projection": False,
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForTokenClassification.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForTokenClassification(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 370178 || all params: 108680450 || trainable%: 0.3406113979101117

add_adapter

< >

( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )

المعاملات

  • adapter_name (str) — اسم المُكيّف الذي سيُضاف.
  • peft_config (PeftConfig) — إعدادات المُكيّف الذي سيُضاف.
  • low_cpu_mem_usage (bool, optional, الافتراضي False) — إنشاء أوزان مُكيّف فارغة على جهاز meta. مفيد لتسريع العملية عند تحميل المُكيّفات المحفوظة. لا تستخدم هذا الخيار عند إنشاء مُكيّف PEFT جديد للتدريب.
  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف باستخدام float16 و bfloat16 إلى float32، حيث يُعد هذا مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على مُكيّفات PEFT المحددة. إذا تم ضبطه على False، فستبقى أنواع البيانات كما هي، مطابقةً لتلك الخاصة بالطبقة المقابلة.

أضِف مُكيِّفًا إلى النموذج بناءً على الإعداد المُمرَّر.

هذا المُكيّف غير مُدرَّب. لتحميل مُكيّف مُدرَّب، راجع PeftModel.load_adapter().

يجب أن يكون اسم المُكيّف الجديد فريدًا.

لا يتم تعيين المُكيّف الجديد كمُكيّف نشط تلقائيًا. استخدم PeftModel.set_adapter() لتعيين المُكيّف النشط.

PeftModelForCausalLM

نموذج PeftModel لنمذجة اللغة السببية.

فئة peft.PeftModelForCausalLM

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

المعاملات

  • model (PreTrainedModel) — نموذج التحويل الأساسي.
  • peft_config (PeftConfig) — إعدادات Peft.
  • adapter_name (str، اختياري) — اسم المُكيّف، القيمة الافتراضية هي "default".
  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف المُعرَّفة بنوعَي float16 وbfloat16 إلى float32، إذ يُعد ذلك مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على بعض مُكيّفات PEFT. إذا تم ضبطه على False، فستبقى أنواع البيانات كما هي، مطابقةً لأنواع البيانات للطبقة المقابلة.

نموذج Peft لنمذجة اللغة السببية.

مثال:

>>> from transformers import AutoModelForCausalLM
>>> from peft import PeftModelForCausalLM, get_peft_config

>>> config = {
...     "peft_type": "PREFIX_TUNING",
...     "task_type": "CAUSAL_LM",
...     "inference_mode": False,
...     "num_virtual_tokens": 20,
...     "token_dim": 1280,
...     "num_transformer_submodules": 1,
...     "num_attention_heads": 20,
...     "num_layers": 36,
...     "encoder_hidden_size": 1280,
...     "prefix_projection": False,
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForCausalLM.from_pretrained("gpt2-large")
>>> peft_model = PeftModelForCausalLM(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 1843200 || all params: 775873280 || trainable%: 0.23756456724479544

PeftModelForSeq2SeqLM

نموذج PeftModel لنمذجة اللغة من تسلسل إلى تسلسل.

ملاحظة: سيؤدي هذا إلى توليد رموز مدخلات المُفكِّك تلقائيًا عن طريق إزاحة رموز المدخلات خطوة إلى اليمين باستخدام shift_tokens_right() إذا قمت بتوفير رموز المدخلات دون توفير رموز مدخلات المُفكِّك صراحةً.

فئة peft.PeftModelForSeq2SeqLM

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

المعاملات

  • model (PreTrainedModel) — نموذج التحويل الأساسي.
  • peft_config (PeftConfig) — إعدادات Peft.
  • adapter_name (str، اختياري) — اسم المُكيّف، القيمة الافتراضية هي "default".
  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف المُعرَّفة بنوعَي float16 وbfloat16 إلى float32، إذ يُعد ذلك مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على بعض مُكيّفات PEFT. إذا تم ضبطه على False، فستبقى أنواع البيانات كما هي، مطابقةً لأنواع البيانات للطبقة المقابلة.

نموذج Peft لنمذجة اللغة من تسلسل إلى تسلسل.

مثال:

>>> from transformers import AutoModelForSeq2SeqLM
>>> from peft import PeftModelForSeq2SeqLM, get_peft_config

>>> config = {
...     "peft_type": "LORA",
...     "task_type": "SEQ_2_SEQ_LM",
...     "inference_mode": False,
...     "r": 8,
...     "target_modules": ["q", "v"],
...     "lora_alpha": 32,
...     "lora_dropout": 0.1,
...     "fan_in_fan_out": False,
...     "bias": "none",
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForSeq2SeqLM.from_pretrained("t5-base")
>>> peft_model = PeftModelForSeq2SeqLM(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 884736 || all params: 223843584 || trainable%: 0.3952474242013566

PeftModelForQuestionAnswering

نموذج PeftModel للإجابة على الأسئلة.

فئة peft.PeftModelForQuestionAnswering

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

المعاملات

  • model (PreTrainedModel) — نموذج التحويل الأساسي.
  • peft_config (PeftConfig) — إعدادات Peft.
  • adapter_name (str، اختياري) — اسم المُكيّف، القيمة الافتراضية هي "default".
  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف المُعرَّفة بنوعَي float16 وbfloat16 إلى float32، إذ يُعد ذلك مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على بعض مُكيّفات PEFT. إذا تم ضبطه على False، فستبقى أنواع البيانات كما هي، مطابقةً لأنواع البيانات للطبقة المقابلة.

نموذج Peft للإجابة الاستخراجية على الأسئلة.

الخصائص:

  • config (PretrainedConfig) — كائن التهيئة للنموذج الأساسي.
  • cls_layer_name (str) — اسم طبقة التصنيف.

مثال:

>>> from transformers import AutoModelForQuestionAnswering
>>> from peft import PeftModelForQuestionAnswering, get_peft_config

>>> config = {
...     "peft_type": "LORA",
...     "task_type": "QUESTION_ANS",
...     "inference_mode": False,
...     "r": 16,
...     "target_modules": ["query", "value"],
...     "lora_alpha": 32,
...     "lora_dropout": 0.05,
...     "fan_in_fan_out": False,
...     "bias": "none",
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForQuestionAnswering.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForQuestionAnswering(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 592900 || all params: 108312580 || trainable%: 0.5473971721475013

add_adapter

< >

( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )

المعاملات

  • adapter_name (str) — اسم المُكيّف الذي سيُضاف.
  • peft_config (PeftConfig) — إعدادات المُكيّف الذي سيُضاف.
  • low_cpu_mem_usage (bool, optional, الافتراضي False) — إنشاء أوزان مُكيّف فارغة على جهاز meta. مفيد لتسريع العملية عند تحميل المُكيّفات المحفوظة. لا تستخدم هذا الخيار عند إنشاء مُكيّف PEFT جديد للتدريب.
  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف باستخدام float16 و bfloat16 إلى float32، حيث يُعد هذا مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على مُكيّفات PEFT المحددة. إذا تم ضبطه على False، فستبقى أنواع البيانات كما هي، مطابقةً لتلك الخاصة بالطبقة المقابلة.

أضِف مُكيِّفًا إلى النموذج بناءً على الإعداد المُمرَّر.

هذا المُكيّف غير مُدرَّب. لتحميل مُكيّف مُدرَّب، راجع PeftModel.load_adapter().

يجب أن يكون اسم المُكيّف الجديد فريدًا.

لا يتم تعيين المُكيّف الجديد كمُكيّف نشط تلقائيًا. استخدم PeftModel.set_adapter() لتعيين المُكيّف النشط.

PeftModelForFeatureExtraction

نموذج PeftModel لاستخراج الميزات/التضمينات من نماذج التحويل.

فئة peft.PeftModelForFeatureExtraction

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

المعاملات

  • model (PreTrainedModel) — نموذج التحويل الأساسي.
  • peft_config (PeftConfig) — إعدادات Peft.
  • adapter_name (str، اختياري) — اسم المُكيّف، القيمة الافتراضية هي "default".
  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف المُعرَّفة بنوعَي float16 وbfloat16 إلى float32، إذ يُعد ذلك مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على بعض مُكيّفات PEFT. إذا تم ضبطه على False، فستبقى أنواع البيانات كما هي، مطابقةً لأنواع البيانات للطبقة المقابلة.

نموذج Peft لاستخراج الميزات/التضمينات من نماذج التحويل

الخصائص:

  • config (PretrainedConfig) — كائن التهيئة للنموذج الأساسي.

مثال:

>>> from transformers import AutoModel
>>> from peft import PeftModelForFeatureExtraction, get_peft_config

>>> config = {
...     "peft_type": "LORA",
...     "task_type": "FEATURE_EXTRACTION",
...     "inference_mode": False,
...     "r": 16,
...     "target_modules": ["query", "value"],
...     "lora_alpha": 32,
...     "lora_dropout": 0.05,
...     "fan_in_fan_out": False,
...     "bias": "none",
... }
>>> peft_config = get_peft_config(config)
>>> model = AutoModel.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForFeatureExtraction(model, peft_config)
>>> peft_model.print_trainable_parameters()

PeftMixedModel

نموذج PeftModel لخلط أنواع مختلفة من المكيّفات (مثل LoRA وLoHa).

فئة peft.PeftMixedModel

< >

( model: nn.Modulepeft_config: PeftConfigadapter_name: str = 'default' )

المعاملات

  • model (torch.nn.Module) — النموذج الذي سيتم ضبطه.
  • config (PeftConfig) — إعدادات النموذج المراد ضبطه. يجب أن يكون نوع المُكيّف متوافقًا.
  • adapter_name (str، optional، الافتراضي "default") — اسم المكيّف الأول.
  • low_cpu_mem_usage (bool, optional, defaults to False) — إنشاء أوزان مُكيّف فارغة على جهاز meta. مفيد لتسريع عملية التحميل.

PeftMixedModel لتحميل مزيج من أنواع مختلفة من المحوِّلات للاستدلال.

لا تدعم هذه الفئة التحميل/الحفظ، ولا ينبغي عادةً تهيئتها مباشرة. بدلاً من ذلك، استخدم get_peft_model مع الحجة mixed=True.

> اقرأ دليل أنواع المحوِّلات المختلطة لمعرفة المزيد حول استخدام أنواع مختلفة من المحوِّلات.

مثال:

>>> base_model = ...  # load the base model, e.g. from transformers
>>> peft_model = PeftMixedModel.from_pretrained(base_model, path_to_adapter1, "adapter1").eval()
>>> peft_model.load_adapter(path_to_adapter2, "adapter2")
>>> peft_model.set_adapter(["adapter1", "adapter2"])  # activate both adapters
>>> peft_model(data)  # forward pass using both adapters

add_adapter

< >

( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )

المعاملات

  • adapter_name (str) — اسم المُكيّف الذي سيُضاف.
  • peft_config (PeftConfig) — إعدادات المُكيّف الذي سيُضاف.
  • low_cpu_mem_usage (bool, optional, القيمة الافتراضية هي False) — إنشاء أوزان مُكيّف فارغة على جهاز meta. مفيد لتسريع العملية عند تحميل المُكيّفات المحفوظة.

    > لا تستخدم low_cpu_mem_usage=True عند إنشاء مُكيّف PEFT جديد للتدريب (التدريب غير مُختبَر > وغير مُستحسَن بشكل عام لنموذج PeftMixedModel).

  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف باستخدام float16 و bfloat16 إلى float32، حيث يُعد هذا مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على مُكيّفات PEFT المحددة. إذا تم ضبطه على False، فستبقى أنواع البيانات كما هي، مطابقةً لتلك الخاصة بالطبقة المقابلة.

أضِف مُكيِّفًا إلى النموذج بناءً على الإعداد المُمرَّر.

هذا المُكيّف غير مُدرَّب. لتحميل مُكيّف مُدرَّب، راجع PeftModel.load_adapter().

يجب أن يكون اسم المُكيّف الجديد فريدًا.

لا يتم تعيين المُكيّف الجديد كمُكيّف نشط تلقائيًا. استخدم PeftModel.set_adapter() لتعيين المُكيّف النشط.

disable_adapter

< >

( )

يعطّل وحدة المحوّل.

forward

< >

( *args: Any**kwargs: Any )

المرور الأمامي للنموذج.

from_pretrained

< >

( model: nn.Modulemodel_id: str | os.PathLikeadapter_name: str = 'default'is_trainable: bool = Falseconfig: Optional[PeftConfig] = None**kwargs: Any )

المعاملات

  • model (nn.Module) — النموذج الذي سيتم تكييفه.
  • model_id (str أو os.PathLike) — اسم إعداد PEFT الذي سيتم استخدامه. يمكن أن يكون:
    • سلسلة نصية، وهي model id لإعداد PEFT مستضاف داخل مستودع نموذج على Hugging Face Hub.
    • مسار إلى مجلد يحتوي على ملف إعدادات PEFT تم حفظه باستخدام طريقة save_pretrained (./my_peft_config_directory/).
  • adapter_name (str، اختياري، القيمة الافتراضية "default") — اسم المُكيّف الذي سيتم تحميله. هذا مفيد لتحميل عدة مُكيّفات.
  • is_trainable (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب أن يكون المُكيّف قابلًا للتدريب أم لا. إذا كانت القيمة False، فسيتم تجميد المُكيّف واستخدامه للاستدلال
  • config (PeftConfig، اختياري) — كائن التهيئة الذي يُستخدم بدلاً من التهيئة المحمّلة تلقائياً. هذا الكائن متنافٍ مع model_id وkwargs. يكون هذا مفيداً عندما تكون التهيئة قد حُمّلت مسبقاً قبل استدعاء from_pretrained.
  • low_cpu_mem_usage (bool, optional, defaults to False) — إنشاء أوزان المُكيّف فارغة على جهاز meta قبل تحميل الأوزان المحفوظة. مفيد لتسريع العملية.
  • kwargs — (optional): معلمات إضافية تُمَرَّر إلى فئة تكوين PEFT المحددة.

أنشئ نموذج PEFT مختلطًا من نموذج مُدرَّب مسبقًا وأوزان PEFT محمّلة.

لاحظ أن model المُمرَّر قد يتم تعديله في مكانه.

generate

< >

( *args: Any**kwargs: Any )

توليد المخرجات.

get_nb_trainable_parameters

< >

( )

يعيد عدد المعاملات القابلة للتدريب وعدد جميع المعاملات في النموذج.

load_adapter

< >

( model_id: stradapter_name: str*args: Any**kwargs: Any )

المعاملات

  • adapter_name (str) — اسم المُكيّف الذي سيُضاف.
  • peft_config (PeftConfig) — إعدادات المُكيّف الذي سيُضاف.
  • is_trainable (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب أن يكون المُكيّف قابلًا للتدريب أم لا. إذا كانت القيمة False، فسيتم تجميد المُكيّف ولن يمكن استخدامه إلا للاستدلال.
  • torch_device (str، اختياري، القيمة الافتراضية هي None) — الجهاز الذي سيتم تحميل المُكيّف عليه. إذا كانت None، فسيتم استنتاج الجهاز.
  • autocast_adapter_dtype (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلا إلى تحويل أوزان المُكيّف باستخدام float16 و bfloat16 إلى float32، حيث يُعد هذا مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على مُكيّفات PEFT المحددة.
  • ephemeral_gpu_offload (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم استخدام إزاحة GPU المؤقتة للوحدات المحمّلة جزئيًا. القيمة الافتراضية هي False.
  • low_cpu_mem_usage (bool, optional, defaults to False) — إنشاء أوزان المُكيّف فارغة على جهاز meta قبل تحميل الأوزان المحفوظة. مفيد لتسريع العملية.
  • kwargs — (optional): Additional arguments to modify the way the adapter is loaded, e.g. the token for Hugging Face Hub.

حمّل مُكيّفًا مُدرَّبًا في النموذج.

يجب أن يكون اسم المُكيّف الجديد فريدًا.

لا يتم تعيين المُكيّف الجديد كمُكيّف نشط تلقائيًا. استخدم PeftModel.set_adapter() لتعيين المُكيّف النشط.

merge_and_unload

< >

( *args: Any**kwargs: Any )

المعاملات

  • progressbar (bool) — ما إذا كان يجب عرض شريط تقدم يُظهر عملية التحميل والدمج
  • safe_merge (bool) — ما إذا كان سيتم تفعيل فحص الدمج الآمن للتحقق من وجود أي قيم Nan محتملة في أوزان المحوّل
  • adapter_names (List[str]، اختياري) — قائمة أسماء المحوِّلات (adapters) التي يجب دمجها. إذا كانت القيمة None، فسيتم دمج جميع المحوِّلات النشطة. القيمة الافتراضية هي None.

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

print_trainable_parameters

< >

( )

يطبع عدد المعاملات القابلة للتدريب في النموذج.

ملاحظة: يستخدم print_trainable_parameters() الدالة get_nb_trainable_parameters() وهي مختلفة عن num_parameters(only_trainable=True) من huggingface/transformers. تُرجع get_nb_trainable_parameters() (المعاملات القابلة للتدريب، جميع المعاملات) لنموذج Peft الذي يتضمن نموذج transformer الأساسي المُعدَّل. ففي تقنيات مثل LoRA، يتم تعديل نموذج transformer الأساسي في مكانه باستخدام وحدات LoRA. ومع ذلك، في حالة ضبط الموجه (prompt tuning)، يبقى نموذج transformer الأساسي دون تعديل. تُرجع num_parameters(only_trainable=True) عدد المعاملات القابلة للتدريب في نموذج transformer الأساسي، وقد يختلف هذا العدد.

set_adapter

< >

( adapter_name: Union[str, list[str]]inference_mode: bool = False )

المعاملات

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

يحدد المُكيِّف (المُكيِّفات) النشط (النشطة) للنموذج.

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

بالإضافة إلى ذلك، ستقوم هذه الدالة بجعل المُكيّف المحدد قابلًا للتدريب (أي requires_grad=True) ما لم يكن inference_mode بقيمة True.

تفريغ

< >

( *args: Any**kwargs: Any )

يحصل على النموذج الأساسي عن طريق إزالة جميع وحدات المحوّل دون دمجها. يعيد هذا النموذج الأساسي الأصلي.

أدوات

peft.cast_mixed_precision_params

< >

( model: torch.nn.Moduledtype: torch.dtype )

المعاملات

  • model (torch.nn.Module) — النموذج الذي سيتم تحويل المعلمات غير القابلة للتدريب فيه.
  • dtype (torch.dtype) — نوع البيانات الذي سيتم تحويل المعاملات غير القابلة للتدريب إليه. يمكن أن يكون dtype هو torch.float16 أو

قم بتحويل جميع معاملات النموذج غير القابلة للتدريب إلى dtype المحدد. يمكن أن يكون dtype إما torch.float16 أو torch.bfloat16 وفقاً لتدريب الدقة المختلطة الذي تقوم به. يتم تحويل المعاملات القابلة للتدريب إلى دقة كاملة. يهدف هذا إلى تقليل استخدام ذاكرة وحدة معالجة الرسوميات (GPU) عند استخدام طرق PEFT من خلال استخدام dtype بدقة نصفية للمعاملات غير القابلة للتدريب. الحفاظ على المعاملات القابلة للتدريب بدقة كاملة يحافظ على استقرار التدريب عند استخدام تدريب الدقة المختلطة التلقائي.

torch.bfloat16 وفقًا لتدريب الدقة المختلطة الذي تقوم به.

peft.get_peft_model

< >

( model: nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'mixed: bool = Falseautocast_adapter_dtype: bool = Truerevision: Optional[str] = Nonelow_cpu_mem_usage: bool = False )

المعاملات

  • model (torch.nn.Module) — النموذج الذي سيتم تغليفه. عادةً ما يكون هذا نموذجًا من Transformers، لكن أي nn.Module يمكن أن يعمل، مع ملاحظة أن الميزات الخاصة بالمهام (peft_config.task_type) تتطلب أن يتبع النموذج معايير Transformers.
  • peft_config (PeftConfig) — كائن الإعدادات الذي يحتوي على معاملات نموذج Peft.
  • adapter_name (str، optional، افتراضيًا "default") — اسم المُكيّف الذي سيتم حقنه، وإذا لم يُقدَّم، يُستخدم اسم المُكيّف الافتراضي (“default”).
  • mixed (bool، optional، الافتراضي False) — ما إذا كان سيتم السماح بخلط أنواع مختلفة (متوافقة) من المحوِّلات.
  • autocast_adapter_dtype (bool, اختياري) — ما إذا كان يجب تحويل نوع بيانات المُكيّف تلقائيًا. القيمة الافتراضية هي True. حاليًا، لن يؤدي هذا إلى تحويل أوزان المُكيّف باستخدام float16 أو bfloat16 إلى float32 فقط، حيث يُعد ذلك مطلوبًا عادةً للتدريب المستقر، ولن يؤثر إلا على مُكيّفات PEFT المحددة.
  • revision (str، optional، القيمة الافتراضية main) — إصدار النموذج الأساسي. إذا لم يتم تعيين هذا، فسيحمّل نموذج peft المحفوظ إصدار main للنموذج الأساسي
  • low_cpu_mem_usage (bool, optional, الافتراضي False) — إنشاء أوزان مُكيّف فارغة على جهاز meta. مفيد لتسريع عملية التحميل. اترك هذا الإعداد كـ False إذا كنت تنوي تدريب النموذج، ما لم يتم استبدال أوزان المُكيّف بأوزان مختلفة قبل بدء التدريب.

يعيد كائن نموذج 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.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.prepare_model_for_kbit_training

< >

( modeluse_gradient_checkpointing = Trueactivation_checkpointing_kwargs = Noneauto_clear_cache = Truegradient_checkpointing_kwargs = None )

المعاملات

  • model (transformers.PreTrainedModel) — النموذج المحمّل من transformers
  • use_gradient_checkpointing (bool، اختياري، القيمة الافتراضية True) — إذا كانت القيمة True، فسيتم استخدام gradient checkpointing لتوفير الذاكرة على حساب إبطاء عملية الرجوع (backward pass).
  • activation_checkpointing_kwargs (dict، اختياري، القيمة الافتراضية None) — حجج الكلمات المفتاحية التي يجب تمريرها إلى دالة نقطة التفتيش للتفعيل، يُرجى الرجوع إلى توثيق torch.utils.checkpoint.checkpoint لمزيد من التفاصيل حول الحجج التي يمكنك تمريرها إلى تلك الطريقة. يرجى ملاحظة أن هذا متاح فقط في إصدارات transformers (> 4.34.1).
  • auto_clear_cache (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم تفريغ ذاكرة التخزين المؤقت للمسرّع بعد ترقية المعاملات إلى fp32. يؤدي هذا إلى تحرير الذاكرة التي تحتفظ بها أداة تخصيص ذاكرة التخزين المؤقت، وهو أمر مفيد بشكل خاص على الأجهزة التي تشارك الذاكرة بين المضيف والمسرّع. اضبط القيمة على False لتخطي هذه الخطوة.
  • gradient_checkpointing_kwargs (dict، اختياري، القيمة الافتراضية None) — حجج الكلمات المفتاحية التي تُمرَّر إلى دالة نقطة التفتيش للتفعيل. يوجد هذا الحرج فقط من أجل التوافق مع الإصدارات السابقة وهو غير مستحسن، يُرجى استخدام activation_checkpointing_kwargs بدلاً منه. سيُزال في PEFT v1.2.

لاحظ أن هذه الطريقة تعمل فقط مع نماذج transformers.

تغلّف هذه الطريقة بروتوكول التحضير الكامل للنموذج قبل بدء التدريب. ويشمل ذلك: 1- تحويل طبقة layernorm إلى fp32 2- جعل طبقة التضمين الإخراجي تتطلب التدرجات 3- إضافة الترقية لطبقة رأس lm إلى fp32 4- تجميد طبقات النموذج الأساسي للتأكد من عدم تحديثها أثناء التدريب

peft.get_layer_status

< >

( model: torch.nn.Module ) → listpeft.peft_model.TunerLayerStatus

المعاملات

  • model ([Union[~PeftModel, ~transformers.PreTrainedModel, nn.Module]]) — النموذج الذي سيتم الحصول على حالة طبقة المُكيّف (adapter) منه.

يعيد

listpeft.peft_model.TunerLayerStatus

قائمة من كائنات dataclass، يحتوي كل منها على حالة طبقة المحوّل (adapter) المقابلة.

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

تعيد هذه الدالة قائمة من كائنات فئة البيانات TunerLayerStatus، يحتوي كل منها على السمات التالية:

  • name (str): اسم طبقة المُكيّف، مثل model.encoder.block.0.layer.0.SelfAttention.q.
  • module_type (str): نوع طبقة المُكيّف، مثل lora.Linear.
  • enabled (bool): ما إذا كان طبقة المُكيّف مفعّلة.
  • active_adapters (list[str]): أسماء المُكيِّفات النشطة، إن وُجدت، مثل ["default"].
  • merged_adapters (list[str]): أسماء المُدمِجات المُدمَجة، إن وُجدت، مثل ["default"].
  • requires_grad : dict[str, bool | Literal[“irregular”]] حالة requires_grad للمعاملات الخاصة بكل وحدة مُكيّف. في المثالي، يجب أن تكون إما True أو False. إذا لم تكن حالة requires_grad متسقة عبر جميع المعاملات، فسيتم تعيين القيمة إلى "irregular".
  • available_adapters (list[str]): أسماء المُكيِّفات المتاحة، مثل ["default"].
  • devices (dict[str, list[str]]): الأجهزة التي تُخزَّن فيها معاملات المُكيّف المحدد، مثل ["cuda","xpu"].
  • quantization_backend (str أو None): اسم وحدة معالجة التكميم، مثل "bnb 4bit"، أو None إذا لم يتم التكميم.

peft.get_model_status

< >

( model: torch.nn.Module ) → peft.peft_model.TunerModelStatus

المعاملات

  • model ([Union[~PeftModel, ~transformers.PreTrainedModel, nn.Module]]) — النموذج الذي سيتم الحصول على حالة طبقة المُكيّف (adapter) منه.

يعيد

peft.peft_model.TunerModelStatus

فئة بيانات تحتوي على حالة النموذج.

احصل على حالة مُعدِّلات النموذج.

تعيد هذه الدالة كائنًا من فئة البيانات TunerModelStatus، والذي يحتوي على السمات التالية:

  • base_model_type (str): نوع النموذج الأساسي، مثل T5Model.
  • adapter_model_type (str): نوع نموذج المُكيّف، مثل LoraModel.
  • peft_types (dict[str, str]): خريطة من اسم المُكيّف إلى نوع المُكيّف، على سبيل المثال {"default": "LORA"}.
  • trainable_params (int): عدد المعاملات القابلة للتدريب في النموذج.
  • total_params (int): إجمالي عدد المعاملات في النموذج.
  • num_adapter_layers (int): عدد طبقات المحوّل في النموذج.
  • enabled (bool, Literal["irregular"]): ما إذا كانت جميع طبقات المُكيِّف مفعّلة. إذا كانت بعض الطبقات مفعّلة وبعضها الآخر غير مفعّل، فسيكون هذا "irregular". وهذا يعني أن نموذجك في حالة غير متسقة وقد لا يعمل كما هو متوقع.
  • active_adapters (list[str], Literal["irregular"]): أسماء المُكيِّفات النشطة. إذا لم تكن المُكيِّفات النشطة متسقة عبر جميع الطبقات، فسيكون هذا "irregular"، مما يعني أن نموذجك في حالة غير متسقة وقد لا يعمل كما هو متوقع.
  • merged_adapters (list[str], Literal["irregular"]): أسماء المُدمِجات المُدمَجة. إذا لم تكن المُدمِجات المُدمَجة متسقة عبر جميع الطبقات، فسيكون هذا "irregular"، مما يعني أن نموذجك في حالة غير متسقة وقد لا يعمل كما هو متوقع.
  • requires_grad (dict[str, bool | Literal["irregular"]]): ما إذا كانت جميع طبقات المُكيّف المُعطى تحتوي على requires_grad مُعيّنة إلى True أو False. إذا كان هناك مزيج، فسيتم تعيينها إلى "irregular"، مما يعني أن نموذجك في حالة غير متسقة وقد لا يعمل كما هو متوقع.
  • available_adapters (list[str]): أسماء المُكيِّفات المتاحة، مثل ["default"].
  • devices (dict[str, list[str]]): الأجهزة التي تُخزَّن فيها معاملات المُكيّف المحدد، مثل ["cuda","xpu"].
  • quantization_backend (str, None, Literal["irregular"]): اسم واجهة التكميم، مثل "bnb 4bit"، أو None إذا لم يتم التكميم. إذا لم تكن الواجهة متسقة عبر جميع الطبقات، فسيكون "irregular".
Update on GitHub