Мухаммед Фави
Код doi:
Исследование препринта doi:
Этот репо содержит код для исследовательской статьи Curlora, нового подхода к тонкой настройке моделей крупных языков (LLMS), который использует разложение матрицы Cur в контексте адаптации с низким уровнем ранга (LORA). Наш метод решает две критические проблемы в точной настройке LLM: смягчение катастрофического забывания во время постоянного обучения и уменьшение количества обучаемых параметров. Мы предлагаем уникальную модификацию процесса разложения CUR, чтобы обеспечить более эффективный и стабильный способ адаптации LLM к новым задачам без ущерба для каких -либо существующих знаний. Мы демонстрируем эксперименты по нескольким наборам данных, которые Curlora превосходит стандартную Lora в смягчении катастрофического забывания. Он поддерживает стабильность и производительность модели по задачам, значительно уменьшая количество обучаемых параметров. Наши результаты показывают, что Курлора достигает превосходной точности и показателей недоумения по сравнению с Лорой, особенно в сценариях с ограниченными данными.
CURLoRA.pdf : исследовательская статья, в которой подробно описывается подход Curlora.code/ : каталог, содержащий реализацию Курлоры и экспериментов.code/curlora.py : содержащий классы Curlora.code/utils.py : вспомогательные функции.code/lora.py : классы LORA.code/curlora_experiment.ipynb : эксперимент Curlora с Mistral 7B (тонкая настройка MRPC, SST-2 и Sentiment140).code/curlora_experiment-gpt.ipynb : эксперимент Curlora с GPT2-Large (тонкая настройка на MRPC, SST-2 и Sentiment140).code/squad_gpt-curlora.ipynb : тонкая настройка GPT2-Large для Q & A с Curlora и SftTrainer в наборе данных Squad. Сначала мы устанавливаем требования
pip3 install -r code/requirements.txtВсе вспомогательные функции Curlora определены в Code/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" )Теперь у вас есть модель со слоями Curlora, применяемыми к слоям внимания (ключ, значение и запрос), которые вы можете использовать для нормальной настройки или вывода.
Возможно, вам понадобится знать, как называется слой, чтобы вы могли правильно его заменить. Например, 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 ))Пожалуйста, обрати внимание:
Этот проект лицензирован по лицензии MIT - для получения подробной информации см. Файл лицензии.
Если вы обнаружите, что Curlora Research или Code полезны, пожалуйста, рассмотрите возможность их ссылки.
@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
Вклад и идеи будут высоко оценены