نماذج اللغة2021متوسط11 دقيقة قراءة

LoRA: التكيّف مُنخَفِض الرُّتبة للنماذج اللغوية الكبيرة

LoRA: Low-Rank Adaptation of Large Language Models

Hu, E. J. · Shen, Y. · Wallis, P. · Allen-Zhu, Z. · Li, Y. · Wang, S. · Wang, L. · Chen, W. — ICLR

المشكلة

حين نريد تخصيص نموذج بحجم GPT-3 — أي 175 مليار معامل — بالطريقة التقليدية، فهذا يعني إعادة تدريب كل وزن في وتخزين نسخة كاملة بحجم 350 غيغابايت لكل مهمة. لو عندنا عشر مهام فقط، سنحتاج 3.5 تيرابايت من مساحة التخزين، والذاكرة اللازمة لحالات المُحسِّن تجعل التدريب غير عملي لمعظم الفرق. الأساليب البديلة الموفِّرة للمعاملات — — إما تزيد زمن أو تأكل من طول السياق المتاح، وفي الغالب لا تصل لجودة .

الإسهام

يُجمِّد LoRA جميع أوزان النموذج الأصلي ويُضيف بجانب كل مصفوفة أوزان في المُحوِّل زوجاً من المصفوفات الصغيرة القابلة للتدريب (B·A) ذات رُتبة منخفضة. ولأن التعديل ΔW = BA يقع في فضاء منخفض الأبعاد جداً (غالباً r بين 1 و4)، ينخفض عدد المعاملات المُدرَّبة بمقدار 10,000 ضعف مع الحفاظ على جودة مكافئة أو أفضل من الضبط الدقيق الكامل. والأجمل أنه عند النشر تُدمَج BA في الأوزان الأصلية W₀، فلا يضيف أي تأخير في الاستدلال — والانتقال بين المهام يصبح مجرد تبديل ملف بحجم 35 ميغابايت بدلاً من تحميل نموذج كامل بحجم 350 غيغابايت.

الأثر

جعل LoRA تخصيص النماذج اللغوية الكبيرة في متناول أي شخص يملك معالج رسومات واحداً. وسرعان ما أصبح المعيار الفعلي لتكييف هذه النماذج — سواء في توليد الصور عبر Stable Diffusion أو في روبوتات المحادثة المؤسسية. والفكرة الجوهرية بأن تحديثات الأوزان تعيش في فضاء فرعي منخفض الأبعاد تحوّلت إلى أساس بحثي أنتج وLoRA+ وDoRA ومئات الأساليب المشتقة. بأكثر من 9,000 اقتباس، فتح LoRA الباب أمام تكييف نماذج المليارات للجميع.

تخيّل بيانو ضخماً بـ175 مليار وتر، كلُّ وتر جرى ضبطه على مدار سنوات من الحفلات. لو أردتَ العزف بأسلوب الجاز بدلاً من الكلاسيكي، لن تُعيد ضبط كل وتر — بل تُوصِّل دوّاسة مؤثرات صغيرة بمخرج البيانو. هذه الدوّاسة فيها بضعة مقابض فقط ()، لكنها تُعيد تشكيل صوت البيانو بالكامل.

LoRA هو تلك الدوّاسة: يترك الآلة الأصلية كما هي ويتعلّم تعديلاً صغيراً يُغيِّر سلوك النموذج بمجرد توصيله. افصله، وسيعود البيانو كما كان تماماً. وصِّل دوّاسة مختلفة، وستعزف البلوز.

المشكلة: الضبط الدقيق مُكلِف ومُهدِر للموارد

الطريقة المعتادة لتكييف هي ما يُعرف بـالضبط الدقيق الكامل: نأخذ الأوزان الأصلية W0W_0 ونُحدِّث كل بناءً على المحسوبة من بيانات المهمة الجديدة. الهدف الرياضي هو تعظيم اللوغاريتم الشرطي لدالة :

maxΦ(x,y)Zt=1ylogPΦ(ytx,y<t)\max_{\Phi} \sum_{(x,y)\in Z}\sum_{t=1}^{|y|} \log P_{\Phi}(y_t \mid x, y_{<t})

