Home
Login

مكتبة LoRA مفتوحة المصدر من Microsoft، تنفذ تقنية التكيف منخفض الرتبة لنماذج اللغة الكبيرة، مما يقلل بشكل كبير من معلمات التدريب أثناء الضبط الدقيق للنموذج.

MITPython 12.1kmicrosoftLoRA Last Updated: 2024-12-17

نظرة عامة على مشروع Microsoft LoRA

Microsoft LoRA عبارة عن مكتبة Python مفتوحة المصدر من Microsoft، تنفذ تقنية "LoRA: Low-Rank Adaptation of Large Language Models" (تكييف منخفض الرتبة للنماذج اللغوية الكبيرة). يوفر هذا المشروع حلاً ثوريًا للضبط الدقيق الفعال للنماذج اللغوية الكبيرة.

عنوان المشروع: https://github.com/microsoft/LoRA

عنوان الورقة البحثية: https://arxiv.org/abs/2106.09685

المبدأ التقني الأساسي

مقدمة إلى تقنية LoRA

LoRA (Low-Rank Adaptation) هي طريقة ضبط دقيق فعالة للمعلمات، وتتمثل فكرتها الأساسية في:

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

المزايا التقنية

  1. كفاءة عالية جدًا في المعلمات
  • مقارنة بالضبط الدقيق الكامل لـ GPT-3 175B، يمكن لـ LoRA تقليل معلمات التدريب بمقدار 10000 مرة.
  • تقليل متطلبات ذاكرة GPU بمقدار 3 مرات.
  1. الحفاظ على أداء ممتاز
  • أداء مماثل أو أفضل من الضبط الدقيق الكامل على RoBERTa و DeBERTa و GPT-2 و GPT-3.
  • تحقيق نتائج ممتازة في اختبار GLUE القياسي.
  1. سهولة النشر
  • لا يوجد تأخير إضافي في الاستدلال.
  • دعم تبديل المهام بكفاءة.
  • تقليل كبير في متطلبات التخزين.

الأداء

نتائج اختبار GLUE القياسي

أظهرت LoRA أداءً ممتازًا في اختبار GLUE القياسي:

النموذج عدد معلمات التدريب دقة MNLI دقة SST-2 دقة MRPC
RoBERTa Base ضبط دقيق كامل 125M 87.6 94.8 90.2
RoBERTa Base LoRA 0.8M 87.6±.1 95.1±.2 89.7±.7
DeBERTa XXL ضبط دقيق كامل 1.5B 91.1 96.8 92.9
DeBERTa XXL LoRA 4.7M 91.9±.1 96.9±.2 92.6±.6

مهمة توليد النصوص GPT-2

أظهرت LoRA أيضًا أداءً ممتازًا في مهام توليد النصوص مثل E2E و DART و WebNLG:

الطريقة معلمات التدريب E2E (BLEU) DART (BLEU) WebNLG (BLEU)
GPT-2 M ضبط دقيق كامل 354.92M 68.2 46.0 47.6
GPT-2 M LoRA 0.35M 70.4±.1 47.1±.2 55.3±.2

هيكل المشروع

microsoft/LoRA/
├── loralib/           # الكود المصدري للمكتبة الأساسية
├── examples/
│   ├── NLG/          # مثال على توليد اللغة الطبيعية GPT-2
│   └── NLU/          # مثال على فهم اللغة الطبيعية RoBERTa/DeBERTa
├── README.md
└── setup.py

التثبيت والاستخدام

طريقة التثبيت

pip install loralib

# أو التثبيت من المصدر
pip install git+https://github.com/microsoft/LoRA

مثال على الاستخدام الأساسي

1. استبدال الطبقات الخطية

# ===== قبل التعديل =====
# layer = nn.Linear(in_features, out_features)

# ===== بعد التعديل =====
import loralib as lora
layer = lora.Linear(in_features, out_features, r=16)

2. تحديد المعلمات القابلة للتدريب

import loralib as lora

model = BigModel()
# تعيين المعلمات التي تحتوي على "lora_" فقط على أنها قابلة للتدريب
lora.mark_only_lora_as_trainable(model)

# حلقة التدريب
for batch in dataloader:
    # عملية التدريب العادية
    pass

3. حفظ وتحميل نقاط التفتيش

# حفظ معلمات LoRA
torch.save(lora.lora_state_dict(model), 'lora_checkpoint.pt')

# تحميل النموذج المدرب مسبقًا
model.load_state_dict(torch.load('pretrained.pt'), strict=False)
# تحميل معلمات LoRA
model.load_state_dict(torch.load('lora_checkpoint.pt'), strict=False)

أنواع الطبقات المدعومة

تدعم مكتبة LoRA حاليًا أنواع الطبقات التالية:

  • nn.Linearlora.Linear
  • nn.Embeddinglora.Embedding
  • nn.Conv2dlora.Conv2d
  • lora.MergedLinear (تستخدم لطبقات خطية مدمجة مثل إسقاط QKV)

ميزات متقدمة

1. دعم الطبقات الخطية المدمجة

# لسيناريوهات مثل إسقاط QKV
qkv_proj = lora.MergedLinear(
    d_model, 3*d_model, 
    r=8, 
    enable_lora=[True, False, True]  # تطبيق LoRA على Q و V فقط
)

2. تدريب متجه التحيز

# تدريب التحيزات المتعلقة بـ LoRA
lora.mark_only_lora_as_trainable(model, bias='lora_only')

# تدريب جميع التحيزات
lora.mark_only_lora_as_trainable(model, bias='all')

3. دمج الأوزان في وقت الاستدلال

# وضع التقييم: دمج الأوزان، والقضاء على تأخير الاستدلال
model.eval()

# وضع التدريب: استعادة الحالة المنفصلة
model.train()

سيناريوهات التطبيق

  1. الضبط الدقيق للنماذج الكبيرة: تقليل تكاليف الضبط الدقيق بشكل كبير.
  2. التعلم متعدد المهام: تبديل المهام بكفاءة.
  3. البيئات محدودة الموارد: تقليل متطلبات الذاكرة والتخزين.
  4. تطوير النماذج الأولية السريع: تسريع عملية تكييف النموذج.

تكامل النظام البيئي

  • Hugging Face PEFT: تم دمجها الآن في مكتبة PEFT الخاصة بـ HF.
  • PyTorch ecosystem: متوافقة تمامًا مع إطار عمل PyTorch.
  • النماذج المدربة مسبقًا: تدعم مجموعة متنوعة من النماذج المدربة مسبقًا السائدة.

ملخص

يوفر مشروع Microsoft LoRA حلاً اختراقيًا للضبط الدقيق الفعال للنماذج اللغوية الكبيرة. من خلال تقنية التكييف منخفضة الرتبة الذكية، مع تقليل تكاليف الحساب والتخزين بشكل كبير، يتم الحفاظ على أداء النموذج الممتاز. لا يتمتع هذا المشروع بقيمة أكاديمية مهمة فحسب، بل يوفر أيضًا مسارًا تقنيًا قابلاً للتطبيق للتطبيقات الصناعية العملية، وهو عمل تاريخي في مجال الضبط الدقيق الفعال للمعلمات.

Star History Chart