الدرس 9 من 24

LoRA و QLoRA عملياً

إعداد البيئة

3 دقيقة للقراءة

قبل أن نبدأ الضبط الدقيق، لنُعد بيئة صحيحة مع كل المكتبات المطلوبة.

المكتبات المطلوبة

هنا المكتبات الأساسية للضبط الدقيق في 2025:

المكتبة الغرض الإصدار
transformers تحميل النماذج والترميز ≥4.46.0
peft LoRA وطرق المحولات ≥0.13.0
trl التدريب (SFTTrainer, DPOTrainer) ≥0.12.0
bitsandbytes تكميم 4-bit ≥0.44.0
datasets تحميل ومعالجة مجموعات البيانات ≥3.0.0
accelerate التدريب الموزع ≥1.0.0

التثبيت

التثبيت الأساسي

pip install transformers peft trl datasets accelerate bitsandbytes

مع دعم CUDA (موصى)

pip install torch --index-url https://download.pytorch.org/whl/cu121
pip install transformers peft trl datasets accelerate bitsandbytes

التثبيت الكامل مع الإضافات

pip install transformers[torch] peft trl datasets accelerate bitsandbytes
pip install wandb  # لتتبع التجارب
pip install flash-attn --no-build-isolation  # اختياري: انتباه أسرع

التحقق من التثبيت

شغّل هذا السكريبت للتحقق أن كل شيء يعمل:

import torch
print(f"إصدار PyTorch: {torch.__version__}")
print(f"CUDA متاح: {torch.cuda.is_available()}")
if torch.cuda.is_available():
    print(f"إصدار CUDA: {torch.version.cuda}")
    print(f"GPU: {torch.cuda.get_device_name(0)}")
    print(f"VRAM: {torch.cuda.get_device_properties(0).total_memory / 1e9:.1f} GB")

import transformers
print(f"إصدار Transformers: {transformers.__version__}")

import peft
print(f"إصدار PEFT: {peft.__version__}")

import trl
print(f"إصدار TRL: {trl.__version__}")

import bitsandbytes
print(f"إصدار bitsandbytes: {bitsandbytes.__version__}")

المخرج المتوقع:

إصدار PyTorch: 2.5.1+cu121
CUDA متاح: True
إصدار CUDA: 12.1
GPU: NVIDIA GeForce RTX 4090
VRAM: 24.0 GB
إصدار Transformers: 4.46.0
إصدار PEFT: 0.13.0
إصدار TRL: 0.12.0
إصدار bitsandbytes: 0.44.0

خيارات البيئة

GPU محلي

الإيجابيات: تحكم كامل، لا حدود وقتية السلبيات: استثمار عتاد مطلوب

الحد الأدنى للمواصفات لـ QLoRA:

  • GPU: 8GB VRAM (RTX 3070 أو أفضل)
  • RAM: 32GB
  • التخزين: 100GB SSD

Google Colab

الإيجابيات: طبقة مجانية متاحة، سهل للبدء السلبيات: حدود وقت الجلسة، توفر GPU متغير

# تحقق من GPU في Colab
!nvidia-smi

مزودي السحابة

المزود خيارات GPU التكلفة
RunPod A100, 4090, A6000 $0.40-2.00/ساعة
Lambda Labs A100, H100 $1.10-3.00/ساعة
Vast.ai متنوعة $0.20-1.50/ساعة
AWS SageMaker P4d, G5 $1.50-5.00/ساعة

هيكل المشروع

نظّم مشروع الضبط الدقيق:

my-fine-tuning-project/
├── data/
│   ├── train.json
│   └── validation.json
├── configs/
│   └── lora_config.yaml
├── scripts/
│   ├── train.py
│   └── evaluate.py
├── outputs/
│   ├── checkpoints/
│   └── final_model/
├── requirements.txt
└── README.md

ملف التكوين

أنشئ ملف تكوين للتكرارية:

# configs/lora_config.yaml
model:
  name: "meta-llama/Llama-3.2-3B-Instruct"
  max_seq_length: 2048

lora:
  r: 16
  alpha: 16
  dropout: 0.0
  target_modules: "all-linear"

training:
  batch_size: 4
  gradient_accumulation_steps: 4
  learning_rate: 2e-4
  num_epochs: 3
  warmup_ratio: 0.03

quantization:
  load_in_4bit: true
  bnb_4bit_quant_type: "nf4"
  bnb_4bit_compute_dtype: "bfloat16"

إعداد Hugging Face

معظم النماذج تتطلب مصادقة:

# ثبّت CLI
pip install huggingface_hub

# سجّل الدخول (احصل على التوكن من huggingface.co/settings/tokens)
huggingface-cli login

أو في Python:

from huggingface_hub import login
login(token="your_token_here")

مشاكل الإعداد الشائعة

CUDA نفدت الذاكرة

# قلل حجم الدفعة
batch_size = 2

# فعّل gradient checkpointing
model.gradient_checkpointing_enable()

# استخدم max_seq_length أصغر
max_seq_length = 1024

مشاكل bitsandbytes على Windows

# استخدم wheels مبنية مسبقاً لـ Windows
pip install bitsandbytes-windows

Flash Attention غير متاح

# ارجع للانتباه القياسي
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    attn_implementation="eager"  # أو "sdpa"
)

نصيحة: ابدأ بنموذج صغير (1B-3B) للتحقق من إعدادك قبل الانتقال لنماذج أكبر.

بعد ذلك، سنتعمق في تكوين LoRA ونفهم كل معامل. :::

اختبار

الوحدة 3: LoRA و QLoRA عملياً

خذ الاختبار