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

الفصل 1: فهم LoRA

الفكرة وراء التكيف منخفض الرتبة​

LoRA (التكيف منخفض الرتبة) هي تقنية أنيقة تقوم على ملاحظة بسيطة ولكنها قوية: لا نحتاج إلى تحديث جميع المعلمات لتكييف النموذج مع مهام جديدة.


الفكرة الأساسية​

الملاحظة الرئيسية​

عند تحسين النماذج المدربة مسبقًا، غالبًا ما تكون تحديثات الأوزان ذات "رتبة جوهرية" منخفضة - مما يعني أن التغييرات يمكن التقاطها بواسطة مجموعة أصغر بكثير من المعلمات.

التشبيه​

فكر في الأمر مثل تحرير مستند:

  • التحسين الكامل: إعادة كتابة المستند بأكمله
  • LoRA: إضافة ملاحظات لاصقة مع التصحيحات

يبقى المستند الأصلي (النموذج الأساسي) سليمًا، وتلتقط الملاحظات اللاصقة (محولات LoRA) التغييرات.


كيف يعمل LoRA​

التحسين التقليدي​

في طبقة الشبكة العصبية:

h = Wx

حيث W هي مصفوفة الأوزان بحجم (d × d).

التحسين الكامل يحدث تحديثًا مباشرًا لـ W:

W' = W + ΔW

حيث ΔW هو التغيير المتعلم لجميع المعلمات (d × d).

نهج LoRA​

يمثل LoRA ΔW كمنتج لمصفوفتين أصغر:

ΔW = BA

حيث:

  • B بحجم (d × r)
  • A بحجم (r × d)
  • r أصغر بكثير من d (r ≪ d)

تصبح عملية التمرير الأمامي:

h = Wx + BAx = (W + BA)x

التمثيل البصري​


توفير المعلمات​

مثال: مصفوفة أوزان 4096 × 4096​

# Original weight matrix
d = 4096
original_params = d * d # 16,777,216 parameters

# LoRA with rank 16
r = 16
lora_params = d * r + r * d # 131,072 parameters

# Savings
reduction = 1 - (lora_params / original_params)
print(f"Parameter reduction: {reduction:.2%}") # 99.22%

لنموذج كامل​

النموذجالأصليLoRA (r=16)التخفيض
7B7,000,000,000~4,000,00099.94%
13B13,000,000,000~8,000,00099.94%
70B70,000,000,000~40,000,00099.94%

لماذا يعمل الترتيب المنخفض​

البعد الجوهري​

تظهر الأبحاث أن تحديثات التحسين تميل إلى التواجد في فضاء فرعي منخفض الأبعاد:

  1. النماذج المدربة مسبقًا لديها بالفعل تمثيلات غنية
  2. يتطلب تكييف المهام "توجيه" بدلاً من "إعادة البناء"
  3. العديد من أبعاد فضاء الأوزان زائدة عن الحاجة للمهام المحددة

الأدلة التجريبية​

من ورقة LoRA الأصلية:

  • غالبًا ما يكون r=4 كافيًا للعديد من المهام
  • يوصى بـ r=8-16 للتكيفات المعقدة
  • نادرًا ما يكون r=64+ ضروريًا، العوائد المتناقصة

التهيئة​

مصفوفة A: توزيع غاوسي عشوائي​

# A is initialized with small random values
A = torch.randn(r, d) * 0.01

مصفوفة B: صفر​

# B is initialized to zero
B = torch.zeros(d, r)

لماذا هذه التهيئة؟​

At training start: BA = 0 × A = 0
→ Output unchanged from base model
→ Stable training start
→ Gradual adaptation

أي الطبقات يجب استهدافها​

بنية المحول​

Attention Block:
├── Query projection (q_proj) ← Common target
├── Key projection (k_proj) ← Sometimes target
├── Value projection (v_proj) ← Common target
└── Output projection (o_proj) ← Sometimes target

Feed-Forward Block:
├── Gate projection (gate_proj) ← Sometimes target
├── Up projection (up_proj) ← Sometimes target
└── Down projection (down_proj) ← Sometimes target

التكوينات الشائعة​

التكوينالوحدات المستهدفةحالة الاستخدام
الحد الأدنىq_proj, v_projتجارب سريعة
القياسيq_proj, k_proj, v_proj, o_projمتوازن
الكاملكل الانتباه + FFأقصى سعة

دمج LoRA​

أثناء الاستدلال (مع المحول)​

# Two paths: base + LoRA
output = W @ x + B @ A @ x

عبء طفيف من الحساب الإضافي.

مدمج (بدون محول)​

# Merge once
W_merged = W + B @ A

# Single path at inference
output = W_merged @ x

لا يوجد عبء - مطابق للنموذج المحسن.

مثال الدمج​

from peft import PeftModel

# Load model with adapter
model = PeftModel.from_pretrained(base_model, "path/to/adapter")

# Merge adapter into base model
model = model.merge_and_unload()

# Now model is a regular model without adapter overhead
model.save_pretrained("merged-model")

أنواع LoRA​

LoRA القياسي​

الصيغة الأصلية الموضحة أعلاه.

LoRA+​

تطبق معدلات تعلم مختلفة على مصفوفات A و B.

DoRA (التكيف منخفض الرتبة المفكك الأوزان)​

يفصل بين حجم واتجاه الأوزان.

GaLore (إسقاط التدرج منخفض الرتبة)​

يسقط التدرجات في فضاء منخفض الرتبة.


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

✅ يمثل LoRA تحديثات الأوزان كمنتجات مصفوفة منخفضة الرتبة

✅ يدرب فقط ~0.01-0.1% من المعلمات الأصلية

✅ B مهيأة لتكون صفر لضمان بداية تدريب مستقرة

✅ من الشائع استهداف إسقاطات الانتباه (q_proj, v_proj)

✅ يمكن دمجها لعدم وجود عبء استدلال

✅ يعمل الترتيب المنخفض لأن التحسين له بعد جوهري منخفض


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

تابع إلى الفصل 2: رياضيات LoRA للأسس الرياضية.


تحقق سريع​

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

  1. كيف يمثل LoRA تحديثات الأوزان؟
  2. لماذا يتم تهيئة B لتكون صفر؟
  3. ماذا يعني "الترتيب المنخفض" في سياق LoRA؟