الفصل 1: تنسيقات مجموعات البيانات
هيكلة البيانات للتخصيص الدقيق
تخدم التنسيقات المختلفة أغراضًا مختلفة. فهمها يساعدك في اختيار وإعداد البيانات بشكل فعال.
التنسيقات الشائعة
1. تنسيق Alpaca
تعليمات ذات جولة واحدة:
{
"instruction": "لخص النص التالي",
"input": "الثعلب البني السريع يقفز فوق الكلب الكسول...",
"output": "ثعلب يقفز فوق كلب."
}
# قالب Alpaca
template = """### Instruction:
{instruction}
### Input:
{input}
### Response:
{output}"""
2. تنسيق ShareGPT
محادثات متعددة الجولات:
{
"conversations": [
{"from": "system", "value": "أنت مساعد مفيد."},
{"from": "human", "value": "ما هو بايثون؟"},
{"from": "gpt", "value": "بايثون هي لغة برمجة..."},
{"from": "human", "value": "كيف أقوم بتثبيتها؟"},
{"from": "gpt", "value": "يمكنك تنزيلها من python.org..."}
]
}
3. إكمال بسيط
نص عادي للتدريب المسبق المستمر:
{"text": "مستند كامل أو فقرة من النص..."}
قوالب الدردشة
تتوقع النماذج تنسيقات محددة. استخدم قالب المحول النصي:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B-Instruct")
messages = [
{"role": "system", "content": "أنت مفيد."},
{"role": "user", "content": "مرحبًا!"},
{"role": "assistant", "content": "مرحبًا! كيف يمكنني المساعدة؟"},
]
text = tokenizer.apply_chat_template(messages, tokenize=False)
print(text)
تحويل التنسيقات
def alpaca_to_messages(example):
"""تحويل تنسيق Alpaca إلى رسائل."""
messages = []
if example.get("input"):
user_content = f"{example['instruction']}\n\n{example['input']}"
else:
user_content = example["instruction"]
messages.append({"role": "user", "content": user_content})
messages.append({"role": "assistant", "content": example["output"]})
return {"messages": messages}
# تطبيق على مجموعة البيانات
dataset = dataset.map(alpaca_to_messages)
النقاط الرئيسية
✅ Alpaca: تعليمات ذات جولة واحدة ✅ ShareGPT: محادثات متعددة الجولات ✅ استخدم دائمًا قالب الدردشة الخاص بالنموذج ✅ الاتساق في التنسيق أمر حاسم