الفصل 3: مشهد التخصيص الدقيق
نظرة عامة على الأساليب والأدوات والمتطلبات
لقد تطور مشهد التخصيص الدقيق بسرعة، مما يوفر العديد من الأساليب المناسبة للاحتياجات والموارد المختلفة. يقدم هذا الفصل نظرة شاملة لمساعدتك في التنقل بين خياراتك.
نظرة عامة على أساليب التخصيص الدقيق
مقارنة الأساليب
| الأسلوب | المعلمات المدربة | استخدام الذاكرة | الجودة | الأفضل لـ |
|---|---|---|---|---|
| التخصيص الكامل | 100% | مرتفع جدًا | الأعلى | التخصيص الأقصى |
| LoRA | ~0.1-1% | متوسط | مرتفع | التخصيص العام |
| QLoRA | ~0.1-1% | منخفض | مرتفع | وحدات معالجة الرسوميات للمستهلك |
| تخصيص البادئة | ~0.1% | منخفض | جيد | المهام المحددة |
| IA3 | ~0.01% | منخفض جدًا | جيد | تغييرات طفيفة |
التخصيص الكامل
ما هو
تحديث جميع المعلمات في النموذج أثناء التدريب.
الإيجابيات
- أقصى مرونة وتخصيص
- يمكن تحقيق أفضل النتائج للمهام المعقدة
- تحكم كامل في سلوك النموذج
السلبيات
- يتطلب ذاكرة GPU كبيرة (نموذج 7B يحتاج ~28GB+ للتدريب)
- خطر أعلى من النسيان الكارثي
- مكلف من حيث الحساب
متى يُستخدم
- عندما يكون لديك موارد حسابية وفيرة
- للتطبيقات الحرجة التي تتطلب أعلى جودة
- عندما لا تحقق أساليب PEFT النتائج المرجوة
# مثال على التخصيص الكامل
from transformers import Trainer, TrainingArguments
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
fp16=True, # دقة مختلطة لتوفير الذاكرة
)
trainer = Trainer(
model=model, # جميع المعلمات قابلة للتدريب
args=training_args,
train_dataset=dataset,
)
LoRA (التكيف منخفض الرتبة)
ما هو
إضافة مصفوفات صغيرة قابلة للتدريب إلى أوزان النموذج المجمدة.
كيف يعمل
الأصلي: W (مجمد)
LoRA: W + BA (حيث B و A مصفوفات صغيرة قابلة للتدريب)
المعلمات الرئيسية
- الرتبة (r): الأبعاد للمصفوفات منخفضة الرتبة (مثل 8، 16، 32)
- ألفا: عامل التحجيم لمساهمات LoRA
- الوحدات المستهدفة: الطبقات التي يتم تطبيق LoRA عليها (q_proj، v_proj، إلخ.)
الإيجابيات
- تقليل الذاكرة بنسبة 90%+
- تدريب سريع
- يمكن تبديل أو دمج المحول
- لا فقدان للجودة لمعظم المهام
السلبيات
- سقف أقل قليلاً من التخصيص الكامل
- يحتاج إلى ضبط المعلمات الفائقة (الرتبة، ألفا)
from peft import LoraConfig, get_peft_model
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
task_type="CAUSAL_LM",
)
model = get_peft_model(base_model, lora_config)
QLoRA (LoRA المكمي)
ما هو
دمج التكميم بـ 4 بت مع LoRA لتحقيق كفاءة ذاكرة قصوى.
كيف يعمل
- تحميل النموذج الأساسي بدقة 4 بت
- إضافة محولات LoRA بدقة أعلى
- تدريب فقط معلمات LoRA
مقارنة الذاكرة
| حجم النموذج | التخصيص الكامل | LoRA | QLoRA |
|---|---|---|---|
| 7B | ~28GB | ~14GB | ~6GB |
| 13B | ~52GB | ~26GB | ~10GB |
| 70B | ~280GB | ~140GB | ~48GB |
الإيجابيات
- تدريب نماذج 70B على وحدات معالجة الرسوميات للمستهلك
- فقدان جودة طفيف مقارنة بـ LoRA
- فعال جدًا من حيث التكلفة
السلبيات
- تدريب أبطأ قليلاً
- يتطلب مكتبة bitsandbytes
- بعض الآثار الجانبية للتكميم ممكنة
from transformers import BitsAndBytesConfig
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(
"model_name",
quantization_config=bnb_config,
)
أساليب المحاذاة
RLHF (التعلم المعزز من التغذية الراجعة البشرية)
- تدريب نموذج مكافأة من تفضيلات البشر
- استخدام RL (PPO) لتحسين نموذج اللغة
- معقد ولكنه قوي
DPO (تحسين التفضيل المباشر)
- تبسيط RLHF بإزالة نموذج المكافأة
- تحسين مباشر على أزواج التفضيل
- أبسط بكثير في التنفيذ
ORPO (تحسين تفضيل نسبة الاحتمالات)
- دمج SFT والمحاذاة في خطوة واحدة
- أبسط حتى من DPO
- نتائج جديدة ولكن واعدة
# مثال DPO مع TRL
from trl import DPOTrainer
trainer = DPOTrainer(
model=model,
ref_model=reference_model,
train_dataset=preference_dataset,
beta=0.1, # وزن عقوبة KL
)
نظام الأدوات
حزمة Hugging Face
| الأداة | الغرض |
|---|---|
| transformers | تحميل النماذج، الترميز، التدريب |
| peft | التخصيص الفعال للمعلمات |
| trl | مدربون SFT، DPO، RLHF |
| datasets | تحميل ومعالجة البيانات |
| accelerate | التدريب الموزع |
| bitsandbytes | التكميم |
الأطر البديلة
| الأداة | القوة | حالة الاستخدام |
|---|---|---|
| Axolotl | تكوين سهل | تجارب سريعة |
| LLaMA-Factory | واجهة موحدة | طرق متعددة |
| Unsloth | سرعة مضاعفة، ذاكرة أقل | تكرار سريع |
متطلبات الحوسبة
إرشادات ذاكرة GPU
الذاكرة المطلوبة ≈ (معلمات النموذج × بايت الدقة × المضاعف)
حيث المضاعف:
- الاستدلال: 1x
- تدريب LoRA: 2-3x
- التخصيص الكامل: 4-6x
وحدات معالجة الرسوميات الموصى بها
| الميزانية | GPU | VRAM | جيد لـ |
|---|---|---|---|
| مجاني | Colab T4 | 15GB | QLoRA على 7B |
| $ | RTX 3090/4090 | 24GB | QLoRA على 13B |
| $$ | A100-40GB | 40GB | LoRA على 70B |
| $$$ | A100-80GB | 80GB | التخصيص الكامل على 13B |
| $$$$ | H100 | 80GB | التخصيص الكامل على 70B |
تقديرات وقت التدريب
| النموذج | الأسلوب | GPU | الوقت لـ 1K أمثلة |
|---|---|---|---|
| 7B | QLoRA | A100-40GB | ~30 دقيقة |
| 7B | LoRA | A100-40GB | ~20 دقيقة |
| 7B | التخصيص الكامل | A100-80GB | ~45 دقيقة |
| 70B | QLoRA | A100-80GB | ~3 ساعات |
اختيار مسارك
مصفوفة القرار
التوصيات حسب السيناريو
| السيناريو | الأسلوب الموصى به |
|---|---|
| التعلم/التجريب | QLoRA على Colab |
| الإنتاج (حساس للتكلفة) | QLoRA على GPU السحابي |
| الإنتاج (حساس للجودة) | LoRA أو التخصيص الكامل |
| البحث | التخصيص الكامل مع نقاط التحقق |
| التكرار السريع | Unsloth + QLoRA |
الدورة القادمة
في الوحدات التالية، سنتعمق في كل أسلوب:
| الوحدة | التركيز |
|---|---|
| الوحدة 2 | تفاصيل التخصيص الكامل |
| الوحدة 3 | مفاهيم PEFT |
| الوحدة 4 | تعمق في LoRA |
| الوحدة 5 | QLoRA والتكميم |
| الوحدة 6 | إعداد البيانات |
| الوحدة 7 | تدريب Hugging Face |
| الوحدة 8 | تقنيات متقدمة (DPO، ORPO) |
| الوحدة 9 | التقييم والدمج |
| الوحدة 10 | النشر في الإنتاج |
النقاط الرئيسية
✅ توجد طرق تخصيص دقيق متعددة لمستويات موارد مختلفة
✅ تجعل أساليب PEFT (LoRA، QLoRA) التخصيص الدقيق متاحًا على أجهزة المستهلك
✅ يوفر نظام Hugging Face جميع الأدوات اللازمة
✅ يعتمد اختيار الأسلوب على ميزانية الحوسبة ومتطلبات الجودة
✅ ابدأ بـ QLoRA للتعلم، ثم قم بالتوسع حسب الحاجة
الخطوات التالية
اختبر معرفتك مع اختبار الوحدة 1، ثم تابع إلى الوحدة 2: التخصيص الكامل.
تحقق سريع
قبل المتابعة، تأكد من أنك تستطيع الإجابة:
- ما هو الفرق الرئيسي بين LoRA و QLoRA؟
- كم من الذاكرة تحتاج لتطبيق QLoRA على نموذج 7B؟
- ما هو الفرق بين DPO و RLHF؟