لكن في نموذج بحجم GPT-3 الذي يضم 175 مليار معامل، هذه الطريقة تفرض ثلاث تكاليف باهظة:

  • التخزين: كل نسخة مُضبَّطة تحتاج نحو 350 غيغابايت. عشر مهام وحدها تعني 3.5 تيرابايت من .
  • الذاكرة: Adam يحتفظ بمتجهَي حالة إضافيَّين لكل معامل، فيحتاج التدريب إلى نحو 1.2 تيرابايت من .
  • لا مشاركة: المعاملات الـ175 مليار تُنسَخ بالكامل لكل مهمة على حدة، رغم أن الجزء الأكبر من المعرفة المُكتسَبة مشترك بين المهام.

الأساليب البديلة الموفِّرة للمعاملات حاولت حل هذه المشكلة لكنها جاءت بتنازلات. الطبقات الوسيطة تُدخِل وحدات صغيرة بين طبقات ، لكنها تزيد العمق التسلسلي وترفع زمن الاستدلال بنسبة تصل إلى 30% في التطبيقات الآنية. أما الضبط بالبادئة فيُضيف قابلة للتدريب إلى بداية المُدخَل، لكنها تأكل من طول السياق المتاح للمهمة الفعلية وتُعطي نتائج ضعيفة حين تكون البيانات قليلة.

افتح في المختبر
قارن تكاليف التخزين والذاكرة بين الضبط الدقيق الكامل وLoRA عبر أحجام النماذج المختلفة.
تستيقظ التجربة عند وصولك…

الفكرة المحورية: تحديثات الأوزان تقع في فضاء منخفض الأبعاد

السؤال الطبيعي هو: لماذا ينجح LoRA أصلاً؟ الجواب ينطلق من ملاحظة في أبحاث سابقة: رغم أن النماذج اللغوية الكبيرة تضم مليارات المعاملات، إلا أن الفضاء الذي تستخدمه فعلياً عند التكيّف مع مهمة جديدة صغير بشكل مفاجئ. أظهر Aghajanyan وزملاؤه (2020) أن النماذج المُدرَّبة مسبقاً تمتلك — أي يمكن إسقاط فضاء المعاملات على أصغر بكثير والاستمرار في التعلّم بفعالية.

LoRA يأخذ هذه الملاحظة خطوة أبعد: إن كان النموذج الكامل يتحرك على سطح منخفض الأبعاد، فإن التغيير في الأوزان أثناء التكيّف (ΔW\Delta W) ينبغي أن يكون منخفض الرُّتبة أيضاً. الفكرة بسيطة: النموذج المُدرَّب مسبقاً يعرف تقريباً كل ما يحتاجه — كل ما يلزم هو دفعة خفيفة في اتجاهات محدّدة داخل فضاء الأوزان. هذه الاتجاهات القليلة تُشكِّل فضاءً فرعياً .

أكّد المؤلفون ذلك تجريبياً: حتى مع رُتبة لا تتجاوز r=1r = 1 أو r=2r = 2، حقّق LoRA نتائج مكافئة لـالضبط الدقيق الكامل على GPT-3 بحجم 175 مليار عبر عدة مقاييس. والمتجهات المفردة العليا () لمصفوفات التكيّف المُدرَّبة برُتَب مختلفة تتداخل بشكل كبير، مما يُثبت أن المعلومات المفيدة تتركّز في أبعاد قليلة جداً.

افتح في المختبر
اسحب شريط الرُّتبة لترى كيف أن r = 1 أو 2 فقط يلتقط الجزء الأكبر من إشارة التكيّف. أعمدة التداخل تُبيّن مدى تشابه الفضاء الفرعي بين الرُّتَب المختلفة.
تستيقظ التجربة عند وصولك…

كيف يعمل LoRA: إعادة صياغة المعاملات

الفكرة في غاية البساطة. لنأخذ مُدرَّبة مسبقاً W0Rd×kW_0 \in \mathbb{R}^{d \times k}. بدلاً من تعلّم تحديث كامل ΔWRd×k\Delta W \in \mathbb{R}^{d \times k} يتضمّن d×kd \times k معاملاً، نُقيِّد ΔW\Delta W ليكون جداءً مُنخَفِض الرُّتبة:

ΔW=BA\Delta W = BA

حيث BRd×rB \in \mathbb{R}^{d \times r} وARr×kA \in \mathbb{R}^{r \times k}، والشرط أن rmin(d,k)r \ll \min(d, k). بهذا الشكل ينخفض عدد من d×kd \times k إلى r×(d+k)r \times (d + k) فقط.

