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éthode | Commande |
|---|
| pip (modules CPU) | pip install nemo-curator |
| pip avec extras CUDA | pip install "nemo-curator[cuda12x]" |
| Conteneur | utiliser l”image du conteneur NeMo/Curator d”NVIDIA |
| Conditions | GPUs NVIDIA + CUDA pour les modules accélérés; Ray pour la distribution |
Concepts du pipeline
| Concept | Signification |
|---|
DocumentDataset | L”abstraction d”ensemble de données (soutenue par Dask/cuDF) |
| Module | Une étape de curation (filtre, dedup, classificateur, …) |
| Pipeline | Modules ordonnés formant un flux reproductible |
| Backend | Exécution CPU (pandas) ou GPU (cuDF/RAPIDS) |
| Exécution Ray | Distribue le travail entre les cœurs/GPUs/nœuds |
Modules principaux
| Étape | Module(s) |
|---|
| Télécharger/extraire | Téléchargeurs Common Crawl, arXiv, Wikipedia; extraction de texte |
| Identification de langue | Identification de langue basée sur fastText |
| Nettoyage | Correction Unicode, suppression du boilerplate/URL, reformatage |
| Filtrage de qualité | Filtres heuristiques + notation de qualité basée sur le classificateur |
| Classification | Classificateurs de domaine et de toxicité |
| PII / confidentialité | Détecter et caviardé les données personnelles |
| Déduplication | Dedup 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 dedup | Méthode |
|---|
| Exact | Hachage du document |
| Approximatif | MinHash + LSH (GPU via RAPIDS) |
| Sémantique | Suppression d”approximation basée sur l”intégration |
Classificateurs et filtrage
| Classificateur | Signale |
|---|
| 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 |
| Langue | Garder/supprimer par langue |
Mise à l”échelle
| Mécanisme | Note |
|---|
| GPU (cuDF/RAPIDS) | Accélère le filtrage et la dedup |
| Exécution Ray | Distribue entre les GPUs et les nœuds |
| Dask | Traitement hors-cœur pour les corpus énormes |
| Points de contrôle | Reprendre 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
| Aspect | NeMo Curator | DataTrove |
|---|
| Accélération | GPU natif (RAPIDS) | CPU d”abord |
| Meilleur pour | Dedup-lourd, nouvelles grandes exécutions (10T+ tokens) | Reproduction de pipelines FineWeb |
| Distribution | Ray | Exécuteurs locaux/Slurm/Ray |
| Modalités | Texte, image, vidéo, audio | Texte-focalisé |
Ressources