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

التدريب الفائق

Super-Tuning هي طريقة لضبط دقيق متناثر (sparse) تقوم بتجميد الأوزان الأساسية وتدرّب فقط على دعم متناثر من العناصر القياسية (scalar) يتم اختيارها بناءً على حجم الوزن. عند تعيين r، يتم تخصيص مُكيّف منخفض الرتبة بنمط LoRA يُضاف بشكل إضافي فوق الدعم المتناثر (وهو ما يُعرف بـ “Supra” الهجين في الورقة البحثية).

التقييم الافتراضي يعتمد على القيمة المطلقة فقط ولا يتطلب بيانات. تُظهر تجارب إزالة العناصر (Ablation) للنموذج بحجم 8B في الورقة أن magnitude-topk حقق متوسط أداء بنسبة 79.02% متفوقاً على تقييم الأهمية الموزون بوزن Wanda الذي حقق 78.66%، وذلك دون الحاجة إلى أي مسار معايرة. ولا يوفر هذا التنفيذ تقييم الأهمية الموزون بنشاطات Wanda.

تخضع عملية Super-Tuning حاليًا للقيود التالية:

  • يتم دعم طبقات nn.Linear فقط.

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

أصبح ضبط النماذج اللغوية الكبيرة باستخدام طرق فعّالة من حيث المعايير ممارسة قياسية، لكن الأساليب القائمة مثل LoRA تحدّ من الفضاء الجزئي القابل للتدريب إلى تحليل منخفض الرتبة. نُقدّم Super-Tuning، وهو نهج للتدريب الدقيق المتناثر يختار بدلاً من ذلك دعماً صغيراً من إدخالات أوزار قياسية فردية — أي مجموعة قابلة للتدريب غير مقيدة الرتبة ضمن ميزانية معايير ثابتة. يتم توجيه عملية الاختيار بإشارات أهمية مستوحاة من التقليم: إما التقييم بناءً على القيمة المطلقة فقط (على غرار PaFi) أو التقييم المرجّح بالنشاط (على غرار Wanda). نُظهر أنه في حالات التدريب الدقيق على Llama-3.2-1B وMeta-Llama-3-8B المُقيَّمة على Math17K، فإن Super-Tuning القائم على القيمة المطلقة يطابق LoRA أو يتفوق عليه عند ميزانيات معايير مماثلة، وأن نسخة هجينة باسم “Supra” — تجمع بين الدعم المتناثر ومكوّن منخفض الرتبة — تحسّن دقة المهام اللاحقة بشكل أكبر.

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

الاستخدام

سوبر نقي (تقييم الحجم، بدون بيانات):

from peft import SupertuningConfig, get_peft_model

config = SupertuningConfig(target_modules=["q_proj", "v_proj"], sparsity=0.99)
model = get_peft_model(base_model, config)

هجين سوبرا (دعم متناثر + LoRA مركّبة بشكل إضافي):

config = SupertuningConfig(
    target_modules=["q_proj", "v_proj"], sparsity=0.99,
    r=8, lora_alpha=16,   # lora_alpha defaults to 2 * r when omitted
)
model = get_peft_model(base_model, config)

SupertuningConfig

فئة peft.SupertuningConfig

< >

( 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]] = Nonesparsity: float = 0.99select_top: bool = Truer: Optional[int] = Nonelora_alpha: Optional[float] = Nonelora_dropout: float = 0.0init_weights: bool = Truesave_precomputed_indices: bool = True )

