Bienvenido al selective-peft-toolkit , la implementación oficial para el documento "Desenmascarar paso a paso para el ajuste fino de los parámetros de los modelos de idiomas grandes" . Este kit de herramientas proporciona un marco flexible para ajustar selectivamente modelos de lenguaje grandes utilizando diferentes métodos de ajuste fino (PEFT) de parámetros selectivos.
El kit de herramientas incluye los siguientes métodos PEFT:
Estos métodos se expusen a través de un paquete llamado selective_optimizers , que se puede instalar a través de PIP:
pip install selective_optimizersOptimizadores selectivos : envoltorios alrededor de los optimizadores estándar (subclases de torch.optim.optimizer) que actualizan selectivamente un número presupuestado de parámetros en el modelo.
Selección basada en heurística : los optimizadores selectivos actualizan los parámetros de acuerdo con varias estrategias de heurística y selección.
Integración con Transformers : Compatible con Transformers.trainer para una fácil integración en sus tuberías existentes.
Almacenamiento eficiente : tiendas de pesas modificadas en un objeto resumido que ocupa solo el espacio o (b), donde B es el presupuesto.
Para instalar el paquete selectivo_optimizers, simplemente ejecute:
pip install selective-optimizersAquí hay un flujo de trabajo básico para capacitación con un optimizador selectivo:
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
...
...La clase Transformers.rainer acepta optimizadores externos, lo que facilita la integración de optimizadores selectivos en su flujo de trabajo:
¡Agradecemos las contribuciones al paquete Selective_optimizers! Si desea agregar un nuevo optimizador selectivo, siga estos pasos:
Este proyecto tiene licencia bajo la licencia MIT. Consulte el archivo de licencia para obtener más detalles.
Si usa este kit de herramientas en su investigación, cite nuestro documento:
@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 },
}
Para cualquier pregunta o problema, no dude en abrir un problema en el repositorio de GitHub o contáctenos directamente.