Muhammad Fawi
Kode doi:
Riset preprint doi:
Repo ini berisi kode untuk makalah penelitian Curlora, pendekatan baru untuk menyempurnakan model bahasa besar (LLM) yang memanfaatkan dekomposisi matriks cur dalam konteks adaptasi rendah (LORA). Metode kami membahas dua tantangan penting dalam penyempurnaan LLM: mengurangi lupa bencana selama pembelajaran terus-menerus dan mengurangi jumlah parameter yang dapat dilatih. Kami mengusulkan modifikasi unik pada proses dekomposisi CUR untuk memungkinkan cara yang lebih efisien dan stabil untuk mengadaptasi LLMS dengan tugas -tugas baru tanpa mengorbankan pengetahuan yang ada. Kami menunjukkan melalui eksperimen pada beberapa set data yang mengungguli LORA standar dalam mengurangi lupa bencana. Ini mempertahankan stabilitas model dan kinerja di seluruh tugas sambil secara signifikan mengurangi jumlah parameter yang dapat dilatih. Hasil kami menunjukkan bahwa Curlora mencapai akurasi yang unggul dan skor kebingungan dibandingkan dengan LORA, terutama dalam skenario dengan data yang terbatas.
CURLoRA.pdf : Makalah penelitian yang merinci pendekatan Curlora.code/ : Direktori yang berisi implementasi Curlora dan eksperimen.code/curlora.py : Mengandung kelas Curlora.code/utils.py : Fungsi pembantu.code/lora.py : Kelas Lora.code/curlora_experiment.ipynb : Eksperimen Curlora dengan Mistral 7B (fine-tuning pada MRPC, SST-2 dan Sentiment140).code/curlora_experiment-gpt.ipynb : Eksperimen Curlora dengan GPT2-Large (fine-tuning pada MRPC, SST-2 dan sentimen140).code/squad_gpt-curlora.ipynb : Menyempurnakan GPT2-Large untuk T&J dengan Curlora dan Sfttrainer pada dataset skuad. Pertama kami memasang persyaratan
pip3 install -r code/requirements.txtSemua fungsi dan kelas pembantu Curlora didefinisikan dalam kode/curlora.py dan kode/utils.py .
Muat model dan terapkan 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" )Sekarang Anda memiliki model dengan lapisan curlora yang diterapkan pada lapisan perhatian (kunci, nilai dan permintaan) yang dapat Anda gunakan untuk penyetelan atau inferensi secara normal.
Anda mungkin perlu tahu bagaimana lapisan dipanggil sehingga Anda dapat menggantinya dengan benar. Misalnya, Q, K, V di Mistral dapat ditemukan melalui:
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 ))Harap dicatat:
Proyek ini dilisensikan di bawah lisensi MIT - lihat file lisensi untuk detailnya.
Jika Anda menemukan penelitian atau kode Curlora bermanfaat, harap pertimbangkan mengutipnya.
@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
Kontribusi dan ide akan sangat dihargai