إنتقل إلى المحتوى الرئيسي

الفصل 2: PEFT مقابل الضبط الدقيق الكامل

فهم التوازنات​

يتطلب الاختيار بين PEFT والضبط الدقيق الكامل فهم نقاط القوة والقيود لكل منهما.


مقارنة شاملة​

الجانبالضبط الدقيق الكاملPEFT
الذاكرة4-6x حجم النموذج0.1-0.5x حجم النموذج
السرعةأبطأأسرع 2-3x
سقف الجودةالأعلىأقل قليلاً
خطر النسيانعاليلا يوجد
الأجهزةوحدات معالجة رسومات باهظة الثمنوحدات معالجة رسومات للمستهلك
تبديل المحولاتلانعم
تكلفة الاستدلاللا يوجدضئيل (أو دمج)

مقارنة الذاكرة​

تحليل مفصل​

def calculate_memory(params_billions, method):
"""حساب الذاكرة التقريبية للتدريب."""
params = params_billions * 1e9

if method == "full_ft":
# الأوزان + التدرجات + المحسن (2 حالات) + التنشيطات
weights = params * 2 # bf16
gradients = params * 2
optimizer = params * 4 * 2 # fp32، 2 حالات
activations = params * 0.5 # تقدير تقريبي
return (weights + gradients + optimizer + activations) / 1e9

elif method == "lora":
# الأوزان المجمدة + تدرجات/محسن LoRA الصغيرة
weights = params * 2
lora_params = params * 0.01 # ~1% قابلة للتدريب
lora_training = lora_params * (2 + 2 + 8) # تدرج + محسن
return (weights + lora_training) / 1e9

elif method == "qlora":
# أوزان 4 بت + تدريب LoRA
weights = params * 0.5 # 4 بت
lora_params = params * 0.01
lora_training = lora_params * (2 + 2 + 8)
return (weights + lora_training) / 1e9

# النتائج لنموذج 7B
print(f"الضبط الكامل: {calculate_memory(7, 'full_ft'):.1f} GB") # ~77 GB
print(f"LoRA: {calculate_memory(7, 'lora'):.1f} GB") # ~15 GB
print(f"QLoRA: {calculate_memory(7, 'qlora'):.1f} GB") # ~4 GB

مقارنة الجودة​

النتائج التجريبية​

تظهر الأبحاث باستمرار أن PEFT يحقق جودة مماثلة:

المهمةالضبط الكاملLoRAالفرق
تصنيف النصوص94.2%93.8%-0.4%
التلخيص45.3 ROUGE44.9 ROUGE-0.9%
اتباع التعليمات8.2/108.0/10-2.4%
توليد الكود67.1%65.8%-1.9%

عندما يكون أداء PEFT أقل​

قد يكون أداء PEFT أقل في:

  • تحولات المجال الكبيرة: التدريب المسبق → مجال متخصص جداً
  • تنسيقات المخرجات الجديدة: مختلفة جداً عن أي بيانات تدريب
  • أقصى جودة ممكنة: عندما تكون كل 0.1% مهمة
  • السلوكيات الجديدة المعقدة: الأنماط المدمجة بعمق
# مثال: قد يواجه PEFT صعوبة مع
# 1. نموذج طبي من LLM عام (تحول مجال كبير)
# 2. لغة جديدة تماماً ليست في التدريب المسبق
# 3. معايير المنافسة حيث كل نقطة مهمة

مقارنة سرعة التدريب​

مقاييس الإنتاجية​

الطريقةالوقت لكل عصرالسرعة النسبية
الضبط الكامل60 دقيقة1x
LoRA25 دقيقة2.4x
QLoRA30 دقيقة2x

لماذا PEFT أسرع​

  1. حسابات تدرج أقل: حساب التدرجات فقط للمعلمات القابلة للتدريب
  2. عرض نطاق ذاكرة أقل: عدد أقل من البايتات للتحريك
  3. تحديثات محسن أصغر: حالات أقل للحفاظ عليها
# حساب التدرج يتناسب مع المعلمات القابلة للتدريب
# الضبط الكامل: 7 مليارات حساب تدرج
# LoRA: 70 مليون حساب تدرج (100x أقل)

مقارنة المرونة​

PEFT: محولات متعددة​

# تحميل النموذج الأساسي مرة واحدة
base_model = AutoModelForCausalLM.from_pretrained("llama-3.1-8b")

# إنشاء محولات مختلفة
adapters = {
"customer_support": "adapters/support/",
"code_review": "adapters/code/",
"translation": "adapters/translate/",
}

# تبديل المحولات في وقت التشغيل
for task, adapter_path in adapters.items():
model = PeftModel.from_pretrained(base_model, adapter_path)
# استخدام النموذج للمهمة
model.unload() # إزالة المحول

الضبط الكامل: نماذج منفصلة​

# كل مهمة تتطلب تحميل نموذج كامل مختلف
models = {
"customer_support": "models/support-full/", # 15GB
"code_review": "models/code-full/", # 15GB
"translation": "models/translate-full/", # 15GB
}
# المجموع: 45GB تخزين، تكلفة تبديل عالية