أثناء ، يصبح الناتج:

h=W0x+ΔWx=W0x+BAxh = W_0 x + \Delta W x = W_0 x + B A x

لاحظ أن W0W_0 والتحديث منخفض الرُّتبة BABA يعملان على المُدخَل نفسه xx بالتوازي، ثم تُجمَع مخرجاتهما. هذا هو جوهر التصميم: لا عمق تسلسلي إضافي كما في الطبقات الوسيطة.

التهيئة: تُهيَّأ AA بقيم عشوائية من توزيع غاوسي، وتُهيَّأ BB بالأصفار، وبالتالي يكون ΔW=BA=0\Delta W = BA = 0 عند بداية التدريب. أي أن النموذج يبدأ مُطابقاً تماماً للنموذج الأصلي. ثم يُطبَّق α/r\alpha / r على ΔWx\Delta W x لضمان استقرار التدريب مهما تغيّرت قيمة rr.

h=W0x+αrBAxh = W_0 x + \frac{\alpha}{r} B A x
التمرير الأمامي لـ LoRA — المعادلة الكاملةW₀ = الأوزان المُدرَّبة مسبقاً المُجمَّدة · B·A = التحديث منخفض الرُّتبة القابل للتدريب · α/r = ثابت القياس · المساران يعملان بالتوازي وتُجمَع مخرجاتهما
افتح في المختبر
انقر على كل مكوِّن لترى كيف تتضافرالأوزان المُجمَّدة W₀ مع مصفوفتَي التفكيك منخفض الرُّتبة B وA أثناء التمرير الأمامي.
تستيقظ التجربة عند وصولك…

أين نُضيف LoRA داخل المُحوِّل

كل طبقة في المُحوِّل تحتوي على أربع مصفوفات أوزان في وحدة (WqW_q وWkW_k وWvW_v وWoW_o) ومصفوفتين في كتلة . جرّب المؤلفون تطبيق LoRA على تركيبات مختلفة من هذه المصفوفات، ووجدوا أن تكييف مصفوفتَي WqW_q و WvW_v معاً يُعطي أفضل النتائج ضمن ميزانية معاملات محدّدة.

هذه نتيجة لافتة: حتى رُتبة بسيطة مثل r=4r = 4 موزَّعة على مصفوفتين تكفي لالتقاط المعلومات الضرورية — والأفضل أن نُكيِّف مصفوفات أكثر برُتبة أقل بدلاً من تركيز الميزانية في مصفوفة واحدة برُتبة أعلى. عملياً، بتطبيق r=4r = 4 على WqW_q وWvW_v في الطبقات الـ96 جميعها لنموذج GPT-3، لا يتجاوز عدد المعاملات القابلة للتدريب 18 مليوناً — أي نحو 0.01% فقط من النموذج الكامل.

أما طبقات التغذية الأمامية فبقيت مُجمَّدة في تجارب الورقة. ورغم أن تكييفها على الأرجح سيُحسّن الأداء أكثر، إلا أن مصفوفات الانتباه وحدها أثبتت أنها كافية لمطابقة جودة الضبط الدقيق الكامل.

افتح في المختبر
انقر على مصفوفات الأوزان المختلفة لترى أين تُوضَع مُحوِّلات LoRA. جرِّب تبديل التركيبات وراقب كيف يتغيّر عدد المعاملات القابلة للتدري.
تستيقظ التجربة عند وصولك…

نشر بلا تأخير: ادمج وبدِّل

هنا تظهر أكثر ميزات LoRA أناقةً. أثناء التدريب، نُبقي W0W_0 وBABA منفصلتين حتى نستطيع حساب مُتجهات الميل لـ AA وBB فقط. لكن عند النشر، كل ما نفعله هو حساب:

W=W0+BAW = W_0 + BA

ثم نستبدل مصفوفة الأوزان الأصلية بهذه النسخة المدمُوجة. النموذج الناتج له البنية نفسها تماماً — لا طبقات وسيطة ولا وحدات إضافية ولا حسابات مُضافة. الاستدلال يعمل بالسرعة ذاتها التي يعمل بها نموذج خضع لـالضبط الدقيق الكامل.

