الدرس 5 من 24

إعداد مجموعة البيانات

مجموعات بيانات ضبط التعليمات

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

جودة بيانات التدريب هي العامل الأهم في نجاح الضبط الدقيق. دعنا نفهم الصيغ والهياكل المستخدمة في ضبط التعليمات.

صيغ مجموعات البيانات

صيغة Alpaca

الصيغة الأكثر شيوعاً لضبط التعليمات:

{
  "instruction": "اكتب هايكو عن البرمجة",
  "input": "",
  "output": "الكود يتدفق كالماء\nالأخطاء تختبئ في الزوايا المظلمة\nتصحيح، تكرار، فوز"
}

مع مدخل اختياري:

{
  "instruction": "ترجم التالي إلى الفرنسية",
  "input": "مرحباً، كيف حالك؟",
  "output": "Bonjour, comment allez-vous?"
}

صيغة ShareGPT/المحادثة

للمحادثات متعددة الأدوار:

{
  "conversations": [
    {"from": "human", "value": "ما هو التعلم الآلي؟"},
    {"from": "gpt", "value": "التعلم الآلي هو فرع من الذكاء الاصطناعي..."},
    {"from": "human", "value": "هل يمكنك إعطاء مثال؟"},
    {"from": "gpt", "value": "بالتأكيد! مثال شائع هو تصفية البريد العشوائي..."}
  ]
}

صيغة ChatML

تُستخدم من قبل العديد من النماذج الحديثة:

{
  "messages": [
    {"role": "system", "content": "أنت مساعد برمجة مفيد."},
    {"role": "user", "content": "اكتب دالة Python لعكس نص"},
    {"role": "assistant", "content": "def reverse_string(s):\n    return s[::-1]"}
  ]
}

قوالب المحادثة

النماذج الحديثة تستخدم قوالب محادثة لهيكلة المحادثات. المُرمّز يتعامل مع هذا تلقائياً:

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.2-3B-Instruct")

messages = [
    {"role": "system", "content": "أنت مساعد مفيد."},
    {"role": "user", "content": "مرحباً!"},
    {"role": "assistant", "content": "أهلاً! كيف يمكنني مساعدتك اليوم؟"}
]

# تطبيق قالب المحادثة
formatted = tokenizer.apply_chat_template(messages, tokenize=False)
print(formatted)

المخرج لـ Llama 3.2:

<|begin_of_text|><|start_header_id|>system<|end_header_id|>

أنت مساعد مفيد.<|eot_id|><|start_header_id|>user<|end_header_id|>

مرحباً!<|eot_id|><|start_header_id|>assistant<|end_header_id|>

أهلاً! كيف يمكنني مساعدتك اليوم؟<|eot_id|>

مجموعات بيانات التدريب الشائعة

مجموعة البياناتالحجمحالة الاستخدام
Alpaca52Kاتباع التعليمات العامة
ShareGPT90Kالذكاء الاصطناعي المحادثي
OpenAssistant160Kسلوك المساعد المفيد
Dolly15Kمفتوح المصدر، قابل للاستخدام تجارياً
FLAN1M+ضبط تعليمات متعدد المهام

تحميل مجموعات البيانات

from datasets import load_dataset

# التحميل من Hugging Face Hub
dataset = load_dataset("tatsu-lab/alpaca")

# التحميل من ملف JSON محلي
dataset = load_dataset("json", data_files="my_data.json")

# التحميل من CSV
dataset = load_dataset("csv", data_files="my_data.csv")

# التقسيم إلى تدريب/تحقق
dataset = dataset["train"].train_test_split(test_size=0.1)

متطلبات هيكل مجموعة البيانات

لـ SFTTrainer، مجموعة بياناتك تحتاج:

  1. عمود نص (إذا استخدمت صيغة بسيطة):
dataset = dataset.map(lambda x: {
    "text": f"### التعليمة:\n{x['instruction']}\n\n### الاستجابة:\n{x['output']}"
})
  1. عمود رسائل (إذا استخدمت صيغة محادثة):
dataset = dataset.map(lambda x: {
    "messages": [
        {"role": "user", "content": x["instruction"]},
        {"role": "assistant", "content": x["output"]}
    ]
})

أفضل الممارسات

  1. الاتساق: استخدم نفس الصيغة في كل مجموعة البيانات
  2. الاكتمال: ضمّن محثات النظام إذا احتاجت حالة استخدامك
  3. التنوع: امزج أنواع مختلفة من التعليمات
  4. الجودة فوق الكمية: 1,000 مثال ممتاز > 10,000 مثال متوسط

بعد ذلك، سنتعلم كيفية إنشاء بيانات تدريب عالية الجودة خاصة بك. :::

مراجعة سريعة: كيف تجد هذا الدرس؟

اختبار

الوحدة 2: إعداد مجموعة البيانات

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.