مقارنة الاستدلال​

PEFT مع المحولات​

# تكلفة طفيفة من حساب المحول
# التأخير: ~5-10% أبطأ لكل رمز

# الخيار 1: الحفاظ على المحول منفصل
model = PeftModel.from_pretrained(base, adapter)
output = model.generate(input_ids)

# الخيار 2: الدمج لعدم وجود تكلفة
model = model.merge_and_unload() # لا يوجد تكلفة محول
output = model.generate(input_ids)

PEFT المدمج = سرعة الضبط الكامل​

بعد الدمج:

W_merged = W_base + B × A # حساب لمرة واحدة
# الاستدلال مطابق للنموذج المضبوط بالكامل

تحليل التكلفة​

تكاليف التدريب​

الطريقةوحدة معالجة الرسومات المطلوبةالوقتالتكلفة (حسب الطلب)
الضبط الكامل (7B)A100-80GB4 ساعات$24
LoRA (7B)A100-40GB1.5 ساعة$6
QLoRA (7B)RTX 40902 ساعة$2

اعتبارات طويلة الأجل​

السيناريو: ضبط دقيق لـ 10 مهام مختلفة

الضبط الكامل:
- 10 جولات تدريب على وحدات معالجة رسومات باهظة الثمن
- 10 نماذج كاملة للتخزين (150GB)
- تحميل نموذج مختلف لكل مهمة

PEFT:
- 10 جولات تدريب على وحدات معالجة رسومات أرخص
- 1 نموذج أساسي + 10 محولات (15GB + 200MB)
- تبديل محولات سريع

إطار اتخاذ القرار​

اختر PEFT عندما:​

✅ ذاكرة وحدة معالجة الرسومات محدودة (< 40GB)
✅ الحاجة إلى التجربة بسرعة
✅ الحاجة إلى تنويعات متعددة للمهمة
✅ الرغبة في الحفاظ على قدرات النموذج الأساسي
✅ التكلفة عامل مهم
✅ الإنتاج يتطلب تبديل المحولات

اختر الضبط الكامل عندما:​

✅ الجودة القصوى مهمة
✅ مطلوب تحول مجال كبير
✅ الموارد ليست قيدًا
✅ الحاجة إلى نموذج لغرض واحد
✅ النشر كنموذج مدمج على أي حال
✅ البحث يتطلب تحكمًا كاملاً


استراتيجيات هجينة​

ابدأ بـ PEFT، قم بالترقية إذا لزم الأمر​

# المرحلة 1: تجربة سريعة مع LoRA
lora_model = train_with_lora(dataset_small)
evaluate(lora_model) # تحقق مما إذا كانت الجودة كافية

# المرحلة 2: إذا لم يكن PEFT كافيًا، جرب الضبط الكامل
if quality_gap > threshold:
full_ft_model = train_full(dataset_full)

PEFT للتكرار، الضبط الكامل للنهائي​

# التكرار على البيانات/المعلمات الفائقة مع PEFT (سريع، رخيص)
for experiment in experiments:
model = train_lora(config=experiment)
score = evaluate(model)
if score > best_score:
best_config = experiment

# التدريب النهائي مع الضبط الكامل باستخدام أفضل الإعدادات
final_model = train_full(config=best_config)

توصيات عملية​

لمعظم الحالات: ابدأ بـ PEFT​

# التوصية الافتراضية لمعظم الممارسين
from peft import LoraConfig, get_peft_model

config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
lora_dropout=0.05,
)

model = get_peft_model(base_model, config)
# التدريب والتقييم

للإنتاج: النظر في الدمج​

# بعد التدريب، الدمج للنشر
model = model.merge_and_unload()
model.save_pretrained("./production-model")
# الآن يتصرف تمامًا مثل النموذج المضبوط بالكامل

النقاط الرئيسية​

✅ يحقق PEFT 90-99% من جودة الضبط الكامل مع 80-95% ذاكرة أقل

✅ الضبط الكامل لديه سقف جودة أعلى ولكن بتكلفة كبيرة

✅ يتيح PEFT تبديل المحولات؛ الضبط الكامل ينشئ نماذج ثابتة

✅ PEFT المدمج لديه أداء استدلال مطابق للضبط الكامل

✅ ابدأ بـ PEFT، قم بالترقية إلى الضبط الكامل فقط إذا لزم الأمر

✅ النظر في التكلفة الإجمالية بما في ذلك التخزين، التبديل، والتكرار


الخطوات التالية​

تابع إلى الفصل 3: نظرة عامة على طرق PEFT لاستكشاف جميع تقنيات PEFT المتاحة.


تحقق سريع​

قبل المتابعة، تأكد من أنك تستطيع الإجابة:

  1. كم من الذاكرة يوفر PEFT مقارنة بالضبط الدقيق الكامل؟
  2. متى قد يتفوق الضبط الدقيق الكامل على PEFT؟
  3. ما هي ميزة محولات PEFT المدمجة؟