ضبط دقيقLLMsLoRAتقني
كيف تضبط نموذج LLM على مجموعة البيانات الخاصة بك
212AY Team·2026-05-01·18 دقيقة
الضبط الدقيق يكيف نموذج LLM مدرب مسبقاً ليتفوق في مهمتك المحددة. يرشدك هذا الدليل خلال ضبط نموذج مفتوح المصدر باستخدام LoRA.
متى تلجأ للضبط الدقيق
الضبط الدقيق مثالي عندما:
- تحتاج إلى تنسيق مخرجات متناسق
- مجال عملك يحتوي على مفردات متخصصة
- تريد تقليل طول الاستفسار والتكلفة
- تبني منتجاً متخصصاً
الإعداد
pip install transformers datasets accelerate peft bitsandbytes
إعداد البيانات
قم بتنسيق بياناتك كـ JSONL مع حقلي "instruction" و "output":
{"instruction": "ما هي هندسة الاستفسار؟", "output": "هندسة الاستفسار هي ممارسة تصميم المدخلات لتوجيه مخرجات نموذج الذكاء الاصطناعي."}
{"instruction": "اشرح RAG", "output": "RAG (التوليد المعزز بالاسترجاع) يدمج LLMs مع استرجاع المعرفة الخارجية."}
تحميل النموذج الأساسي
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model
model_name = "microsoft/phi-2" # أو أي نموذج مفتوح المصدر
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token
تكوين LoRA
lora_config = LoraConfig(
r=8, # الرتبة
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)
print(f"المعلمات القابلة للتدريب: {model.num_parameters(only_trainable=True):,}")
التدريب
from transformers import TrainingArguments, Trainer
training_args = TrainingArguments(
output_dir="./phi2-finetuned",
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-4,
num_train_epochs=3,
logging_steps=10,
save_strategy="epoch",
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset,
tokenizer=tokenizer,
)
trainer.train()
التقييم
اختبر نموذجك المضبوط على مجموعة بيانات محجوزة:
- قارن المخرجات قبل وبعد الضبط الدقيق
- قس المقاييس الخاصة بالمهمة
- قم بتقييم بشري للجودة
الاستدلال
def generate_response(instruction):
inputs = tokenizer(instruction, return_tensors="pt").to("cuda")
outputs = model.generate(
**inputs,
max_new_tokens=200,
temperature=0.7
)
return tokenizer.decode(outputs[0], skip_special_tokens=True)
النشر الإنتاجي
- صدّر بتنسيق GGUF لـ llama.cpp
- انشر باستخدام vLLM للإنتاج
- استخدم Ollama للنشر المحلي
- راقب الانحراف وتدهور الجودة
متى لا تستخدم الضبط الدقيق
- إذا كانت هندسة الاستفسار تحل مشكلتك
- إذا كنت بحاجة لتغيير السلوكيات بشكل متكرر
- إذا لم يكن لديك بيانات تدريب عالية الجودة
- ابدأ بـ RAG قبل الضبط الدقيق
برنامجنا "ابنِ باستخدام LLMs" يغطي الضبط الدقيق مع مشاريع عملية.