مرحبًا بكم في selective-peft-toolkit ، التنفيذ الرسمي للورقة "STEP-BY-Step Distking من أجل صقل نماذج اللغة الكبيرة الموفرة للمعلمة" . توفر مجموعة الأدوات هذه إطارًا مرنًا لنماذج لغة كبيرة بشكل انتقائي باستخدام طرق مختلفة لضرب المعلمة (PEFT) بشكل انتقائي.
تتضمن مجموعة الأدوات طرق PEFT التالية:
يتم كشف هذه الطرق من خلال حزمة تسمى selective_optimizers ، والتي يمكن تثبيتها عبر PIP:
pip install selective_optimizersمحسّنات انتقائية : أغلفة حول المحسّنات القياسية (الفئات الفرعية من torch.optim.optimizer) التي تحديث بشكل انتقائي عددًا من المعلمات المدرجة في الميزانية في النموذج.
الاختيار القائم على الاستدلال : تحديث المحسنات الانتقائية المعلمات وفقًا لمختلف استراتيجيات الاستدلال والاختيار.
التكامل مع المحولات : متوافق مع Transformers.trainer لسهولة التكامل في خطوط الأنابيب الحالية.
التخزين الفعال : يخزن الأوزان المعدلة في كائن ملخص يحتل مساحة O (ب) فقط ، حيث 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! إذا كنت ترغب في إضافة مُحسّن انتقائي جديد ، اتبع هذه الخطوات:
هذا المشروع مرخص بموجب ترخيص معهد ماساتشوستس للتكنولوجيا. انظر ملف الترخيص للحصول على التفاصيل.
إذا كنت تستخدم مجموعة الأدوات هذه في بحثك ، فيرجى الاستشهاد بالورقة:
@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 أو الاتصال بنا مباشرة.