الفصل 2: جمع البيانات والمعالجة المسبقة
مقدمة
تحدد جودة وتنوع بيانات التدريب بشكل أساسي قدرات النموذج. يتم تدريب نماذج اللغة الكبيرة الحديثة على تريليونات من الموجّهات من مصادر متنوعة.
مصادر البيانات
الزحف الشامل
- بيتابايت من بيانات الويب
- يتطلب تصفية مكثفة
- نقطة البداية الأكثر شيوعًا
المصادر المنسقة
data_sources = {
"Wikipedia": "جودة عالية، موسوعية",
"Books": "نصوص طويلة، متماسكة",
"ArXiv": "أوراق علمية",
"GitHub": "كود ووثائق",
"StackOverflow": "صيغة الأسئلة والأجوبة",
}
خط معالجة البيانات
بيانات الويب الخام → إزالة التكرار → تصفية الجودة → تحويل إلى موجّهات → بيانات التدريب
1. إزالة التكرار
from datasketch import MinHash, MinHashLSH
def create_minhash(text, num_perm=128):
"""إنشاء توقيع MinHash لإزالة التكرار."""
m = MinHash(num_perm=num_perm)
for word in text.split():
m.update(word.encode('utf8'))
return m
2. تصفية الجودة
def quality_filter(text):
"""تصفية الوثائق ذات الجودة المنخفضة."""
# تصفية الطول
if len(text.split()) < 50:
return False
# تصفية التكرار
lines = text.split('\n')
unique_lines = set(lines)
if len(unique_lines) / len(lines) < 0.5:
return False
# اكتشاف اللغة
if not is_english(text):
return False
return True
3. تحويل إلى موجّهات
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b")
def tokenize_dataset(texts, max_length=2048):
"""تحويل النصوص إلى موجّهات وتجزئتها للتدريب."""
all_tokens = []
for text in texts:
tokens = tokenizer.encode(text)
all_tokens.extend(tokens)
# إنشاء أجزاء بطول ثابت
chunks = [
all_tokens[i:i+max_length]
for i in range(0, len(all_tokens), max_length)
]
return chunks
حجم مجموعة البيانات
| النموذج | موجّهات التدريب | حجم البيانات |
|---|---|---|
| GPT-3 | 300 مليار | ~570 جيجابايت |
| LLaMA | 1.4 تريليون | ~1.4 تيرابايت |
| LLaMA 2 | 2 تريليون | ~2 تيرابايت |
النقاط الرئيسية
ملخص
- جودة البيانات > كمية البيانات
- إزالة التكرار ضرورية لكفاءة التدريب
- المصادر المتنوعة تحسن من تعميم النموذج