نماذج اللغة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 هو تلك الدوّاسة: يترك الآلة الأصلية كما هي ويتعلّم تعديلاً صغيراً يُغيِّر سلوك النموذج بمجرد توصيله. افصله، وسيعود البيانو كما كان تماماً. وصِّل دوّاسة مختلفة، وستعزف البلوز.
المشكلة: الضبط الدقيق مُكلِف ومُهدِر للموارد
الطريقة المعتادة لتكييف هي ما يُعرف بـالضبط الدقيق الكامل: نأخذ الأوزان الأصلية ونُحدِّث كل بناءً على المحسوبة من بيانات المهمة الجديدة. الهدف الرياضي هو تعظيم اللوغاريتم الشرطي لدالة :
لكن في نموذج بحجم GPT-3 الذي يضم 175 مليار معامل، هذه الطريقة تفرض ثلاث تكاليف باهظة:
- التخزين: كل نسخة مُضبَّطة تحتاج نحو 350 غيغابايت. عشر مهام وحدها تعني 3.5 تيرابايت من .
- الذاكرة: Adam يحتفظ بمتجهَي حالة إضافيَّين لكل معامل، فيحتاج التدريب إلى نحو 1.2 تيرابايت من .
- لا مشاركة: المعاملات الـ175 مليار تُنسَخ بالكامل لكل مهمة على حدة، رغم أن الجزء الأكبر من المعرفة المُكتسَبة مشترك بين المهام.
الأساليب البديلة الموفِّرة للمعاملات حاولت حل هذه المشكلة لكنها جاءت بتنازلات. الطبقات الوسيطة تُدخِل وحدات صغيرة بين طبقات ، لكنها تزيد العمق التسلسلي وترفع زمن الاستدلال بنسبة تصل إلى 30% في التطبيقات الآنية. أما الضبط بالبادئة فيُضيف قابلة للتدريب إلى بداية المُدخَل، لكنها تأكل من طول السياق المتاح للمهمة الفعلية وتُعطي نتائج ضعيفة حين تكون البيانات قليلة.
الفكرة المحورية: تحديثات الأوزان تقع في فضاء منخفض الأبعاد
السؤال الطبيعي هو: لماذا ينجح LoRA أصلاً؟ الجواب ينطلق من ملاحظة في أبحاث سابقة: رغم أن النماذج اللغوية الكبيرة تضم مليارات المعاملات، إلا أن الفضاء الذي تستخدمه فعلياً عند التكيّف مع مهمة جديدة صغير بشكل مفاجئ. أظهر Aghajanyan وزملاؤه (2020) أن النماذج المُدرَّبة مسبقاً تمتلك — أي يمكن إسقاط فضاء المعاملات على أصغر بكثير والاستمرار في التعلّم بفعالية.
LoRA يأخذ هذه الملاحظة خطوة أبعد: إن كان النموذج الكامل يتحرك على سطح منخفض الأبعاد، فإن التغيير في الأوزان أثناء التكيّف () ينبغي أن يكون منخفض الرُّتبة أيضاً. الفكرة بسيطة: النموذج المُدرَّب مسبقاً يعرف تقريباً كل ما يحتاجه — كل ما يلزم هو دفعة خفيفة في اتجاهات محدّدة داخل فضاء الأوزان. هذه الاتجاهات القليلة تُشكِّل فضاءً فرعياً .
أكّد المؤلفون ذلك تجريبياً: حتى مع رُتبة لا تتجاوز أو ، حقّق LoRA نتائج مكافئة لـالضبط الدقيق الكامل على GPT-3 بحجم 175 مليار عبر عدة مقاييس. والمتجهات المفردة العليا () لمصفوفات التكيّف المُدرَّبة برُتَب مختلفة تتداخل بشكل كبير، مما يُثبت أن المعلومات المفيدة تتركّز في أبعاد قليلة جداً.
كيف يعمل LoRA: إعادة صياغة المعاملات
الفكرة في غاية البساطة. لنأخذ مُدرَّبة مسبقاً . بدلاً من تعلّم تحديث كامل يتضمّن معاملاً، نُقيِّد ليكون جداءً مُنخَفِض الرُّتبة:
حيث و، والشرط أن . بهذا الشكل ينخفض عدد من إلى فقط.
أثناء ، يصبح الناتج:
لاحظ أن والتحديث منخفض الرُّتبة يعملان على المُدخَل نفسه بالتوازي، ثم تُجمَع مخرجاتهما. هذا هو جوهر التصميم: لا عمق تسلسلي إضافي كما في الطبقات الوسيطة.
التهيئة: تُهيَّأ بقيم عشوائية من توزيع غاوسي، وتُهيَّأ بالأصفار، وبالتالي يكون عند بداية التدريب. أي أن النموذج يبدأ مُطابقاً تماماً للنموذج الأصلي. ثم يُطبَّق على لضمان استقرار التدريب مهما تغيّرت قيمة .
أين نُضيف LoRA داخل المُحوِّل
كل طبقة في المُحوِّل تحتوي على أربع مصفوفات أوزان في وحدة ( و و و) ومصفوفتين في كتلة . جرّب المؤلفون تطبيق LoRA على تركيبات مختلفة من هذه المصفوفات، ووجدوا أن تكييف مصفوفتَي و معاً يُعطي أفضل النتائج ضمن ميزانية معاملات محدّدة.
هذه نتيجة لافتة: حتى رُتبة بسيطة مثل موزَّعة على مصفوفتين تكفي لالتقاط المعلومات الضرورية — والأفضل أن نُكيِّف مصفوفات أكثر برُتبة أقل بدلاً من تركيز الميزانية في مصفوفة واحدة برُتبة أعلى. عملياً، بتطبيق على و في الطبقات الـ96 جميعها لنموذج GPT-3، لا يتجاوز عدد المعاملات القابلة للتدريب 18 مليوناً — أي نحو 0.01% فقط من النموذج الكامل.
أما طبقات التغذية الأمامية فبقيت مُجمَّدة في تجارب الورقة. ورغم أن تكييفها على الأرجح سيُحسّن الأداء أكثر، إلا أن مصفوفات الانتباه وحدها أثبتت أنها كافية لمطابقة جودة الضبط الدقيق الكامل.
نشر بلا تأخير: ادمج وبدِّل
هنا تظهر أكثر ميزات LoRA أناقةً. أثناء التدريب، نُبقي و منفصلتين حتى نستطيع حساب مُتجهات الميل لـ و فقط. لكن عند النشر، كل ما نفعله هو حساب:
ثم نستبدل مصفوفة الأوزان الأصلية بهذه النسخة المدمُوجة. النموذج الناتج له البنية نفسها تماماً — لا طبقات وسيطة ولا وحدات إضافية ولا حسابات مُضافة. الاستدلال يعمل بالسرعة ذاتها التي يعمل بها نموذج خضع لـالضبط الدقيق الكامل.
وللانتقال إلى مهمة أخرى، نطرح من لاستعادة ، ثم نُضيف جديدة للمهمة المطلوبة. مصفوفات LoRA لمهمة واحدة على GPT-3 بحجم 175 مليار لا تتجاوز 35 ميغابايت — أي أن مئة مُحوِّل خاص بالمهام مع النموذج الأساسي تُخزَّن في نحو 354 غيغابايت فقط، مقارنة بـ35 تيرابايت تقريباً لو احتجنا نسخة كاملة لكل مهمة.
ما الذي تتعلّمه ΔW فعلاً
درس المؤلفون العلاقة بين وبين المصفوفة الأصلية ، وقدّمت نتائجهم نافذة لفهم لماذا ينجح التكيّف من الأساس. خرجوا بثلاث نتائج جوهرية:
- مرتبطة بـ لكنها ليست تكراراً لها. مصفوفة التكيّف تُضخِّم اتجاهات محدّدة داخل ، لكن بالذات تلك الاتجاهات التي لم يُبرزها النموذج الأصلي. كأنها تكتشف تعلّمها النموذج أثناء لكنه لم يمنحها الأولوية.
- كبير جداً. عند ، تُضخِّم مصفوفة التكيّف الاتجاهات المختارة بعامل يقارب 21 ضعفاً. أي أن النموذج المُدرَّب مسبقاً كان يحمل المعرفة المطلوبة للمهمة أصلاً — لكنه كان يحتاج فقط لرفع هذه الإشارات المحدّدة.
- كل مهمة تُضخِّم اتجاهات مختلفة. وهذا يُفسِّر كيف يمكن لنموذج عام واحد أن يتكيّف مع مهام متعددة ومتنوّعة: كل مهمة تحتاج مجموعة صغيرة مختلفة من الاتجاهات في فضاء الأوزان لتُبرَز.
هذا التحليل يكشف صورة بديعة: النموذج الكبير المُدرَّب مسبقاً يشبه سكين الجيب متعدد الأدوات وكل أدواته مطوية بالداخل. LoRA لا يُضيف أدوات جديدة — بل يفتح الأداة المناسبة لكل مهمة.
الفكرة ذاتها في الكود
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
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 بقيمة على GPT-3 — أي 4.7 مليون معامل فحسب، ما يُعادل 0.0027% من النموذج — حقّق 73.4% على WikiSQL، بفارق 0.4% فقط عن الضبط الدقيق الكامل.
على عكس الضبط بالبادئة، لا يتراجع أداء LoRA عند زيادة عدد المعاملات القابلة للتدريب. وعلى خلاف الطبقات الوسيطة، لا يُضيف أي تأخير في الاستدلال، لأن المصفوفات منخفضة الرُّتبة تُدمَج في الأوزان الأساسية عند النشر.
لماذا كان LoRA مُهمّاً
2019
الضبط بالطبقات الوسيطة (Houlsby وآخرون)
أضافت وحدات عنق زجاجة صغيرة بين طبقات المُحوِّل. نجحت في تقليل عدد المعاملات المُدرَّبة لكنها زادت العمق التسلسلي ورفعت زمن الاستدلال.
2021
الضبط بالبادئة (Li & Liang)
أضافت رموزاً مستمرة قابلة للتدريب في بداية المُدخَل. لا تزيد زمن الاستدلال، لكنها تستهلك جزءاً من طول السياق المتاح وكان ضبطها صعباً.
2021
LoRA (هذه الورقة)
جمّدت جميع الأوزان وأضافت تحديثات منخفضة الرُّتبة تعمل بالتوازي. لا زيادة في زمن الاستدلال ولا انتقاص من طول السياق، مع جودة مكافئة أو أفضل من الضبط الدقيق الكامل.
2023
QLoRA (Dettmers وآخرون)
جمعت بين LoRA وتكميم الأوزان المُجمَّدة إلى 4 بتات. أتاحت ضبط نموذج بـ65 مليار معامل على معالج رسومي واحد بذاكرة 48 غيغابايت — مما وسّع دائرة الاستخدام أكثر.
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.
مصطلحات هذه الورقة
- التكيّف مُنخَفِض الرُّتبةLow-Rank Adaptation
- التفكيك مُنخَفِض الرُّتبةLow-Rank Decomposition
- البُعد الجوهريIntrinsic Dimension
- الرُّتبة الجوهريةIntrinsic Rank
- مُعامِل التضخيمAmplification Factor
- معامل القياسScaling Factor
- إسقاط الاستعلامQuery Projection
- إسقاط القيمةValue Projection
- تبديل المهامTask Switching
- QLoRAQLoRA