🤗 PEFT - مقدمة تفصيلية لمكتبة الضبط الدقيق الفعال للمعلمات
نظرة عامة على المشروع
PEFT (Parameter-Efficient Fine-Tuning) هي مكتبة متقدمة للضبط الدقيق الفعال للمعلمات تم تطويرها بواسطة Hugging Face. يهدف هذا المشروع إلى حل مشكلة التكلفة الحسابية العالية ومتطلبات التخزين الضخمة في عملية الضبط الدقيق للنماذج الكبيرة المدربة مسبقًا.
عنوان GitHub: https://github.com/huggingface/peft
القيم والمزايا الأساسية
1. فعالية التكلفة
- تقليل كبير في التكلفة الحسابية: مقارنة بالضبط الدقيق الكامل للمعلمات التقليدي، تتطلب طرق PEFT تدريب جزء صغير فقط من معلمات النموذج.
- تقليل كبير في متطلبات التخزين: عادةً ما تكون ملفات نقاط التفتيش للنماذج المضبوطة بدقة بضعة ميغابايت فقط، بدلاً من عدة غيغابايت.
- تحسين استخدام الذاكرة: القدرة على معالجة نماذج أكبر في ظل نفس ظروف الأجهزة.
2. الحفاظ على الأداء
- أداء مماثل للضبط الدقيق الكامل للمعلمات: تحقيق أداء مماثل للضبط الدقيق الكامل في معظم المهام.
- تجنب النسيان الكارثي: حماية المعرفة الأصلية للنموذج الأساسي وتقليل خطر التجاوز.
3. المرونة والراحة
- التكيف مع مهام متعددة: القدرة على تدريب العديد من المحولات خفيفة الوزن لمهام مختلفة.
- تكامل سلس: تكامل مثالي مع الأنظمة البيئية مثل Transformers و Diffusers و Accelerate.
طرق الضبط الدقيق المدعومة
تقنيات PEFT الرئيسية
- LoRA (Low-Rank Adaptation)
- الطريقة الأكثر شيوعًا للضبط الدقيق الفعال للمعلمات.
- تقليل كبير في المعلمات القابلة للتدريب من خلال تحليل المصفوفة منخفضة الرتبة.
- في السيناريوهات النموذجية، يتطلب تدريب 0.1٪ - 1٪ فقط من المعلمات الأصلية.
- AdaLoRA
- نسخة محسنة من LoRA.
- تعديل حجم الرتبة بشكل تكيفي، مما يزيد من تحسين الكفاءة.
- Prefix Tuning
- إضافة بادئة قابلة للتعلم إلى تسلسل الإدخال.
- مناسب لمهام الإنشاء.
- P-Tuning v2
- طريقة محسنة لضبط المطالبات.
- إضافة معلمات قابلة للتعلم في طبقات متعددة.
- IA³ (Infused Adapter by Inhibiting and Amplifying Inner Activations)
- تكييف النموذج عن طريق تثبيط وتضخيم التنشيطات الداخلية.
تأثير التطبيق العملي
مقارنة استخدام الذاكرة (A100 80GB GPU)
النموذج |
الضبط الدقيق الكامل للمعلمات |
PEFT-LoRA |
PEFT-LoRA + DeepSpeed CPU Offload |
T0_3B (3 مليارات معلمة) |
47.14GB GPU / 2.96GB CPU |
14.4GB GPU / 2.96GB CPU |
9.8GB GPU / 17.8GB CPU |
mt0-xxl (120 مليار معلمة) |
نفاد الذاكرة |
56GB GPU / 3GB CPU |
22GB GPU / 52GB CPU |
bloomz-7b1 (7 مليارات معلمة) |
نفاد الذاكرة |
32GB GPU / 3.8GB CPU |
18.1GB GPU / 35GB CPU |
أداء
مقارنة دقة في مهمة تصنيف شكاوى Twitter:
- خط الأساس البشري: 89.7٪
- Flan-T5: 89.2٪
- LoRA-T0-3B: 86.3٪
التثبيت والبدء السريع
التثبيت
pip install peft
مثال على الاستخدام الأساسي
from transformers import AutoModelForSeq2SeqLM
from peft import get_peft_config, get_peft_model, LoraConfig, TaskType
# تكوين PEFT
model_name_or_path = "bigscience/mt0-large"
peft_config = LoraConfig(
task_type=TaskType.SEQ_2_SEQ_LM,
inference_mode=False,
r=8,
lora_alpha=32,
lora_dropout=0.1
)
# تحميل وتغليف النموذج
model = AutoModelForSeq2SeqLM.from_pretrained(model_name_or_path)
model = get_peft_model(model, peft_config)
# عرض المعلمات القابلة للتدريب
model.print_trainable_parameters()
# الإخراج: trainable params: 2359296 || all params: 1231940608 || trainable%: 0.19
استخدام الاستدلال
from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer
# تحميل النموذج المضبوط بدقة
model = AutoPeftModelForCausalLM.from_pretrained("ybelkada/opt-350m-lora").to("cuda")
tokenizer = AutoTokenizer.from_pretrained("facebook/opt-350m")
# إجراء الاستدلال
model.eval()
inputs = tokenizer("نص الإدخال الخاص بك", return_tensors="pt")
outputs = model.generate(input_ids=inputs["input_ids"].to("cuda"), max_new_tokens=50)
تكامل النظام البيئي
1. تكامل Transformers
- دعم مختلف هياكل النماذج المدربة مسبقًا.
- تدفقات تدريب واستدلال سلسة.
- تكوين وتحسين تلقائي للنموذج.
2. تكامل Diffusers
- دعم الضبط الدقيق الفعال للنماذج الانتشارية.
- مناسب لإنشاء الصور وتحريرها وما إلى ذلك.
- تقليل كبير في متطلبات ذاكرة التدريب.
3. تكامل Accelerate
- دعم التدريب الموزع.
- تحسين التدريب على وحدات معالجة الرسومات المتعددة و TPUs.
- سهل الاستخدام للأجهزة الاستهلاكية.
4. تكامل TRL (Transformer Reinforcement Learning)
- دعم RLHF (التعلم المعزز من ردود الفعل البشرية).
- DPO (التحسين المباشر للتفضيلات).
- تدريب محاذاة النماذج الكبيرة.
سيناريوهات التطبيق
1. الضبط الدقيق للنماذج اللغوية الكبيرة
- الضبط الدقيق للتعليمات.
- تحسين أنظمة المحادثة.
- التكيف مع مجالات محددة.
2. نماذج متعددة الوسائط
- الضبط الدقيق لنماذج الرؤية واللغة.
- تكييف نماذج معالجة الصوت.
3. نماذج الانتشار
- تخصيص Stable Diffusion.
- تدريب DreamBooth.
- تحويل الأنماط.
4. التعلم المعزز
- الضبط الدقيق لنماذج السياسة.
- تدريب نماذج المكافآت.
- محاذاة التفضيلات البشرية.
المزايا التقنية والابتكارات
1. كفاءة المعلمات
- تدريب 0.1٪ - 1٪ فقط من المعلمات الأصلية.
- الحفاظ على أكثر من 95٪ من الأداء.
- تقليل حجم ملفات نقاط التفتيش إلى 1/100 من الأصل.
2. تحسين الذاكرة
- تقليل كبير في متطلبات ذاكرة GPU.
- دعم تدريب النماذج الكبيرة على الأجهزة الاستهلاكية.
- نقاط تفتيش التدرج لتحسين الذاكرة بشكل أكبر.
3. توافق القياس الكمي
- تكامل مثالي مع القياس الكمي 8 بت و 4 بت.
- دعم تقنية QLoRA.
- زيادة خفض عتبة الأجهزة.
4. تصميم معياري
- دعم طرق PEFT المتعددة.
- خيارات تكوين مرنة.
- سهولة توسيع الطرق الجديدة.
المجتمع والنظام البيئي
الموارد الرسمية
ملخص
🤗 PEFT هي مكتبة ثورية للضبط الدقيق الفعال للمعلمات، فهي لا تحل مشكلة تكلفة الضبط الدقيق للنماذج الكبيرة فحسب، بل تحافظ أيضًا على أداء ممتاز. سواء كانوا باحثين أو مطورين صناعيين، فإن PEFT توفر حلاً فعالاً من حيث التكلفة لتخصيص النماذج الكبيرة، مما يعزز إضفاء الطابع الديمقراطي على تكنولوجيا الذكاء الاصطناعي.