محمد فاوي
رمز doi:
البحث preprint doi:
يحتوي هذا الريبو على رمز ورقة أبحاث Curlora ، وهو نهج جديد لضبط نماذج اللغة الكبيرة (LLMS) التي تستفيد من تحلل المصفوفة CUR في سياق التكيف المنخفض (LORA). تعالج طريقتنا تحديين مهمتين في صقل LLM: التخفيف من النسيان الكارثي أثناء التعلم المستمر وتقليل عدد المعلمات القابلة للتدريب. نقترح تعديلًا فريدًا لعملية تحلل CUR لتمكين طريقة أكثر كفاءة واستقرار لتكييف LLMs مع مهام جديدة دون المساس بأي معرفة موجودة. نوضح من خلال التجارب على مجموعات بيانات متعددة أن Curlora يتفوق على Lora القياسي في تخفيف نسيان الكارثي. يحافظ على استقرار النموذج والأداء عبر المهام مع تقليل عدد المعلمات القابلة للتدريب بشكل كبير. تظهر نتائجنا أن Curlora يحقق دقة فائقة وعشرات في الحيرة مقارنةً بـ Lora ، وخاصة في السيناريوهات ذات البيانات المحدودة.
CURLoRA.pdf : ورقة البحث التي تفصل نهج كورلور.code/ : الدليل الذي يحتوي على تنفيذ curlora والتجارب.code/curlora.py : يحتوي على فئات curlora.code/utils.py : وظائف المساعد.code/lora.py : فئات Lora.code/curlora_experiment.ipynb : تجربة curlora مع Mistral 7b (صقلها على MRPC ، SST-2 و Sument140).code/curlora_experiment-gpt.ipynb : تجربة curlora مع GPT2-LARGE (صقلها على MRPC ، SST-2 و SINITIME140).code/squad_gpt-curlora.ipynb : صفق GPT2-LARGE لـ Q&A مع Curlora و Sfttrainer على مجموعة بيانات Squad. أولاً نقوم بتثبيت المتطلبات
pip3 install -r code/requirements.txtيتم تعريف جميع وظائف وكورلورا المساعد والفئات في الكود/curlora.py و code/utils.py .
قم بتحميل النموذج وتطبيق curlora
from transformers import AutoTokenizer , AutoModelForCausalLM
from utils import *
model_name = "gpt2-large"
model = AutoModelForCausalLM . from_pretrained ( model_name )
model . to ( "cuda" ) # this will make all existing layers in CUDA
# turning off grad for all layers
for param in model . parameters ():
param . requires_grad = False
# replace original Q,K,V layers with CURLoRA (GPT2-Large specific)
# refer to utils.py for a more general way
for name , module in model . named_modules ():
if isinstance ( module , type ( model . transformer . h [ 0 ]. attn )):
# rank = 24, alpha = 1
module . c_attn = LinearWithCURLoRA ( module . c_attn , 24 , 1 )
# now look at how many CURLoRA parameters to be trained
total_params = sum ( p . numel () for p in model . parameters () if p . requires_grad )
print ( f"Total trainable parameters after: { total_params :, } " )
# making sure CURLoRA layers are on CUDA as well
model . to ( "cuda" )الآن لديك النموذج مع طبقات الكورلور التي يتم تطبيقها على طبقات الانتباه (المفتاح والقيمة والاستعلام) والتي يمكنك استخدامها إما للضبط أو الاستدلال بشكل طبيعي.
قد تحتاج إلى معرفة كيفية استدعاء الطبقة بحيث يمكنك استبدالها بشكل صحيح. على سبيل المثال ، يمكن العثور على Q ، K ، V في Mistral عبر:
for name , module in model . named_children ():
if any ( l in name for l in [ "q_proj" , "v_proj" , "k_proj" ]):
setattr ( model , name , LinearWithCURLoRA ( module , rank , alpha ))يرجى الملاحظة:
تم ترخيص هذا المشروع بموجب ترخيص معهد ماساتشوستس للتكنولوجيا - راجع ملف الترخيص للحصول على التفاصيل.
إذا وجدت أبحاث Curlora أو رمز مفيدة ، فيرجى التفكير في الاستشهاد بها.
@software { Fawi_CURLoRA_Leveraging_CUR_2024 ,
author = { Fawi, Muhammad } ,
title = { {CURLoRA: Leveraging CUR Matrix Decomposition for
Stable LLM Continual Fine-Tuning and Catastrophic
Forgetting Mitigation} } ,
month = jul,
year = 2024 ,
publisher = { Zenodo } ,
version = { v4.0.0 } ,
doi = { 10.5281/zenodo.12729738 } ,
url = { https://zenodo.org/doi/10.5281/zenodo.12729738 }
} Fawi, M. (2024). CURLoRA: Leveraging CUR Matrix Decomposition for Stable LLM Continual Fine-Tuning and Catastrophic Forgetting Mitigation (v4.0.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.12729738
@misc { fawi_2024_12730055 ,
author = { Fawi, Muhammad } ,
title = { {CURLoRA: Leveraging CUR Matrix Decomposition for
Stable LLM Continual Fine-Tuning and Catastrophic
Forgetting Mitigation} } ,
month = jul,
year = 2024 ,
publisher = { Zenodo } ,
doi = { 10.5281/zenodo.12730055 } ,
url = { https://doi.org/10.5281/zenodo.12730055 }
} Fawi, M. (2024). CURLoRA: Leveraging CUR Matrix Decomposition for Stable LLM Continual Fine-Tuning and Catastrophic Forgetting Mitigation. Zenodo. https://doi.org/10.5281/zenodo.12730055
المساهمة والأفكار ستكون موضع تقدير كبير