PEFT documentation
التدريب الفائق
التدريب الفائق
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
< 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 = 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). عند تعيينها إلى عدد صحيح موجب، يتم تخصيص معاملات LoRAA([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
< source >( 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