إنتقل إلى المحتوى الرئيسي

الفصل 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-3300 مليار~570 جيجابايت
LLaMA1.4 تريليون~1.4 تيرابايت
LLaMA 22 تريليون~2 تيرابايت

النقاط الرئيسية​

ملخص
  1. جودة البيانات > كمية البيانات
  2. إزالة التكرار ضرورية لكفاءة التدريب
  3. المصادر المتنوعة تحسن من تعميم النموذج