PEFT documentation
Polytropon
Polytropon
Polytropon هو نموذج متعدد المهام يحتوي على عدد من محولات LoRA المختلفة في “مخزونه”. يتعلم النموذج التوليفة الصحيحة من المحولات الموجودة في المخزون باستخدام دالة توجيه لاختيار أفضل مجموعة فرعية من الوحدات للمهمة المحددة. كما يدعم PEFT Multi-Head Adapter Routing (MHR) لـ Polytropon، والذي يبني على دالة التوجيه ويحسّنها من خلال دمج رؤوس المحولات بشكل أكثر تفصيلاً. يتم فصل رؤوس المحولات إلى كتل غير متداخلة، وتُتعلم دالة توجيه مختلفة لكل منها، مما يتيح مرونة أكبر في التعبير.
ملخص الورقة البحثية هو:
تشجع البنية التصميمية المعيارية نماذج الشبكات العصبية على فصل وإعادة تركيب جوانب مختلفة من المعرفة لتعميم بشكل أكثر منهجية على مهام جديدة. في هذا العمل، نفترض أن كل مهمة مرتبطة بمجموعة فرعية من المهارات المنفصلة الكامنة من مخزون (قد يكون صغيرًا). بدورها، تتوافق المهارات مع تمثيلات معاملات نموذجية فعالة من حيث المعاملات (متناثرة / منخفضة الرتبة). من خلال تعلم هذه المهارات ومصفوفة تخصيص المهام-المهارات بشكل مشترك، يتم إنشاء الشبكة لكل مهمة على أنها متوسط معاملات المهارات النشطة. ولتفضيل التقسيمات الناعمة غير التافهة للمهارات عبر المهام، أجرينا تجارب على سلسلة من الانحيازات الاستقرائية، مثل أولية عملية البوفيه الهندي ومعدل تعلم ذي سرعتين. قمنا بتقييم نموذج المهارة الكامنة لدينا في إعدادين رئيسيين: 1) التعلم التعزيزي متعدد المهام لاتباع التعليمات الملموسة على 8 مستويات من منصة BabyAI؛ و 2) التكيف بعدد قليل من الأمثلة لنماذج توليد النص-إلى-النص المُدرَّبة مسبقًا على CrossFit، وهو معيار يتكون من 160 مهمة في معالجة اللغة الطبيعية. وجدنا أن البنية التصميمية المعيارية للشبكة تزيد بشكل كبير من كفاءة العينة في التعلم التعزيزي والتعميم بعدد قليل من الأمثلة في التعلم المُشرف، مقارنةً بالخطوط الأساسية ذات المعاملات المشتركة بالكامل، أو الخاصة بالمهمة، أو المولَّدة شرطياً حيث تكون المعرفة متشابكة عبر المهام. بالإضافة إلى ذلك، أوضحنا كيف تساعد المهارات المنفصلة في قابلية التفسير، حيث إنها تُنتج تسلسلاً هرميًا صريحًا للمهام.
ملخص الورقة البحثية هو:
يتألف الضبط الدقيق الفعال من حيث المعاملات (PEFT) للتعميم عبر المهام من تدريب مسبق للمُكيِّفات على مجموعة تدريب متعددة المهام قبل التكيّف بعدد قليل من الأمثلة للمهام الاختبارية. يتعلم بوليتروبون [Ponti et al., 2023] (Poly) بشكل مشترك قائمة من المُكيِّفات ودالة توجيه تختار مجموعة فرعية (بحجم متغير) من المُكيِّفات لكل مهمة أثناء كل من التدريب المسبق والتكيّف بعدد قليل من الأمثلة. في هذه الورقة، ندرس الدور الذي يلعبه توجيه المُكيِّفات في نجاحه ونصمم متغيرات جديدة بناءً على نتائجنا. أولاً، نبني على الحدس بأن التوجيه الأكثر دقة يوفر قدرة تعبيرية أكبر. وبالتالي، نقترح MHR (Multi-Head Routing)، الذي يجمع مجموعات فرعية من معاملات المُكيِّفات ويتفوق على Poly ضمن ميزانية معاملات قابلة للمقارنة؛ وبضبط الدالة التوجيهية فقط دون ضبط المُكيِّفات (MHR-z)، نحقق أداءً تنافسيًا مع كفاءة قصوى في المعاملات. ثانيًا، نجد أن أداء Poly/MHR هو نتيجة لتحسين أفضل للتدريب متعدد المهام، وليس انحيازات استقرائية معيارية تسهّل إعادة تركيب المُكيِّفات والتكيّف المحلي، كما افترض سابقًا. في الواقع، نجد أن MHR يُظهر محاذاة أعلى للتدرجات بين المهام مقارنةً بأي طريقة أخرى. وبما أن هذا يعني أن التوجيه حاسم فقط أثناء التدريب المسبق متعدد المهام، نقترح MHR-mu، الذي يتخلى عن التوجيه ويضبط متوسط المُكيِّفات المدرَّبة مسبقًا أثناء التكيّف بعدد قليل من الأمثلة. وهذا يُرسّخ MHR-mu كطريقة فعالة للضبط الدقيق لمُكيِّف واحد..
في حال كنت ترغب في تجربة التوجيه دون تدريب أولاً، يمكنك الاطلاع على نسخة Arrow LoRA.
واجهة برمجة التطبيقات
PolyConfig
فئة peft.PolyConfig
< source >( 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
< source >( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )