التدريب مع Unsloth
إعداد Unsloth
3 دقيقة للقراءة
إعداد Unsloth بسيط. لنجهّز بيئتك للضبط الدقيق السريع.
التثبيت
التثبيت القياسي
pip install unsloth
مع إصدار CUDA محدد
# لـ CUDA 12.1
pip install unsloth[cu121]
# لـ CUDA 11.8
pip install unsloth[cu118]
تثبيت Colab
# شغّل هذه الخلية أولاً في Google Colab
!pip install unsloth
التثبيت الكامل مع التبعيات
pip install unsloth transformers datasets trl peft accelerate bitsandbytes
التحقق من التثبيت
# تحقق من تثبيت Unsloth
import unsloth
print(f"إصدار Unsloth: {unsloth.__version__}")
# تحقق أن FastLanguageModel متاح
from unsloth import FastLanguageModel
print("FastLanguageModel استُورد بنجاح!")
# تحقق من GPU
import torch
print(f"CUDA متاح: {torch.cuda.is_available()}")
print(f"GPU: {torch.cuda.get_device_name(0)}")
تحميل النماذج مع Unsloth
FastLanguageModel
الفئة الأساسية لتحميل النماذج:
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/Llama-3.2-3B-Instruct",
max_seq_length=2048,
load_in_4bit=True,
dtype=None, # اكتشاف تلقائي (bfloat16 على GPUs الحديثة)
)
النماذج المحسّنة مسبقاً المتاحة
Unsloth يوفر نماذج محسّنة مسبقاً على HuggingFace:
# نماذج Llama
"unsloth/Llama-3.2-1B-Instruct"
"unsloth/Llama-3.2-3B-Instruct"
"unsloth/Llama-3.3-70B-Instruct"
# نماذج Mistral
"unsloth/Mistral-7B-Instruct-v0.3"
"unsloth/Mixtral-8x7B-Instruct-v0.1"
# نماذج Phi
"unsloth/Phi-4"
# نماذج Qwen
"unsloth/Qwen2.5-7B-Instruct"
"unsloth/Qwen2.5-72B-Instruct"
# نماذج Gemma
"unsloth/gemma-2-9b-it"
استخدام نماذج HuggingFace القياسية
يمكنك أيضاً استخدام معرّفات نماذج HuggingFace العادية:
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="meta-llama/Llama-3.2-3B-Instruct", # معرّف HF قياسي
max_seq_length=2048,
load_in_4bit=True,
)
إضافة LoRA مع Unsloth
from unsloth import FastLanguageModel
# حمّل النموذج
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/Llama-3.2-3B-Instruct",
max_seq_length=2048,
load_in_4bit=True,
)
# أضف محولات LoRA
model = FastLanguageModel.get_peft_model(
model,
r=16,
lora_alpha=16,
lora_dropout=0,
target_modules=[
"q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj"
],
bias="none",
use_gradient_checkpointing="unsloth", # checkpointing محسّن من Unsloth
random_state=42,
)
خيارات التكوين الرئيسية
max_seq_length
أقصى طول تسلسل للتدريب:
# تسلسلات قصيرة (محادثة، مهام بسيطة)
max_seq_length = 1024
# تسلسلات متوسطة (معظم حالات الاستخدام)
max_seq_length = 2048
# تسلسلات طويلة (مستندات، كود)
max_seq_length = 4096
load_in_4bit
فعّل تكميم 4-bit:
# QLoRA (موصى لمعظم الحالات)
load_in_4bit = True
# دقة كاملة (إذا كان لديك VRAM كافي)
load_in_4bit = False
use_gradient_checkpointing
gradient checkpointing المحسّن من Unsloth:
# محسّن من Unsloth (موصى)
use_gradient_checkpointing = "unsloth"
# PyTorch قياسي
use_gradient_checkpointing = True
# معطّل (VRAM أكثر، أسرع)
use_gradient_checkpointing = False
مقارنة الذاكرة
تحميل Llama 3.2 8B:
| الطريقة | استخدام VRAM |
|---|---|
| fp16 قياسي | 16GB |
| 4-bit قياسي | 6GB |
| Unsloth 4-bit | 4GB |
| Unsloth 4-bit + checkpointing | 3GB |
مثال الإعداد الكامل
from unsloth import FastLanguageModel
import torch
# التكوين
model_name = "unsloth/Llama-3.2-3B-Instruct"
max_seq_length = 2048
load_in_4bit = True
# حمّل النموذج والمُرمّز
model, tokenizer = FastLanguageModel.from_pretrained(
model_name=model_name,
max_seq_length=max_seq_length,
load_in_4bit=load_in_4bit,
dtype=None,
)
# أضف LoRA
model = FastLanguageModel.get_peft_model(
model,
r=16,
lora_alpha=16,
lora_dropout=0,
target_modules=[
"q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj"
],
bias="none",
use_gradient_checkpointing="unsloth",
random_state=42,
)
# تحقق من النموذج
print(f"النموذج حُمّل على: {model.device}")
print(f"المعاملات القابلة للتدريب: {model.print_trainable_parameters()}")
# إعداد المُرمّز
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"
استكشاف الأخطاء
أخطاء الاستيراد
# إذا فشل استيراد unsloth، جرّب:
!pip install --upgrade unsloth
أخطاء CUDA
# تحقق من توافق CUDA
import torch
print(torch.cuda.get_arch_list())
# تأكد من إصدار CUDA الصحيح
!nvcc --version
أخطاء الذاكرة
# قلل طول التسلسل
max_seq_length = 1024
# فعّل checkpointing قوي
use_gradient_checkpointing = "unsloth"
نصيحة: استخدم دائماً النماذج ذات البادئة
unsloth/من HuggingFace عندما يكون ذلك ممكناً - هي محسّنة مسبقاً لأفضل أداء.
بعد ذلك، لندرّب نموذجاً باستخدام Unsloth مع SFTTrainer. :::