وللانتقال إلى مهمة أخرى، نطرح BABA من WW لاستعادة W0W_0، ثم نُضيف BAB'A' جديدة للمهمة المطلوبة. مصفوفات LoRA لمهمة واحدة على GPT-3 بحجم 175 مليار لا تتجاوز 35 ميغابايت — أي أن مئة مُحوِّل خاص بالمهام مع النموذج الأساسي تُخزَّن في نحو 354 غيغابايت فقط، مقارنة بـ35 تيرابايت تقريباً لو احتجنا نسخة كاملة لكل مهمة.

افتح في المختبر
تابع عملية الدمج: أثناء التدريب يبقى المساران منفصلين. اضغط «نشر» لدمج BA في W₀. اضغط «بدِّل المهمة» لتبديل مُحوِّلات LoRA.
تستيقظ التجربة عند وصولك…

ما الذي تتعلّمه ΔW فعلاً

درس المؤلفون العلاقة بين ΔW\Delta W وبين المصفوفة الأصلية WW، وقدّمت نتائجهم نافذة لفهم لماذا ينجح التكيّف من الأساس. خرجوا بثلاث نتائج جوهرية:

  • ΔW\Delta W مرتبطة بـ WW لكنها ليست تكراراً لها. مصفوفة التكيّف تُضخِّم اتجاهات محدّدة داخل WW، لكن بالذات تلك الاتجاهات التي لم يُبرزها النموذج الأصلي. كأنها تكتشف تعلّمها النموذج أثناء لكنه لم يمنحها الأولوية.
  • كبير جداً. عند r=4r = 4، تُضخِّم مصفوفة التكيّف الاتجاهات المختارة بعامل يقارب 21 ضعفاً. أي أن النموذج المُدرَّب مسبقاً كان يحمل المعرفة المطلوبة للمهمة أصلاً — لكنه كان يحتاج فقط لرفع هذه الإشارات المحدّدة.
  • كل مهمة تُضخِّم اتجاهات مختلفة. وهذا يُفسِّر كيف يمكن لنموذج عام واحد أن يتكيّف مع مهام متعددة ومتنوّعة: كل مهمة تحتاج مجموعة صغيرة مختلفة من الاتجاهات في فضاء الأوزان لتُبرَز.

هذا التحليل يكشف صورة بديعة: النموذج الكبير المُدرَّب مسبقاً يشبه سكين الجيب متعدد الأدوات وكل أدواته مطوية بالداخل. LoRA لا يُضيف أدوات جديدة — بل يفتح الأداة المناسبة لكل مهمة.

الفكرة ذاتها في الكود

التمرير الأمامي لـ LoRA بلغة NumPypython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import numpy as np

def lora_forward(x, W0, A, B, alpha, r):
    """
    x:  متجه/مصفوفة الدخل            (حجم_الدفعة, d_in)
    W0: أوزان مُجمَّدة (مُدرَّبة مسبقاً)  (d_out, d_in)
    A:  إسقاط لأسفل (منخفض الرُّتبة)    (r, d_in)   ← تهيئة غاوسية
    B:  إسقاط لأعلى (منخفض الرُّتبة)     (d_out, r)  ← تهيئة صفرية
    alpha: ثابت القياس
    r: رُتبة التحديث
    """
    # المسار الأصلي: مُجمَّد، لا نحسب له تدرّجات
    h_frozen = x @ W0.T

    # مسار LoRA: A وB فقط تتلقى التدرّجات
    h_lora = x @ A.T @ B.T   # x→(r)→(d_out)، عنق زجاجة!

    # الجمع مع معامل القياس
    return h_frozen + (alpha / r) * h_lora

# عند النشر، ادمج المصفوفات:
# W_merged = W0 + (alpha / r) * B @ A
# الآن الاستدلال ببساطة: h = x @ W_merged.T
# لا حسابات إضافية. لا تأخير. هذه هي الفكرة.

# للانتقال لمهمة أخرى:
# W0 = W_merged - (alpha / r) * B @ A   (استرجع الأوزان الأصلية)
# W_new = W0 + (alpha / r) * B_task2 @ A_task2

النتائج عبر أحجام النماذج

اختبر المؤلفون LoRA على أربع عائلات من النماذج — RoBERTa (125م/355م) وDeBERTa (1.5 مليار) وGPT-2 (345م/774م) وGPT-3 (175 مليار) — عبر مهام تمتد من فهم اللغة الطبيعية (مقياس ) إلى توليدها (E2E وWebNLG وDART).

