PEFT documentation

BEFT: الضبط الدقيق الموفّر للانحياز لنماذج اللغة في سيناريوهات البيانات المنخفضة

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

BEFT: الضبط الدقيق الموفّر للانحياز لنماذج اللغة في سيناريوهات البيانات المنخفضة

BEFT هو خوارزمية لضبط دقيق فعّال من حيث المعاملات (PEFT) تقوم بضبط دقيق لمصطلحات الانحياز المضافة في إسقاطات القيمة فقط من نماذج الترانسفورمر المُسبقة التدريب. تُظهر BEFT أن ضبط دقيق لمصطلحات الانحياز المضافة في إسقاطات القيمة من الترانسفورمرات المُسبقة التدريب يؤدي بشكل عام إلى أداء أعلى في المهام اللاحقة في بيئات البيانات المنخفضة مقارنةً بضبط دقيق لمصطلحات الانحياز المضافة في إسقاطات الاستعلام/المفتاح.

تتميز BEFT حاليًا بالتنازلات التالية:

المزايا:

  • يتطلب BEFT عددًا أقل بكثير من المعاملات مقارنةً بـ LoRA، مع الحفاظ على أداء تنافسي أو متفوق عبر المهام في سيناريوهات البيانات المنخفضة.

العيوب:

  • في الأنظمة التي تعتمد على كميات كبيرة من البيانات، قد تُظهر BEFT فعالية محدودة مقارنةً بـ LoRA والتدريب الدقيق الكامل للمعاملات.

إذا كان استخدامك ينتمي إلى نطاق البيانات العالية، ففكر في استخدام طرق PEFT أخرى مثل LoRA.

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

يتمتع ضبط مصطلحات الانحياز في النماذج اللغوية الكبيرة (LLMs) بإمكانية تحقيق كفاءة بارامترية غير مسبوقة مع الحفاظ على أداء تنافسي، لا سيما في بيئات البيانات المنخفضة. ومع ذلك، يبقى الربط بين ضبط مصطلحات الانحياز المختلفة (أي bq، وbk، وbv في إسقاطات الاستعلام والمفتاح والقيمة) والأداء في المهام اللاحقة غير واضح إلى حد كبير حتى الآن. في هذه الورقة، ندرس العلاقة بين ضبط bq، وbk، وbv وأداء المهمة اللاحقة. إن أهم نتيجة توصلنا إليها هي أن ضبط bv مباشرة يؤدي بشكل عام إلى أداء أعلى في المهام اللاحقة في بيئات البيانات المنخفضة، مقارنةً بـbq وbk. لقد قيّمنا هذه الخاصية الفريدة على نطاق واسع عبر مجموعة واسعة من النماذج اللغوية الكبيرة التي تمتد من البنى الحصرية للمشفّر إلى البنى الحصرية لفك التشفير حتى 6.7 مليار بارامتر (بما في ذلك النماذج اللغوية الكبيرة الخالية من الانحياز). توفر نتائجنا أدلة قوية على فعالية ضبط bv مباشرة عبر مختلف المهام اللاحقة.

نظرة عامة على الاختبارات

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

BeftConfig

فئة peft.BeftConfig

< >

( 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 = Falsetarget_modules: Optional[Union[list[str], str]] = Nonemodules_to_save: Optional[list[str]] = Noneinit_weights: bool = True )

المعاملات

  • target_modules (Optional[Union[List[str], str]]) — أسماء الوحدات التي سيتم تطبيق المُكيّف عليها. إذا تم تحديد هذا، فسيتم استبدال الوحدات التي تحمل الأسماء المحددة فقط. عند تمرير نص، سيتم إجراء مطابقة باستخدام تعبير نمطي. عند تمرير قائمة من النصوص، سيتم إجراء مطابقة دقيقة أو يتم التحقق مما إذا كان اسم الوحدة ينتهي بأي من النصوص الممررة. إذا لم يتم تحديد هذا، فسيتم اختيار الوحدات وفقًا لبنية النموذج. إذا لم تكن البنية معروفة، فسيتم رفع خطأ — في هذه الحالة، يجب عليك تحديد الوحدات المستهدفة يدويًا.
  • modules_to_save (Optional[List[str]]) — قائمة بالوحدات، بخلاف طبقات BEFT، التي يجب تعيينها قابلة للتدريب وحفظها في نقطة الفحص النهائية.
  • init_weights (bool) — ما إذا كان سيتم تهيئة المتجهات في طبقات BEFT، والافتراضي هو True. يُنصح بعدم تعيين هذا إلى False.

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

BeftModel

فئة peft.BeftModel

< >

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

المعاملات

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

يعيد

torch.nn.Module

نموذج (BEFT).

ينشئ مُكيّفًا مُدمجًا (Infused Adapter) من خلال ضبط دقيق مصغر (fine-tuning) لمصطلحات الانحياز (bias terms) المضافة في إسقاطات القيمة (value projections) من نموذج transformers مُسبق التدريب، وذلك في سيناريوهات البيانات التدريبية المنخفضة (BEFT). يتم وصف الطريقة بالتفصيل في https://arxiv.org/abs/2509.15974

مثال:

>>> from transformers import AutoModelForSeq2SeqLM
>>> from peft import BeftConfig, get_peft_model

>>> config = BeftConfig(
...     task_type="SEQ_2_SEQ_LM",
...     target_modules=["v"],
... )

>>> model = AutoModelForSeq2SeqLM.from_pretrained("t5-base")
>>> beft_model = get_peft_model(model, config)

الخصائص:

  • model (PreTrainedModel) — النموذج الذي سيتم تكييفه.
  • peft_config (BeftConfig): إعدادات نموذج (BEFT).
Update on GitHub