Bem-vindo ao selective-peft-toolkit , a implementação oficial para o artigo "Unmasking passo a passo para ajustar fino com eficiência de parâmetro de grandes modelos de idiomas" . Este kit de ferramentas fornece uma estrutura flexível para modelos de linguagem grandes de ajuste seletivo, usando diferentes métodos de ajuste fino (PEFT) com eficiência seletiva.
O kit de ferramentas inclui os seguintes métodos PEFT:
Esses métodos são expostos através de um pacote chamado selective_optimizers , que pode ser instalado via PIP:
pip install selective_optimizersOtimizadores seletivos : Wrappers em torno de otimizadores padrão (subclasses de torch.optim.optimizer) que atualizam seletivamente um número orçamentado de parâmetros no modelo.
Seleção baseada em heurística : os otimizadores seletivos atualizam os parâmetros de acordo com várias estratégias de heurística e seleção.
Integração com Transformers : Compatível com Transformers.Trainer para facilitar a integração em seus pipelines existentes.
Armazenamento eficiente : armazenar pesos modificados em um objeto resumido que ocupa apenas O (b) espaço, onde B é o orçamento.
Para instalar o pacote Selective_Optimizers, basta executar:
pip install selective-optimizersAqui está um fluxo de trabalho básico para treinamento com um otimizador seletivo:
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
...
...A classe Transformers.Trainner aceita otimizadores externos, facilitando a integração de otimizadores seletivos ao seu fluxo de trabalho:
Congratulamo -nos com contribuições para o pacote Selective_Optimizers! Se você quiser adicionar um novo otimizador seletivo, siga estas etapas:
Este projeto está licenciado sob a licença do MIT. Consulte o arquivo de licença para obter detalhes.
Se você usar este kit de ferramentas em sua pesquisa, cite nosso artigo:
@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 quaisquer perguntas ou problemas, sinta -se à vontade para abrir um problema no repositório do GitHub ou entre em contato conosco diretamente.