الفصل 1: ما هو QLoRA؟
التكيف منخفض الرتبة المكمم
يجمع QLoRA بين التكميم 4-بت وLoRA لتقليل متطلبات الذاكرة بشكل كبير مع الحفاظ على الجودة.
ابتكار QLoRA
مقارنة الذاكرة
| النموذج | FT الكامل | LoRA | QLoRA |
|---|---|---|---|
| 7B | ~80GB | ~14GB | ~6GB |
| 13B | ~160GB | ~26GB | ~10GB |
| 70B | ~600GB | ~140GB | ~48GB |
كيف يعمل QLoRA
- تحميل النموذج الأساسي في 4-بت (صيغة NF4)
- إضافة محولات LoRA بدقة أعلى (bf16/fp16)
- تدريب فقط معلمات LoRA
- تدفق التدرجات عبر الأوزان المفككة
from transformers import BitsAndBytesConfig, AutoModelForCausalLM
from peft import LoraConfig, get_peft_model
# تكوين 4-بت
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
# تحميل النموذج المكمم
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B",
quantization_config=bnb_config,
device_map="auto",
)
# إضافة LoRA في الأعلى
lora_config = LoraConfig(r=16, lora_alpha=32, ...)
model = get_peft_model(model, lora_config)
المكونات الرئيسية
NF4 (NormalFloat 4-بت)
صيغة تكميم مصممة للأوزان الموزعة بشكل طبيعي:
- عدد متساوٍ من القيم في كل حاوية
- أفضل لأوزان الشبكات العصبية من التكميم المنتظم
التكميم المزدوج
يكمم ثوابت التكميم:
- يوفر حوالي 0.4 بت إضافية لكل معلمة
- توفير إضافي في الذاكرة بنسبة ~11%
المحسنات المجزأة
تتعامل مع ارتفاعات الذاكرة أثناء التدريب:
- تنقل حالات المحسن إلى CPU عند الحاجة
- تمنع أخطاء OOM
المقايضة بين الجودة والذاكرة
| الطريقة | الذاكرة | الجودة (نسبية) |
|---|---|---|
| FT الكامل | 100% | 100% |
| LoRA | 18% | 99% |
| QLoRA | 8% | 98% |
يحقق QLoRA حوالي 98% من جودة التخصيص الكامل باستخدام حوالي 8% من الذاكرة.
متى تستخدم QLoRA
✅ استخدم QLoRA عندما:
- GPU لديه < 24GB VRAM
- تدريب نماذج 7B+ على أجهزة المستهلك
- التكلفة هي الشاغل الرئيسي
- التجريب والتكرار بسرعة
❌ اعتبر LoRA/FT الكامل عندما:
- الجودة القصوى حاسمة
- لديك ذاكرة GPU وفيرة
- نشر النموذج المدمج (تكلفة الدمج)
النقاط الرئيسية
✅ QLoRA = تكميم 4-بت + LoRA ✅ يقلل الذاكرة بحوالي 60% مقارنة بـ LoRA ✅ خسارة جودة طفيفة (~1-2%) ✅ يمكن من تدريب نموذج 70B على 48GB ✅ يستخدم صيغة NF4 والتكميم المزدوج