Selamat datang di selective-peft-toolkit , implementasi resmi untuk makalah "langkah demi langkah membuka kedok untuk penyempurnaan parameter-efisien dari model bahasa besar" . Toolkit ini menyediakan kerangka kerja yang fleksibel untuk menyempurnakan model bahasa besar yang secara selektif menggunakan metode fine-tuning (PEFT) parameter-efisien selektif yang berbeda.
Toolkit ini mencakup metode PEFT berikut:
Metode -metode ini diekspos melalui paket yang disebut selective_optimizers , yang dapat diinstal melalui pip:
pip install selective_optimizersOptimizer Selektif : Pembungkus di sekitar pengoptimal standar (subclass of torch.optim.optimizer) yang secara selektif memperbarui sejumlah parameter yang dianggarkan dalam model.
Pilihan berbasis heuristik : Parameter memperbarui pengoptimal selektif sesuai dengan berbagai strategi heuristik dan seleksi.
Integrasi dengan Transformers : Kompatibel dengan Transformers.Trainer untuk integrasi yang mudah ke dalam pipa Anda yang ada.
Penyimpanan Efisien : Menyimpan bobot yang dimodifikasi dalam objek ringkasan yang hanya menempati ruang (b), di mana B adalah anggaran.
Untuk menginstal paket selektif_optimizers, cukup jalankan:
pip install selective-optimizersBerikut alur kerja dasar untuk pelatihan dengan pengoptimal selektif:
from selective_optimizers . wrap import get_selective_optimizer
from selective_optimizers . load_store import write_summary_to_disk
from torch . optim import AdamW
# Choose your base optimizer
opt = AdamW
# Specify the PEFT method to use (can be one of “fft”, “id3”, “bitfit”, or “pafi”)
peft_to_use = "id3"
# Get the selective optimizer class
optimizer_class = get_selective_optimizer ( opt , peft_to_use )
# Initialize the optimizer with additional selective parameters
optimizer = optimizer_class (
params = model . parameters (),
lr = 0.0001 ,
budget = 100000 ,
exp = 0 ,
eps = 1e-3 ,
max_steps = 1000
)
# Usual training loop
...
...
# Optional post-training work for validation
optimizer . post_train_work ()
print ( "Budget used:" , optimizer . get_budget_used ())
# Save the summary of modified weights
summary = optimizer . get_summary ( model )
write_summary_to_disk ( "path/to/summary.pth" , summary ) from selective_optimizers . load_store import load_summary_from_disk , load_weights_from_summary
# Load your model as usual
...
model = ...
...
# Load the summary from disk
summary = load_summary_from_disk ( "path/to/summary.pth" )
# Apply the modified weights from the summary to the model
load_weights_from_summary ( model , summary )
# Usual inference code
...
...Kelas Transformers.Trainer menerima pengoptimal eksternal, membuatnya mudah untuk mengintegrasikan pengoptimal selektif ke dalam alur kerja Anda:
Kami menyambut kontribusi untuk paket selektif_optimizers! Jika Anda ingin menambahkan pengoptimal selektif baru, ikuti langkah -langkah ini:
Proyek ini dilisensikan di bawah lisensi MIT. Lihat file lisensi untuk detailnya.
Jika Anda menggunakan toolkit ini dalam riset Anda, silakan kutip makalah kami:
@article{Agarwal2024_step_by_step,
title = {Step - by - Step Unmasking for Parameter - Efficient Fine - tuning of Large Language Models},
author = {Aradhye Agarwal and Suhas Kamasetty Ramesh and Ayan Sengupta and Tanmoy Chakraborty}
journal = {arXiv preprint arXiv: 2408 . 14470 },
year = { 2024 },
}
Untuk pertanyaan atau masalah apa pun, jangan ragu untuk membuka masalah di repositori GitHub atau hubungi kami secara langsung.