Добро пожаловать в selective-peft-toolkit , официальную реализацию для бумаги «Пошаговое разоблачение параметров для точной настройки крупных языковых моделей» . Этот инструментарий обеспечивает гибкую структуру для избирательно тонкой настройки больших языковых моделей с использованием различных методов избирательного параметра с точной настройкой (PEFT).
Инструментарий включает в себя следующие методы PEFT:
Эти методы выявляются через пакет под названием selective_optimizers , который может быть установлен через PIP:
pip install selective_optimizersСелективные оптимизаторы : обертки вокруг стандартных оптимизаторов (подклассы Torch.optim.optimizer), которые избирательно обновляют бюджетное количество параметров в модели.
Выбор на основе эвристики : селективные оптимизаторы обновляют параметры в соответствии с различными стратегиями эвристики и отбора.
Интеграция с трансформаторами : совместима с Transformers.trainer для легкой интеграции в существующие трубопроводы.
Эффективное хранение : хранит модифицированные веса в суммарном объекте, который занимает только пространство O (b), где B является бюджетом.
Чтобы установить пакет selectection_optimizers, просто запустите:
pip install selective-optimizersВот базовый рабочий процесс для обучения с селективным оптимизатором:
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
...
...Класс Transformers.trainer принимает внешние оптимизаторы, позволяя легко интегрировать селективные оптимизаторы в свой рабочий процесс:
Мы приветствуем вклад в пакет Selectection_optimizers! Если вы хотите добавить новый селективный оптимизатор, выполните следующие действия:
Этот проект лицензирован по лицензии MIT. Смотрите файл лицензии для получения подробной информации.
Если вы используете этот инструментарий в своем исследовании, пожалуйста, укажите нашу статью:
@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 },
}
По любым вопросам или проблемам, не стесняйтесь открывать проблему в репозитории GitHub или напрямую свяжитесь с нами.