الدرس 3 من 24

فهم الضبط الدقيق

شرح طرق PEFT

3 دقيقة للقراءة

الضبط الدقيق الموفر للمعاملات (PEFT) هو عائلة من التقنيات التي تقلل بشكل كبير الموارد المطلوبة للضبط الدقيق. دعنا نستكشف الطرق الرئيسية.

LoRA: تكيف الرتبة المنخفضة

LoRA هي أشهر طريقة PEFT، تُستخدم في الغالبية العظمى من مشاريع الضبط الدقيق.

كيف يعمل LoRA

بدلاً من تحديث مصفوفة الأوزان الكاملة W، يضيف LoRA مصفوفتين صغيرتين:

الأصل: W (4096 x 4096 = 16M معامل)
LoRA: A (4096 x 16) × B (16 x 4096) = 131K معامل

التوفير: 99.2% معاملات قابلة للتدريب أقل!

تكوين LoRA

from peft import LoraConfig

config = LoraConfig(
    r=16,                    # الرتبة - حجم مصفوفات LoRA
    lora_alpha=32,           # معامل القياس
    target_modules=[         # أي الطبقات نكيّف
        "q_proj", "k_proj", "v_proj", "o_proj",
        "gate_proj", "up_proj", "down_proj"
    ],
    lora_dropout=0.05,       # التنظيم
    bias="none",             # لا تدرّب الانحيازات
    task_type="CAUSAL_LM"    # لنماذج فك التشفير
)

المعاملات الأساسية

المعامل القيمة النموذجية التأثير
r (الرتبة) 8-64 أعلى = سعة أكثر، معاملات أكثر
lora_alpha 16-64 يقيّس تحديث LoRA
target_modules "all-linear" أي الطبقات نعدّل
lora_dropout 0.0-0.1 يمنع الإفراط في التعلم

QLoRA: LoRA المُكَمَّم

QLoRA يجمع التكميم 4-bit مع LoRA، مما يتيح ضبط نماذج 70B على GPU واحد 24GB.

كيف يعمل QLoRA

  1. تكميم النموذج الأساسي إلى 4-bit NormalFloat (NF4)
  2. إضافة محولات LoRA فوق الأوزان المكمّمة
  3. التدريب بدقة مختلطة (المحولات بـ fp16/bf16)
from transformers import BitsAndBytesConfig

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",        # NormalFloat4 - الأمثل للأوزان
    bnb_4bit_compute_dtype=torch.bfloat16,
    bnb_4bit_use_double_quant=True    # تكميم ثوابت التكميم
)

مقارنة ذاكرة LoRA مقابل QLoRA

النموذج ضبط كامل LoRA QLoRA
Llama 3.2 8B 64GB 18GB 6GB
Mistral 7B 56GB 16GB 5GB
Llama 3.3 70B 560GB 160GB 24GB

DoRA: LoRA مفكك الأوزان

DoRA (2024) يحسّن LoRA بتفكيك الأوزان إلى الحجم والاتجاه.

LoRA:  W' = W + ΔW
DoRA:  W' = m × (W + ΔW) / ||W + ΔW||
       حيث m = الحجم المُتعلَّم، الاتجاه مُطبَّع

الفائدة: أداء أفضل، خاصة في المهام الصعبة.

طرق PEFT الأخرى

المحولات (Adapters)

وحدات شبكة عصبية صغيرة تُدخل بين طبقات المحول.

# هندسة المحول
المدخل → LayerNorm → إسقاط للأسفل → ReLU → إسقاط للأعلى → + المدخل

ضبط البادئة (Prefix Tuning)

يُلحق متجهات قابلة للتعلم للمدخل في كل طبقة.

ضبط المحث (Prompt Tuning)

يُلحق توكنات "محث ناعم" قابلة للتعلم للمدخل.

ملخص المقارنة

الطريقة الذاكرة السرعة الأداء الأفضل لـ
LoRA متوسطة سريع جيد جداً الخيار الافتراضي
QLoRA منخفضة متوسط جيد جداً VRAM محدود
DoRA متوسطة متوسط ممتاز أفضل جودة مطلوبة
ضبط كامل عالية جداً بطيء الأقصى موارد غير محدودة

أفضل الممارسات الحديثة (2025)

# التكوين الموصى للبداية
config = LoraConfig(
    r=16,
    lora_alpha=16,
    target_modules="all-linear",  # كل الطبقات الخطية
    lora_dropout=0.0,
    bias="none"
)

نصيحة: ابدأ بـ r=16 و target_modules="all-linear". قلل الرتبة أو الأهداف فقط إذا نفدت الذاكرة.

بعد ذلك، سنساعدك في اختيار النهج الصحيح لحالة استخدامك المحددة. :::

اختبار

الوحدة 1: فهم الضبط الدقيق

خذ الاختبار