تخيّل أنك تريد تكييف نموذج لغوي ضخم لمهمة جديدة دون إعادة كتابة مليارات معاملاته: هذا بالضبط ما يتيحه LoRA (Low-Rank Adaptation، أي التكييف منخفض الرتبة). فبدلاً من تعديل الأوزان الأصلية، يتم تجميد النموذج المُدرَّب مسبقاً وإضافة مصفوفات صغيرة خفيفة قابلة للتدريب إليه، بحيث لا نصقل سوى جزء ضئيل من المعاملات.
الفكرة الرياضية
الحدس الجوهري هو أن تحديث الأوزان أثناء الصقل يمتلك رتبة جوهرية منخفضة، ويمكن بالتالي تقريبه بجداء مصفوفتين صغيرتين. فإذا كانت $W_0$ مصفوفة أوزان مُجمّدة، تُكتب النسخة المُكيَّفة كالتالي:
$$W = W_0 + \Delta W = W_0 + B A$$
حيث $A \in \mathbb{R}^{r \times d}$ و $B \in \mathbb{R}^{d \times r}$، مع رتبة $r \ll d$. تُدرَّب المصفوفتان $A$ و $B$ فقط. فعند $d = 4096$ و $r = 8$، ينخفض عدد المعاملات القابلة للتعلّم انخفاضاً هائلاً.
لماذا هو حاسم
- ذاكرة أقل: نخزّن بضعة ميغابايت من المُكيِّفات بدل تكرار النموذج كاملاً.
- النمطية: يمكن للنموذج الأساسي الواحد أن يستضيف عدة مُكيِّفات قابلة للتبديل حسب المهمة.
- دون أي زمن انتظار إضافي: بعد التدريب، يمكن دمج $B$ و $A$ داخل $W_0$.
| النهج | المعاملات المُدرَّبة | كلفة الذاكرة |
|---|---|---|
| الصقل الكامل | 100% | مرتفعة |
| LoRA | غالباً < 1% | منخفضة |
لقد شاعت هذه التقنية فكرة الصقل الميسور التكلفة، وتجمع نسختها QLoRA بينها وبين التكميم (Quantization) لتكييف نماذج ضخمة جداً على وحدة معالجة رسومية استهلاكية واحدة.
يحوّل LoRA تكييف النماذج العملاقة من ترف صناعي إلى عملية في متناول الجميع تقريباً.