selective peft toolkit
1.0.0
欢迎来到selective-peft-toolkit ,这是“逐步揭示大型语言模型参数有效微调”的官方实施。该工具包提供了一个灵活的框架,用于使用不同选择性参数有效的微调(PEFT)方法选择性微调大型语言模型。
该工具包包括以下PEFT方法:
这些方法是通过称为selective_optimizers的软件包暴露的,可以通过PIP安装:
pip install selective_optimizers选择性优化器:围绕标准优化器的包装器(Torch.optim.optimizer的子类),可有选择地更新模型中预算数量的参数。
基于启发式的选择:根据各种启发式和选择策略,选择性优化器更新参数。
与变压器集成:与变压器兼容。
有效的存储:将修改的权重存储在仅占用o(b)空间的摘要对象中,其中b为预算。
要安装selective_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类接受外部优化器,从而易于将选择性优化器集成到您的工作流程中:
我们欢迎对Selective_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存储库上打开问题,或直接与我们联系。