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 ونفهم كل معامل. :::