تخطَّ إلى المحتوى

DataTrove - خطوط أنابيب معالجة بيانات النموذج اللغوي

DataTrove - خطوط أنابيب معالجة بيانات النموذج اللغوي

DataTrove هي مكتبة مفتوحة المصدر من Hugging Face لـ معالجة وتصفية وإزالة تكرار مجموعات بيانات نصية كبيرة لتدريب النموذج اللغوي. توفر مجموعة من كتل خط الأنابيب القابلة للتكوين — قارئات وعوامل تصفية ومراحل إزالة الازدواج والكتاب — التي تعمل دون تغيير عبر الأجهزة الحسابية: محلياً أو على مجموعة Slurm أو Ray. إنها المرجع التنفيذي خلف مجموعات بيانات FineWeb و FineWeb-Edu، مما يجعلها أداة Go-to عندما تريد إعادة إنتاج أو تكييف خط أنابيب تجميع منشور وموجه للمعالج الأول.

التثبيت

الطريقةالأمر
pippip install datatrove
With all extraspip install "datatrove[all]"
Processing extraspip install "datatrove[processing]"
From sourcegit clone https://github.com/huggingface/datatrove && pip install -e .

مفاهيم أساسية

المفهومالمعنى
Pipelineقائمة مرتبة من كتل تتدفق البيانات من خلالها
Blockخطوة واحدة: قارئ أو عامل تصفية أو إزالة ازدواج أو كاتب وما إلى ذلك
Documentالوحدة (text، id، metadata)
Executorحيث يتم تشغيل خط الأنابيب (Local / Slurm / Ray)
Tasksحصص متوازية من عبء العمل

كتل خط الأنابيب

الفئةأمثلة
ReadersWarcReader, JsonlReader, ParquetReader, HuggingFaceDatasetReader
ExtractorsTrafilatura (HTML → text)
FiltersLanguageFilter, GopherQualityFilter, GopherRepetitionFilter, C4QualityFilter, FineWebQualityFilter, URLFilter
DedupMinhashDedup, SentenceDedup, ExactSubstrDedup
WritersJsonlWriter, ParquetWriter
TokenizationDocumentTokenizer

خط أنابيب أساسي

from datatrove.executor import LocalPipelineExecutor
from datatrove.pipeline.readers import JsonlReader
from datatrove.pipeline.filters import LanguageFilter, GopherQualityFilter
from datatrove.pipeline.writers import JsonlWriter

pipeline = [
    JsonlReader("data/input/"),
    LanguageFilter(languages=["en"]),
    GopherQualityFilter(),
    JsonlWriter("data/output/"),
]

executor = LocalPipelineExecutor(pipeline=pipeline, tasks=8)
executor.run()

المنفذون (نفس خط الأنابيب، أجهزة حسابية مختلفة)

المنفذالاستخدام
LocalPipelineExecutorجهاز واحد معالجة متعددة
SlurmPipelineExecutorمجموعات HPC عبر وظائف Slurm
RayPipelineExecutorRay clusters
from datatrove.executor import SlurmPipelineExecutor
SlurmPipelineExecutor(
    pipeline=pipeline, tasks=1000, time="20:00:00",
    partition="cpu", workers=200,
).run()

الازدواج

مراحل إزالة ازدواج DataTrove عادة ما تعمل كخطوط أنابيب متعددة الخطوات (التوقيعات → السلال → العناقيد → عامل التصفية).

الطريقةBlock
MinHash (fuzzy)MinhashDedup (multi-stage)
Exact substringExactSubstrDedup
Sentence-levelSentenceDedup

عوامل تصفية الجودة

عامل التصفيةالكشف عن الأنماط
GopherQualityFilterLength, symbol ratios, bullet/ellipsis limits
GopherRepetitionFilterExcessive repetition
C4QualityFilterC4-style rules (terminal punctuation, etc.)
FineWebQualityFilterFineWeb recipe heuristics
LanguageFilterfastText language ID threshold
URLFilterBlock/allow by URL/domain

سير العمل المشتركة

# Reproduce a FineWeb-style web pipeline (conceptual order)
# WarcReader → URLFilter → Trafilatura → LanguageFilter →
# GopherQuality/Repetition → C4/FineWeb filters → MinhashDedup → JsonlWriter
# Scale the identical pipeline from laptop to cluster by swapping the executor:
#   LocalPipelineExecutor  →  SlurmPipelineExecutor  →  RayPipelineExecutor

DataTrove مقابل NeMo Curator

الجانبDataTroveNeMo Curator
ComputeCPU-firstGPU-native (RAPIDS)
Best forReproducing FineWeb-style datasetsDedup-heavy 10T+ token runs
BackendsLocal / Slurm / RayRay
OriginHugging FaceNVIDIA

الموارد