Aller au contenu

NeMo Curator - Curation de données GPU pour LLMs

NeMo Curator - Curation de données GPU pour LLMs

NVIDIA NeMo Curator est un kit d”outils open-source de curation de données accélérée par GPU pour préparer des ensembles de données de grande taille et de haute qualité pour pré-entraîner ou affiner les LLMs. Il construit des pipelines répétables qui téléchargent et extraient les données, nettoient et normalisent le texte, identifient la langue, filtrent la qualité, classent le domaine/toxicité, appliquent des filtres de confidentialité, et déduplicent (exactes et approximatives) — évolutif d”un ordinateur portable à des milliers de GPU via RAPIDS/cuDF et Ray. À partir des versions 26.x, il utilise une architecture de pipeline basée sur Ray sur le texte, l”image, la vidéo et l”audio.

La qualité de la curation détermine la qualité du modèle. L”étape coûteuse et à haut impact est généralement la déduplication; la dédup GPU de NeMo Curator est son avantage principal.

Installation

MéthodeCommande
pip (modules CPU)pip install nemo-curator
pip avec extras CUDApip install "nemo-curator[cuda12x]"
Conteneurutiliser l”image du conteneur NeMo/Curator d”NVIDIA
ConditionsGPUs NVIDIA + CUDA pour les modules accélérés; Ray pour la distribution

Concepts du pipeline

ConceptSignification
DocumentDatasetL”abstraction d”ensemble de données (soutenue par Dask/cuDF)
ModuleUne étape de curation (filtre, dedup, classificateur, …)
PipelineModules ordonnés formant un flux reproductible
BackendExécution CPU (pandas) ou GPU (cuDF/RAPIDS)
Exécution RayDistribue le travail entre les cœurs/GPUs/nœuds

Modules principaux

ÉtapeModule(s)
Télécharger/extraireTéléchargeurs Common Crawl, arXiv, Wikipedia; extraction de texte
Identification de langueIdentification de langue basée sur fastText
NettoyageCorrection Unicode, suppression du boilerplate/URL, reformatage
Filtrage de qualitéFiltres heuristiques + notation de qualité basée sur le classificateur
ClassificationClassificateurs de domaine et de toxicité
PII / confidentialitéDétecter et caviardé les données personnelles
DéduplicationDedup exact (hash) et approximatif (MinHash/LSH) sur GPU

Filtrage de qualité (esquisse)

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)

Déduplication (esquisse)

from nemo_curator import FuzzyDuplicates, FuzzyDuplicatesConfig

config = FuzzyDuplicatesConfig(
    cache_dir="./cache",
    num_buckets=20,
    hashes_per_bucket=13,   # Paramètres MinHash/LSH
)
fuzzy = FuzzyDuplicates(config=config)
duplicates = fuzzy(dataset)        # Détection d''approximation GPU-accélérée
deduped = dataset.df[~dataset.df["id"].isin(duplicates.df["id"])]
Type de dedupMéthode
ExactHachage du document
ApproximatifMinHash + LSH (GPU via RAPIDS)
SémantiqueSuppression d”approximation basée sur l”intégration

Classificateurs et filtrage

ClassificateurSignale
DomaineÉtiquettes de sujet/domaine pour le contrôle de mélange
QualitéNotation de qualité haute/basse
ToxicitéContenu non sûr pour suppression
LangueGarder/supprimer par langue

Mise à l”échelle

MécanismeNote
GPU (cuDF/RAPIDS)Accélère le filtrage et la dedup
Exécution RayDistribue entre les GPUs et les nœuds
DaskTraitement hors-cœur pour les corpus énormes
Points de contrôleReprendre les longues exécutions de curation

Flux de travail courants

# Curation reproductible de pré-entraînement: nettoyer → filtrer la qualité → dedup
from nemo_curator.datasets import DocumentDataset
ds = DocumentDataset.read_json("raw/*.jsonl", backend="cudf")
# 1) ID de langue + nettoyage  2) ScoreFilter de qualité  3) FuzzyDuplicates
# écrire le corpus curé et dédupliqué pour l''entraînement

NeMo Curator vs DataTrove

AspectNeMo CuratorDataTrove
AccélérationGPU natif (RAPIDS)CPU d”abord
Meilleur pourDedup-lourd, nouvelles grandes exécutions (10T+ tokens)Reproduction de pipelines FineWeb
DistributionRayExécuteurs locaux/Slurm/Ray
ModalitésTexte, image, vidéo, audioTexte-focalisé

Ressources