PEFT documentation
ضبط الموجهات متعددة المهام
ضبط الموجهات متعددة المهام
يقوم ضبط الموجه متعدد المهام بتفكيك الموجهات الناعمة لكل مهمة إلى موجه واحد قابل للنقل تم تعلمه، بدلاً من موجه منفصل لكل مهمة. يمكن تكييف الموجه الواحد المتعلم لكل مهمة من خلال تحديثات منخفضة الرتبة الضربية.
ملخص الورقة البحثية هو:
برز ضبط المُوجِّه (Prompt tuning)، الذي يتم فيه تكييف نموذج مُسبَق التدريب الأساسي لكل مهمة من خلال التكييف على متجهات مُوجِّه مُتعلَّمة، كنهج واعد لتكييف نماذج اللغة الكبيرة بكفاءة على مهام متعددة. ومع ذلك، فإن الأساليب القائمة تتعلم عادةً متجهات مُوجِّه ناعمة من الصفر، ولم يتضح كيف يمكن استغلال المعرفة الغنية عبر المهام باستخدام متجهات المُوجِّه في إعدادات التعلم متعدد المهام. نقترح هنا ضبط المُوجِّه متعدد المهام (MPT)، الذي يتعلم أولاً مُوجِّهًا واحدًا قابلًا للنقل عن طريق تقطير المعرفة من مُوجِّهات مصدر خاصة بعدة مهام. ثم نتعلم تحديثات ذات رتبة منخفضة ضربية لهذا المُوجِّه المشترك لتكييفه بكفاءة مع كل مهمة هدف لاحقة. تُظهر تجارب موسعة على 23 مجموعة بيانات لمعالجة اللغة الطبيعية أن مقاربتنا المقترحة تتفوق على الأساليب الأكثر تقدمًا، بما في ذلك خط الأساس للتدريب الكامل في بعض الحالات، على الرغم من ضبط 0.035% فقط من المعلمات الخاصة بالمهمة.

يتألف MPT من مرحلتين:
- التدريب على المصدر - بالنسبة لكل مهمة، يتم تفكيك موجهها الناعم إلى متجهات خاصة بالمهمة. تُضرب المتجهات الخاصة بالمهمة معًا لتكوين مصفوفة أخرى W، ويُستخدم حاصل هادامارد بين W ومصفوفة الموجه المشترك P لتوليد مصفوفة موجه خاصة بالمهمة. يتم تقطير الموجهات الخاصة بالمهمة في مصفوفة موجه واحدة مشتركة بين جميع المهام. يتم تدريب هذا الموجه باستخدام التدريب متعدد المهام.
- التكيّف مع الهدف - لتكييف الموجه الواحد مع مهمة مستهدفة، يتم تهيئة موجه مستهدف ويُعبَّر عنه كمنتج هادامارد لمصفوفة الموجه المشتركة ومصفوفة الموجه منخفضة الرتبة الخاصة بالمهمة.

نظرة عامة على الاختبارات
لا يوجد حتى الآن معيار مرجعي لهذه الطريقة. يمكنك المساهمة بإعداد تجربة، لكن تأكد أولاً من إنشاء مشكلة هنا.
واجهة برمجة التطبيقات
MultitaskPromptTuningConfig
فئة peft.MultitaskPromptTuningConfig
< 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 = Falsenum_virtual_tokens: int = Nonetoken_dim: int = Nonenum_transformer_submodules: Optional[int] = Nonenum_attention_heads: Optional[int] = Nonenum_layers: Optional[int] = Nonemodules_to_save: Optional[list[str]] = Noneprompt_tuning_init: peft.tuners.multitask_prompt_tuning.config.MultitaskPromptTuningInit | str = <MultitaskPromptTuningInit.RANDOM: 'RANDOM'>prompt_tuning_init_text: str | None = Nonetokenizer_name_or_path: str | None = Nonetokenizer_kwargs: dict | None = Noneprompt_tuning_init_state_dict_path: str | None = Noneprompt_tuning_init_task: int | None = 0num_ranks: int | None = 1num_tasks: int | None = 1 )
MultitaskPromptEmbedding
فئة peft.tuners.MultitaskPromptEmbedding
< source >( config: MultitaskPromptTuningConfigword_embeddings )