المعاملات

  • target_modules (Optional[Union[List[str], str]]) — أسماء الوحدات التي سيتم تطبيق المُكيّف عليها. نص → مطابقة تعبيرية منتظمة؛ قائمة → مطابقة لاحقة / مطابقة تامة؛ None → الافتراضي المعماري للنموذج.
  • modules_to_save (Optional[List[str]]) — وحدات خارج طبقات Supertuning يجب أن تكون قابلة للتدريب أيضاً وتُحفظ في نقطة الفحص النهائية (مثل رؤوس المصنِّف المُهيّأة عشوائياً).
  • sparsity (float) — نسبة التخلخل المستهدفة في [0.0, 1.0). 0.99 = 1% من قيم الأوزان قابلة للتدريب. القيمة الافتراضية هي 0.99.
  • select_top (bool) — الطرف من درجات القيمة المطلقة الذي يُحتفظ به كدعم قابل للتدريب. True يحتفظ بالقيم ذات القيمة المطلقة الأكبر (Super / Supra في الورقة البحثية)؛ False يحتفظ بالقيم ذات القيمة المطلقة الأصغر (متغيرات -bottom في الورقة البحثية). تشير الورقة البحثية إلى أن الاتجاه الأفضل يعتمد على النموذج والمهمة. القيمة الافتراضية هي True.
  • r (Optional[int]) — رتبة LoRA للخليط “Supra”. عند تعيين None (الافتراضي)، تكون الدعامات المتناثرة فقط قابلة للتدريب (وضع Super). عند تعيينها إلى عدد صحيح موجب، يتم تخصيص معاملات LoRA A ([r, in_features]) وB ([out_features, r]) يُضاف مساهمتها إلى الدعامات المتناثرة في مسار الأمامي.
  • lora_alpha (Optional[float]) — معامل تحجيم LoRA لوضع Supra. إذا كان None وتم تعيين r، فإن القيمة الافتراضية هي 2 * r. يتم تجاهله عندما يكون r is None.
  • lora_dropout (float) — احتمالية إسقاط LoRA لوضع Supra. القيمة الافتراضية هي 0.0. يتم تجاهلها عندما تكون r is None.
  • init_weights (bool) — عندما يكون True (الافتراضي)، تُصفَّر القيم المتناثرة values ويُصفَّر B في LoRA — يكون المُكيّف تحديثًا هويّتيًا عند الإنشاء. عندما يكون False ، كلاهما Kaiming-uniform (يُستخدم في الاختبارات لاختبار مُكيّف غير تافه). يستخدم A في LoRA Kaiming-uniform في الحالتين.
  • save_precomputed_indices (bool) — ما إذا كان سيتم حفظ فهارس الدعم المتناثر في قاموس الحالة. القيمة الافتراضية هي True. اضبطها على False لتقليل حجم نقطة الحفظ — حيث سيتم إعادة بناء الفهارس بشكل حتمي من أحجام الأوزان الأساسية عند وقت التحميل. تفترض عملية إعادة بناء أن أوزان النموذج الأساسي مطابقة لتلك المستخدمة في وقت التدريب؛ فقد يؤدي الانحراف العددي الطفيف إلى اختلاف في كسر التعادل في topk.

فئة التهيئة لـ SupertuningModel.

يقوم Super-Tuning (arXiv:2607.09287) بتجميد الأوزان الأساسية وتدريب دعم متناثر من العناصر القياسية فقط، يتم اختيارها بناءً على حجم الوزن. عند تعيين r، يتم تخصيص مُكيّف منخفض الرتبة بنمط LoRA فوق الدعم المتناثر (وهو ما يُعرف بـ "Supra" الهجين في الورقة).

يعيد الإعداد الافتراضي (تقييم السعة، r=None) أفضل تكوين لآلية واحدة مُبلَّغ عنه في الورقة: على Meta-Llama-3-8B، يتفوق magnitude-topk بمتوسط 79.02% على Wanda بمتوسط 78.66%، كما أنه لا يتطلب أي مسار معايرة. لا توفر هذه النسخة تقييمًا موزونًا بالنشاط على غرار Wanda.

الورقة: https://arxiv.org/abs/2607.09287

SupertuningModel

فئة peft.SupertuningModel

< >

( 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 (SupertuningConfig) — إعدادات Supertuning.
  • adapter_name (str) — اسم المُكيّف. القيمة الافتراضية هي "default".
  • low_cpu_mem_usage (bool، اختياري) — أنشئ أوزان المُكيِّف الفارغة على جهاز meta لتسريع عملية التحميل.

يعيد

torch.nn.Module

النموذج المُغلَّف بواسطة Supertuning.

مُحسِّن Super-Tuning (arXiv:2607.09287).

يجمّد الأوزان الأساسية ويدرب فقط دعمًا متناثرًا من العناصر القياسية المحددة بناءً على حجم الوزن (أفضل تكوين أحادي الآلية في الورقة؛ بدون بيانات). عند تعيين config.r، يُخصّص بشكل إضافي معاملات LoRA A/B التي تُركَّب بشكل إضافي مع الدعم المتناثر — وهو هجين Supra من الورقة.

مثال (نقي Super):

>>> from transformers import AutoModelForCausalLM
>>> from peft import SupertuningConfig, get_peft_model

>>> base = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-1B")
>>> config = SupertuningConfig(target_modules=["q_proj", "v_proj"], sparsity=0.99)
>>> model = get_peft_model(base, config)

مثال (هجين Supra):

>>> config = SupertuningConfig(
...     target_modules=["q_proj", "v_proj"],
...     sparsity=0.99,
...     r=8,
...     lora_alpha=16,
... )
>>> model = get_peft_model(base, config)

الورقة: https://arxiv.org/abs/2607.09287

Update on GitHub