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

NeMo Curator - تجميع بيانات GPU للنماذج اللغوية

NeMo Curator - تجميع بيانات GPU للنماذج اللغوية

NVIDIA NeMo Curator هي مجموعة أدوات تجميع البيانات المسرعة بـ GPU مفتوحة المصدر لتحضير مجموعات بيانات كبيرة الحجم وعالية الجودة لـ pretraining أو fine-tune النماذج اللغوية. إنها تبني خطوط أنابيب قابلة للتكرار التي تنزل واستخراج البيانات وتنظيف وتطبيع النص وتحديد اللغة والتصفية والجودة وتطبيق عوامل الخصوصية و الازدواج (دقيق وضبابي) — تتسع من الكمبيوتر المحمول إلى آلاف وحدات معالجة الرسومات عبر RAPIDS/cuDF و Ray. اعتباراً من إصدارات 26.x تستخدم معمارية خط أنابيب Ray عبر النصوص والصور والفيديو والصوت.

جودة التجميع تقود جودة النموذج. الخطوة المكلفة والعالية التأثير عادة ما تكون الازدواج؛ إزالة GPU من NeMo Curator هي ميزتها الرئيسية.

التثبيت

الطريقةالأمر
pip (CPU modules)pip install nemo-curator
pip with CUDA extraspip install "nemo-curator[cuda12x]"
Containeruse NVIDIA”s NeMo/Curator container image
RequirementsNVIDIA GPU(s) + CUDA for accelerated modules; Ray for distribution

مفاهيم خط الأنابيب

المفهومالمعنى
DocumentDatasetالتجريد مجموعة البيانات (مدعوم من Dask/cuDF)
Moduleخطوة التجميع (عامل التصفية والإزالة والمصنف …)
Pipelineوحدات مرتبة تشكل تدفقاً قابلاً للتكرار
Backendتنفيذ CPU (pandas) أو GPU (cuDF/RAPIDS)
Ray runtimeيوزع العمل عبر النوى/GPUs/العقد

الوحدات الأساسية

المرحلةالوحدة(s)
Download/extractCommon Crawl, arXiv, Wikipedia downloaders; text extraction
Language IDfastText-based language identification
CleaningUnicode fixing, boilerplate/URL removal, reformatting
Quality filteringHeuristic filters + classifier-based quality scoring
ClassificationDomain and toxicity classifiers
PII / privacyDetect and redact personal data
DeduplicationExact (hash) and fuzzy (MinHash/LSH) dedup on GPU

تصفية الجودة (sketch)

from nemo_curator import ScoreFilter
from nemo_curator.filters import WordCountFilter
from nemo_curator.datasets import DocumentDataset

dataset = DocumentDataset.read_json("input/*.jsonl", backend="cudf")

filter_step = ScoreFilter(
    WordCountFilter(min_words=50, max_words=100000),
    text_field="text",
)
clean = filter_step(dataset)
clean.to_json("filtered/", write_to_filename=True)

الازدواج (sketch)

from nemo_curator import FuzzyDuplicates, FuzzyDuplicatesConfig

config = FuzzyDuplicatesConfig(
    cache_dir="./cache",
    num_buckets=20,
    hashes_per_bucket=13,   # MinHash/LSH parameters
)
fuzzy = FuzzyDuplicates(config=config)
duplicates = fuzzy(dataset)        # GPU-accelerated near-dup detection
deduped = dataset.df[~dataset.df["id"].isin(duplicates.df["id"])]
نوع Dedupالطريقة
ExactDocument hashing
FuzzyMinHash + LSH (GPU via RAPIDS)
SemanticEmbedding-based near-duplicate removal

المصنفات والتصفية

المصنفالأعلام
DomainTopic/domain labels for mixing control
QualityHigh/low quality scoring
ToxicityUnsafe content for removal
LanguageKeep/drop by language

التوسع

الآليةملاحظة
GPU (cuDF/RAPIDS)Accelerates filtering and dedup
Ray runtimeDistributes across GPUs and nodes
DaskOut-of-core processing for huge corpora
CheckpointingResume long curation runs

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

# Reproducible pretraining curation: clean → quality filter → dedup
from nemo_curator.datasets import DocumentDataset
ds = DocumentDataset.read_json("raw/*.jsonl", backend="cudf")
# 1) language ID + cleaning  2) quality ScoreFilter  3) FuzzyDuplicates
# write the curated, deduplicated corpus for training

NeMo Curator مقابل DataTrove

الجانبNeMo CuratorDataTrove
AccelerationGPU-native (RAPIDS)CPU-first
Best forDedup-heavy, novel large runs (10T+ tokens)Reproducing FineWeb-style pipelines
DistributionRayLocal/Slurm/Ray executors
ModalitiesText, image, video, audioText-focused

الموارد