PEFT documentation

VeLoRA

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.21.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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.

النوعخسارة التدريبالحد الأقصى للذاكرة (جيجابايت)رموز/ثانية
LoRA0.542727.692366.2
LoRA + GC0.542613.171671.8
LoRA+VeLoRA0.542719.942057.6

ملاحظات

  • يُؤيَّد VeLoRA حاليًا في طبقات LoRA الخطية القياسية فقط.
Update on GitHub