PEFT documentation
VeLoRA
VeLoRA
هذا متغيّر من LoRA، وبالتالي كل ما هو ممكن باستخدام LoRA صالح لهذه الطريقة ما لم يُذكر خلاف ذلك في هذه الصفحة.
VeLoRA هو متغير من LoRA يقلل من ذاكرة التدريب عن طريق ضغط التفعيلات المحفوظة لـ LoRA في المسار الأمامي ثم إعادة بنائها في المسار العكسي لتنفيذ قواعد التحديث. في PEFT، يتم تكوين VeLoRA كمتغير من LoRA عبر الحجة velora_config على LoraConfig.
from peft import LoraConfig, VeloraConfig
config = LoraConfig(
target_modules=["q_proj", "v_proj"],
velora_config=VeloraConfig(
num_groups=64,
scale=0.2,
init_type="batch_average",
),
)يُطبَّق VeLoRA على كل طبقة LoRA محددة بواسطة target_modules. يتحكم num_groups في كيفية تقسيم عمق تفعيلات الإدخال قبل الضغط. إذا لم يكن عمق التفعيل قابلاً للقسمة بالتساوي على num_groups، فإن VeLoRA يضيف حشواً داخلياً للتمثيل المجمّع ثم يزيل الحشو بعد إعادة البناء. يعيد scale تحجيم التفعيلات المُعاد بناؤها أثناء المرور العكسي، ويحدد init_type كيفية تهيئة الإسقاط.
استخدم batch_average_once لتبديء الإسقاط من أول دفعة تدريب، أو batch_average لتحديثه من كل تمريرة أمامية للتدريب، أو random لتبديئه فورًا من متجه عشوائي مُعايَر.
فيما يلي بعض النتائج مع مقياس MetaMathQA.
| النوع | خسارة التدريب | الحد الأقصى للذاكرة (جيجابايت) | رموز/ثانية |
|---|---|---|---|
| LoRA | 0.5427 | 27.69 | 2366.2 |
| LoRA + GC | 0.5426 | 13.17 | 1671.8 |
| LoRA+VeLoRA | 0.5427 | 19.94 | 2057.6 |
ملاحظات
- يُؤيَّد VeLoRA حاليًا في طبقات LoRA الخطية القياسية فقط.