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

أنواع محددات التكيف المختلطة

عادةً، لا يمكن خلط أنواع مختلفة من المُكيّفات (adapters) في 🤗 PEFT. يمكنك إنشاء نموذج PEFT مزوّد بمُكيّفين LoRA مختلفين (يمكن أن يكون لكل منهما خيارات إعداد مختلفة)، لكن لا يمكن دمج مُكيّف LoRA مع مُكيّف LoHa. ومع ذلك، يعمل هذا الأمر باستخدام PeftMixedModel طالما أن أنواع المُكيّفات متوافقة. الغرض الرئيسي من السماح بأنواع مُكيّفات مختلطة هو دمج المُكيّفات المدرَّبة للاستدلال (inference). وعلى الرغم من إمكانية تدريب نموذج مُكيّفات مختلطة، إلا أن هذا لم يُختبر ولا يُنصح به.

لتحميل أنواع مختلفة من المحوِّلات إلى نموذج PEFT، استخدم PeftMixedModel بدلاً من PeftModel:

from peft import PeftMixedModel

base_model = ...  # load the base model, e.g. from transformers
# load first adapter, which will be called "default"
peft_model = PeftMixedModel.from_pretrained(base_model, <path_to_adapter1>)
peft_model.load_adapter(<path_to_adapter2>, adapter_name="other")
peft_model.set_adapter(["default", "other"])

تُعدّ طريقة set_adapter() ضرورية لتفعيل كلا المُكيّفَين، وإلا فسيكون المُكيّف الأول فقط هو المُفعَّل. يمكنك مواصلة إضافة المزيد من المُكيّفات عن طريق استدعاء add_adapter() بشكل متكرر.

لا يدعم PeftMixedModel حفظ وتحميل المُكيّفات المختلطة. يجب أن تكون المُكيّفات مدرَّبة مسبقًا، ويتطلب تحميل النموذج تشغيل سكربت في كل مرة.

نصائح

  • لا يمكن دمج جميع أنواع المحوِّلات. راجع peft.tuners.mixed.COMPATIBLE_TUNER_TYPES للحصول على قائمة بالأنواع المتوافقة. سيُستدعى خطأ إذا حاولت دمج أنواع محوِّلات غير متوافقة.
  • من الممكن دمج عدة محوِّلات (adapters) من النوع نفسه، وهو ما قد يكون مفيدًا لدمج محوِّلات ذات إعدادات مختلفة تمامًا.
  • إذا كنت ترغب في دمج عدد كبير من المحوِّلات المختلفة، فإن الطريقة الأكثر أداءً هي إضافة أنواع المحوِّلات المتتالية بنفس النوع. على سبيل المثال، أضف LoRA1، ثم LoRA2، ثم LoHa1، ثم LoHa2 بهذا الترتيب، بدلاً من LoRA1، ثم LoHa1، ثم LoRA2، ثم LoHa2. وعلى الرغم من أن الترتيب قد يؤثر على المخرجات، إلا أنه لا يوجد ترتيب أفضل بشكل جوهري، لذا فمن الأفضل اختيار الأسرع.
Update on GitHub