على RoBERTa base بـ0.3 مليون معامل قابل للتدريب فقط، حقّق LoRA متوسط 87.2% على GLUE — متفوّقاً على الضبط الدقيق الكامل (86.4%) وعلى أساليب الطبقات الوسيطة (84.4–85.4%). وعلى GPT-3 بحجم 175 مليار، حقّق LoRA بـ4.7 مليون معامل نتائج مكافئة أو أفضل من الضبط الدقيق الكامل (175 مليار معامل) في مهام WikiSQL وMNLI وSAMSum. والنتيجة الأكثر لفتاً: LoRA بقيمة rv=2r_v = 2 على GPT-3 — أي 4.7 مليون معامل فحسب، ما يُعادل 0.0027% من النموذج — حقّق 73.4% على WikiSQL، بفارق 0.4% فقط عن الضبط الدقيق الكامل.

على عكس الضبط بالبادئة، لا يتراجع أداء LoRA عند زيادة عدد المعاملات القابلة للتدريب. وعلى خلاف الطبقات الوسيطة، لا يُضيف أي تأخير في الاستدلال، لأن المصفوفات منخفضة الرُّتبة تُدمَج في الأوزان الأساسية عند النشر.

افتح في المختبر
اضبط الرُّتبة r واختر مصفوفات الأوزان المراد تكييفها. راقب كيف يتغيّر عدد المعاملات ودقة الأداء — ولاحظ أن r = 1 أو 2 يُعطي نتائج ممتازة بالفعل.
تستيقظ التجربة عند وصولك…

لماذا كان LoRA مُهمّاً

  1. 2019

    الضبط بالطبقات الوسيطة (Houlsby وآخرون)

    أضافت وحدات عنق زجاجة صغيرة بين طبقات المُحوِّل. نجحت في تقليل عدد المعاملات المُدرَّبة لكنها زادت العمق التسلسلي ورفعت زمن الاستدلال.

  2. 2021

    الضبط بالبادئة (Li & Liang)

    أضافت رموزاً مستمرة قابلة للتدريب في بداية المُدخَل. لا تزيد زمن الاستدلال، لكنها تستهلك جزءاً من طول السياق المتاح وكان ضبطها صعباً.

  3. 2021

    LoRA (هذه الورقة)

    جمّدت جميع الأوزان وأضافت تحديثات منخفضة الرُّتبة تعمل بالتوازي. لا زيادة في زمن الاستدلال ولا انتقاص من طول السياق، مع جودة مكافئة أو أفضل من الضبط الدقيق الكامل.

  4. 2023

    QLoRA (Dettmers وآخرون)

    جمعت بين LoRA وتكميم الأوزان المُجمَّدة إلى 4 بتات. أتاحت ضبط نموذج بـ65 مليار معامل على معالج رسومي واحد بذاكرة 48 غيغابايت — مما وسّع دائرة الاستخدام أكثر.

  5. 2024

    LoRA+ وDoRA

    أظهر LoRA+ أن استخدام معدّلات تعلّم مختلفة لكل من A وB يُحسِّن الأداء. أما DoRA فقد فكّك الأوزان إلى مقدار واتجاه، مما قرّبه أكثر من جودة الضبط الدقيق الكامل.

تأثير LoRA تجاوز النماذج اللغوية بمراحل. أصبح الأسلوب المعتمد لتخصيص مُولِّدات الصور مثل Stable Diffusion، حيث يُدرِّب المستخدمون مُحوِّلات LoRA صغيرة لتوليد أنماط فنية أو شخصيات بعينها. وفي بيئات الشركات، يُنشَر واحد كقاعدة مشتركة، ثم تُضاف إليه مئات مُحوِّلات LoRA المتخصصة — واحد للمستندات القانونية، وآخر لخدمة العملاء، وثالث لتوليد الأكواد — وجميعها تتشارك ذاكرة المعالج الرسومي نفسها. فكرة أن التكيّف منخفض الرُّتبة بطبيعته فتحت اتجاهاً بحثياً لا يزال ينتج أساليب جديدة كل شهر.

المرجعHu, Shen, Wallis, Allen-Zhu, Li, Wang, Wang, Chen. LoRA: Low-Rank Adaptation of Large Language Models. ICLR, 2022.

مصطلحات هذه الورقة