إعداد مجموعة البيانات
إنشاء بيانات التدريب
3 دقيقة للقراءة
لديك ثلاثة أساليب رئيسية لإنشاء بيانات التدريب: التنظيم اليدوي، التوليد الاصطناعي، وزيادة البيانات. دعنا نستكشف كل منها.
1. التنظيم اليدوي
المعيار الذهبي للجودة. الأفضل للمجالات المتخصصة.
متى نستخدم
- خبرة المجال حرجة
- الدقة العالية مطلوبة
- لديك خبراء الموضوع متاحون
- حجم مجموعة البيانات قابل للإدارة (<5,000 مثال)
أفضل الممارسات
# مثال: إنشاء مجموعة بيانات يدوية لدعم العملاء
training_data = [
{
"instruction": "العميل يسأل عن سياسة الإرجاع",
"input": "اشتريت هذا اللابتوب قبل 3 أسابيع ولا يعمل. هل يمكنني إرجاعه؟",
"output": "أنا آسف لسماع المشكلة مع لابتوبك. نعم، يمكنك إرجاعه ضمن نافذة الإرجاع 30 يوماً. بما أنه مضى 3 أسابيع، لا تزال مؤهلاً. هل تريد أن أبدأ عملية الإرجاع لك؟"
},
# أضف المزيد من الأمثلة...
]
إرشادات الجودة
| افعل | لا تفعل |
|---|---|
| استخدم أمثلة حقيقية من مجالك | نسخ ولصق استجابات عامة |
| ضمّن الحالات الحدية | ضمّن الأمثلة السهلة فقط |
| نوّع طول وأسلوب الاستجابة | استخدم صياغة متطابقة |
| اطلب من الخبراء مراجعة المخرجات | تخطي مراجعة الجودة |
2. توليد البيانات الاصطناعية
استخدم LLMs لتوليد بيانات التدريب. سريع وقابل للتوسع.
النهج الأساسي
from openai import OpenAI
client = OpenAI()
def generate_training_example(topic, style):
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": f"""ولّد مثال تدريب للضبط الدقيق.
الموضوع: {topic}
الأسلوب: {style}
أرجع JSON بحقول 'instruction' و 'output'."""},
{"role": "user", "content": "ولّد مثالاً واحداً عالي الجودة."}
],
response_format={"type": "json_object"}
)
return response.choices[0].message.content
# توليد الأمثلة
example = generate_training_example(
topic="تصحيح Python",
style="معلم صبور يشرح لمبتدئ"
)
التوليد المبني على البذور
ابدأ بأمثلة يدوية قليلة، ثم وسّع:
seed_examples = [
{"instruction": "اشرح التكرار", "output": "التكرار هو عندما..."},
{"instruction": "ما هو جدول التجزئة؟", "output": "جدول التجزئة هو..."}
]
def expand_dataset(seeds, num_new=100):
prompt = f"""هنا أزواج سؤال وجواب مثال:
{seeds}
ولّد {num_new} أمثلة جديدة متنوعة بنفس الأسلوب.
غطِّ مواضيع برمجة مختلفة.
أرجع كمصفوفة JSON."""
# استدعاء LLM للتوليد
# ...
طريقة Self-Instruct
النموذج يولّد بيانات تدريبه الخاصة:
def self_instruct(base_model, num_examples=1000):
"""
1. ابدأ بمهام بذرية
2. ولّد تعليمات جديدة
3. ولّد استجابات
4. صفّي الأمثلة منخفضة الجودة
"""
tasks = load_seed_tasks() # 175 مهمة بذرية
for _ in range(num_examples):
# عيّن مهام موجودة للسياق
context_tasks = random.sample(tasks, 3)
# ولّد تعليمة جديدة
new_instruction = base_model.generate(
f"بالنظر لهذه المهام: {context_tasks}\n"
"ولّد مهمة جديدة مختلفة:"
)
# ولّد استجابة
response = base_model.generate(new_instruction)
# صفّي وأضف لمجموعة البيانات
if passes_quality_check(new_instruction, response):
tasks.append({"instruction": new_instruction, "output": response})
return tasks
3. زيادة البيانات
وسّع مجموعات البيانات الموجودة من خلال التحويل.
التقنيات
# 1. إعادة الصياغة
original = "اشرح كيف يعمل التمثيل الضوئي"
augmented = [
"كيف يعمل التمثيل الضوئي؟",
"هل يمكنك وصف عملية التمثيل الضوئي؟",
"ماذا يحدث أثناء التمثيل الضوئي؟"
]
# 2. الترجمة العكسية
# عربي → إنجليزي → عربي (يخلق تنويعات طبيعية)
# 3. تنويع التعقيد
simple = "ما هو الذكاء الاصطناعي؟"
medium = "اشرح الذكاء الاصطناعي وفروعه الرئيسية"
complex = "حلل العلاقة بين التعلم الآلي، التعلم العميق، والذكاء الاصطناعي العام"
خط أنابيب الزيادة
def augment_dataset(dataset, augmentation_factor=3):
augmented = []
for example in dataset:
augmented.append(example) # احتفظ بالأصلي
# ولّد إعادات صياغة
paraphrases = generate_paraphrases(example["instruction"], n=augmentation_factor-1)
for para in paraphrases:
augmented.append({
"instruction": para,
"output": example["output"] # نفس المخرج
})
return augmented
دمج الأساليب
أفضل مجموعات البيانات غالباً تجمع الثلاث طرق:
أمثلة يدوية (100-500)
↓ بذر التوليد الاصطناعي
أمثلة اصطناعية (1,000-5,000)
↓ زيادة للتنوع
مجموعة بيانات مُزادة (5,000-20,000)
↓ مراجعة بشرية وتصفية
مجموعة التدريب النهائية
الجودة مقابل الكمية
| حجم مجموعة البيانات | الجودة المطلوبة | النهج النموذجي |
|---|---|---|
| <500 | عالية جداً | يدوي فقط |
| 500-2,000 | عالية | يدوي + اصطناعي بعناية |
| 2,000-10,000 | متوسطة-عالية | اصطناعي + زيادة + تصفية |
| 10,000+ | متوسطة | اصطناعي واسع النطاق + معاينة |
رؤية أساسية: مجموعة بيانات أصغر عالية الجودة تتفوق تقريباً دائماً على مجموعة أكبر مشوشة. ابدأ صغيراً ووسّع فقط إذا احتجت.
بعد ذلك، سنتعلم كيفية تنظيف والتحقق من بيانات التدريب. :::