DataTrove - خطوط أنابيب معالجة بيانات النموذج اللغوي
DataTrove هي مكتبة مفتوحة المصدر من Hugging Face لـ معالجة وتصفية وإزالة تكرار مجموعات بيانات نصية كبيرة لتدريب النموذج اللغوي. توفر مجموعة من كتل خط الأنابيب القابلة للتكوين — قارئات وعوامل تصفية ومراحل إزالة الازدواج والكتاب — التي تعمل دون تغيير عبر الأجهزة الحسابية: محلياً أو على مجموعة Slurm أو Ray. إنها المرجع التنفيذي خلف مجموعات بيانات FineWeb و FineWeb-Edu، مما يجعلها أداة Go-to عندما تريد إعادة إنتاج أو تكييف خط أنابيب تجميع منشور وموجه للمعالج الأول.
التثبيت
| الطريقة | الأمر |
|---|
| pip | pip install datatrove |
| With all extras | pip install "datatrove[all]" |
| Processing extras | pip install "datatrove[processing]" |
| From source | git clone https://github.com/huggingface/datatrove && pip install -e . |
مفاهيم أساسية
| المفهوم | المعنى |
|---|
| Pipeline | قائمة مرتبة من كتل تتدفق البيانات من خلالها |
| Block | خطوة واحدة: قارئ أو عامل تصفية أو إزالة ازدواج أو كاتب وما إلى ذلك |
| Document | الوحدة (text، id، metadata) |
| Executor | حيث يتم تشغيل خط الأنابيب (Local / Slurm / Ray) |
| Tasks | حصص متوازية من عبء العمل |
كتل خط الأنابيب
| الفئة | أمثلة |
|---|
| Readers | WarcReader, JsonlReader, ParquetReader, HuggingFaceDatasetReader |
| Extractors | Trafilatura (HTML → text) |
| Filters | LanguageFilter, GopherQualityFilter, GopherRepetitionFilter, C4QualityFilter, FineWebQualityFilter, URLFilter |
| Dedup | MinhashDedup, SentenceDedup, ExactSubstrDedup |
| Writers | JsonlWriter, ParquetWriter |
| Tokenization | DocumentTokenizer |
خط أنابيب أساسي
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 |
RayPipelineExecutor | Ray 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 substring | ExactSubstrDedup |
| Sentence-level | SentenceDedup |
عوامل تصفية الجودة
| عامل التصفية | الكشف عن الأنماط |
|---|
GopherQualityFilter | Length, symbol ratios, bullet/ellipsis limits |
GopherRepetitionFilter | Excessive repetition |
C4QualityFilter | C4-style rules (terminal punctuation, etc.) |
FineWebQualityFilter | FineWeb recipe heuristics |
LanguageFilter | fastText language ID threshold |
URLFilter | Block/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
| الجانب | DataTrove | NeMo Curator |
|---|
| Compute | CPU-first | GPU-native (RAPIDS) |
| Best for | Reproducing FineWeb-style datasets | Dedup-heavy 10T+ token runs |
| Backends | Local / Slurm / Ray | Ray |
| Origin | Hugging Face | NVIDIA |
الموارد