PEFT documentation

Polytropon

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

Polytropon

Polytropon هو نموذج متعدد المهام يحتوي على عدد من محولات LoRA المختلفة في “مخزونه”. يتعلم النموذج التوليفة الصحيحة من المحولات الموجودة في المخزون باستخدام دالة توجيه لاختيار أفضل مجموعة فرعية من الوحدات للمهمة المحددة. كما يدعم PEFT Multi-Head Adapter Routing (MHR) لـ Polytropon، والذي يبني على دالة التوجيه ويحسّنها من خلال دمج رؤوس المحولات بشكل أكثر تفصيلاً. يتم فصل رؤوس المحولات إلى كتل غير متداخلة، وتُتعلم دالة توجيه مختلفة لكل منها، مما يتيح مرونة أكبر في التعبير.

دمج المهارات المعيارية في التعلم متعدد المهام
توجيه محوّل متعدد الرؤوس لتعميم عبر المهام

ملخص الورقة البحثية هو:

تشجع البنية التصميمية المعيارية نماذج الشبكات العصبية على فصل وإعادة تركيب جوانب مختلفة من المعرفة لتعميم بشكل أكثر منهجية على مهام جديدة. في هذا العمل، نفترض أن كل مهمة مرتبطة بمجموعة فرعية من المهارات المنفصلة الكامنة من مخزون (قد يكون صغيرًا). بدورها، تتوافق المهارات مع تمثيلات معاملات نموذجية فعالة من حيث المعاملات (متناثرة / منخفضة الرتبة). من خلال تعلم هذه المهارات ومصفوفة تخصيص المهام-المهارات بشكل مشترك، يتم إنشاء الشبكة لكل مهمة على أنها متوسط معاملات المهارات النشطة. ولتفضيل التقسيمات الناعمة غير التافهة للمهارات عبر المهام، أجرينا تجارب على سلسلة من الانحيازات الاستقرائية، مثل أولية عملية البوفيه الهندي ومعدل تعلم ذي سرعتين. قمنا بتقييم نموذج المهارة الكامنة لدينا في إعدادين رئيسيين: 1) التعلم التعزيزي متعدد المهام لاتباع التعليمات الملموسة على 8 مستويات من منصة BabyAI؛ و 2) التكيف بعدد قليل من الأمثلة لنماذج توليد النص-إلى-النص المُدرَّبة مسبقًا على CrossFit، وهو معيار يتكون من 160 مهمة في معالجة اللغة الطبيعية. وجدنا أن البنية التصميمية المعيارية للشبكة تزيد بشكل كبير من كفاءة العينة في التعلم التعزيزي والتعميم بعدد قليل من الأمثلة في التعلم المُشرف، مقارنةً بالخطوط الأساسية ذات المعاملات المشتركة بالكامل، أو الخاصة بالمهمة، أو المولَّدة شرطياً حيث تكون المعرفة متشابكة عبر المهام. بالإضافة إلى ذلك، أوضحنا كيف تساعد المهارات المنفصلة في قابلية التفسير، حيث إنها تُنتج تسلسلاً هرميًا صريحًا للمهام.

في حال كنت ترغب في تجربة التوجيه دون تدريب أولاً، يمكنك الاطلاع على نسخة Arrow LoRA.

واجهة برمجة التطبيقات

PolyConfig

فئة peft.PolyConfig

< >

( task_type: Optional[Union[str, TaskType]] = Nonepeft_type: Optional[Union[str, PeftType]] = Noneauto_mapping: Optional[dict] = Nonepeft_version: Optional[str] = Nonebase_model_name_or_path: Optional[str] = Nonerevision: Optional[str] = Noneinference_mode: bool = Falser: int = 8target_modules: Optional[Union[list[str], str]] = Noneexclude_modules: Optional[Union[list[str], str]] = Nonemodules_to_save: Optional[list[str]] = Noneinit_weights: bool = Truepoly_type: Literal['poly'] = 'poly'n_tasks: int = 1n_skills: int = 4n_splits: int = 1 )

المعاملات

  • r (int) — بُعد الانتباه لكل Lora في Poly.
  • target_modules (Union[List[str],str]) — أسماء الوحدات التي سيتم تطبيق Poly عليها.
  • exclude_modules (Optional[Union[List[str], str]]) — أسماء الوحدات التي لا يُطبَّق عليها المُكيّف. عند تمرير نص، يتم إجراء مطابقة باستخدام تعبير نمطي. عند تمرير قائمة من النصوص، يتم إجراء مطابقة دقيقة أو يُتحقق مما إذا كان اسم الوحدة ينتهي بأي من النصوص المُمرَّرة.
  • modules_to_save (List[str]) — قائمة بالوحدات التي يجب ضبطها لتكون قابلة للتدريب وحفظها في نقطة الفحص النهائية، بخلاف طبقات Poly.
  • init_weights (bool) — ما إذا كان سيتم تنفيذ تهيئة أوزان Poly.
  • poly_type (Literal["poly"]) — نوع متغير وحدة Poly المستخدم. حاليًا، يتم دعم “poly” فقط.
  • n_tasks (int) — عدد المهام في سيناريو تعدد المهام.
  • n_skills (int) — عدد المهارات (LoRA) في كل طبقة Poly.
  • n_splits (int) — عدد التقسيمات داخل كل LoRA في طبقة Poly. القيمة الأكبر من 1 تشير إلى استخدام التوجيه متعدد الرؤوس (MHR).

هذه هي فئة الإعدادات لتخزين إعدادات PolyModel.

PolyModel

فئة peft.PolyModel

< >

( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )

Update on GitHub