Willkommen im selective-peft-toolkit , der offiziellen Implementierung für das Papier "Schritt-für-Schritt-Entlarvung für parametereffiziente Feinabstimmungen großer Sprachmodelle" . Dieses Toolkit bietet ein flexibles Framework für die selektiv feine, große Sprachmodelle mit unterschiedlichen selektiven Parameter-effizienten Feinabstimmungsmethoden (PEFT).
Das Toolkit enthält die folgenden PEFT -Methoden:
Diese Methoden werden über ein Paket namens selective_optimizers ausgesetzt, das über PIP installiert werden kann:
pip install selective_optimizersSelektive Optimierer : Wrapper um Standardoptimierer (Unterklassen von Torch.optim.optimizer), die eine budgetierte Anzahl von Parametern im Modell selektiv aktualisieren.
Heuristische Auswahl : Die selektiven Optimierer aktualisieren Parameter gemäß verschiedenen Heuristik- und Auswahlstrategien.
Integration mit Transformatoren : kompatibel mit Transformatoren.Trainer für eine einfache Integration in Ihre vorhandenen Pipelines.
Effiziente Speicherung : Speichert modifizierte Gewichte in einem zusammenfassenden Objekt, das nur O (b) Raum einnimmt, wobei B das Budget ist.
Um das Paket selective_optimizers zu installieren, führen Sie einfach aus:
pip install selective-optimizersHier ist ein grundlegender Workflow für das Training mit einem selektiven Optimierer:
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
...
...Die transformators.trainer -Klasse akzeptiert externe Optimierer, so dass es einfach ist, selektive Optimierer in Ihren Workflow zu integrieren:
Wir begrüßen Beiträge zum Paket selective_optimizers! Wenn Sie einen neuen selektiven Optimierer hinzufügen möchten, befolgen Sie die folgenden Schritte:
Dieses Projekt ist unter der MIT -Lizenz lizenziert. Weitere Informationen finden Sie in der Lizenzdatei.
Wenn Sie dieses Toolkit in Ihrer Forschung verwenden, zitieren Sie bitte unser Papier:
@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 },
}
Für Fragen oder Probleme können Sie ein Problem im Github -Repository eröffnen oder uns direkt kontaktieren.