إنتقل إلى المحتوى الرئيسي

الفصل 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 لتحقيق كفاءة ذاكرة قصوى.

كيف يعمل​

  1. تحميل النموذج الأساسي بدقة 4 بت
  2. إضافة محولات LoRA بدقة أعلى
  3. تدريب فقط معلمات LoRA

مقارنة الذاكرة​

حجم النموذجالتخصيص الكاملLoRAQLoRA
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

وحدات معالجة الرسوميات الموصى بها​

الميزانيةGPUVRAMجيد لـ
مجانيColab T415GBQLoRA على 7B
$RTX 3090/409024GBQLoRA على 13B
$$A100-40GB40GBLoRA على 70B
$$$A100-80GB80GBالتخصيص الكامل على 13B
$$$$H10080GBالتخصيص الكامل على 70B

تقديرات وقت التدريب​

النموذجالأسلوبGPUالوقت لـ 1K أمثلة
7BQLoRAA100-40GB~30 دقيقة
7BLoRAA100-40GB~20 دقيقة
7Bالتخصيص الكاملA100-80GB~45 دقيقة
70BQLoRAA100-80GB~3 ساعات

اختيار مسارك​

مصفوفة القرار​

التوصيات حسب السيناريو​

السيناريوالأسلوب الموصى به
التعلم/التجريبQLoRA على Colab
الإنتاج (حساس للتكلفة)QLoRA على GPU السحابي
الإنتاج (حساس للجودة)LoRA أو التخصيص الكامل
البحثالتخصيص الكامل مع نقاط التحقق
التكرار السريعUnsloth + QLoRA

الدورة القادمة​

في الوحدات التالية، سنتعمق في كل أسلوب:

الوحدةالتركيز
الوحدة 2تفاصيل التخصيص الكامل
الوحدة 3مفاهيم PEFT
الوحدة 4تعمق في LoRA
الوحدة 5QLoRA والتكميم
الوحدة 6إعداد البيانات
الوحدة 7تدريب Hugging Face
الوحدة 8تقنيات متقدمة (DPO، ORPO)
الوحدة 9التقييم والدمج
الوحدة 10النشر في الإنتاج

النقاط الرئيسية​

✅ توجد طرق تخصيص دقيق متعددة لمستويات موارد مختلفة

✅ تجعل أساليب PEFT (LoRA، QLoRA) التخصيص الدقيق متاحًا على أجهزة المستهلك

✅ يوفر نظام Hugging Face جميع الأدوات اللازمة

✅ يعتمد اختيار الأسلوب على ميزانية الحوسبة ومتطلبات الجودة

✅ ابدأ بـ QLoRA للتعلم، ثم قم بالتوسع حسب الحاجة


الخطوات التالية​

اختبر معرفتك مع اختبار الوحدة 1، ثم تابع إلى الوحدة 2: التخصيص الكامل.


تحقق سريع​

قبل المتابعة، تأكد من أنك تستطيع الإجابة:

  1. ما هو الفرق الرئيسي بين LoRA و QLoRA؟
  2. كم من الذاكرة تحتاج لتطبيق QLoRA على نموذج 7B؟
  3. ما هو الفرق بين DPO و RLHF؟