Ir al contenido

NeMo Curator - Curación de Datos en GPU para LLMs

NeMo Curator - Curación de Datos en GPU para LLMs

NVIDIA NeMo Curator es un conjunto de herramientas de curación de datos acelerado por GPU de código abierto para preparar conjuntos de datos a gran escala y alta calidad para pre-entrenar o ajustar finamente LLMs. Construye canalizaciones repetibles que descargan y extraen datos, limpian y normalizan texto, identifican idioma, filtran por calidad, clasifican dominio/toxicidad, aplican filtros de privacidad, y dedulican (exacta y difusa) — escalando desde un portátil a miles de GPUs vía RAPIDS/cuDF y Ray. A partir de los lanzamientos 26.x utiliza una arquitectura de canalización basada en Ray a través de texto, imagen, video y audio.

La calidad de curación impulsa la calidad del modelo. El paso costoso e impactante es generalmente la deduplicación; la dedup en GPU de NeMo Curator es su ventaja titular.

Instalación

MétodoComando
pip (módulos CPU)pip install nemo-curator
pip con extras CUDApip install "nemo-curator[cuda12x]"
Contenedorusa imagen de contenedor NeMo/Curator de NVIDIA
RequisitosGPU de NVIDIA + CUDA para módulos acelerados; Ray para distribución

Conceptos de Canalización

ConceptoSignificado
DocumentDatasetLa abstracción de conjunto de datos (respaldada por Dask/cuDF)
MóduloUn paso de curación (filtro, dedup, clasificador, …)
CanalizaciónMódulos ordenados formando un flujo reproducible
BackendEjecución CPU (pandas) o GPU (cuDF/RAPIDS)
Tiempo de ejecución RayDistribuye trabajo entre núcleos/GPUs/nodos

Módulos Principales

EtapaMódulo(s)
Descargar/extractorDescargadores de Common Crawl, arXiv, Wikipedia; extracción de texto
ID de idiomaIdentificación de idioma basada en fastText
LimpiezaCorrección Unicode, eliminación de código estándar/URL, reformateo
Filtrado de calidadFiltros heurísticos + puntuación de calidad basada en clasificador
ClasificaciónClasificadores de dominio y toxicidad
PII / privacidadDetecta y redacta datos personales
DeduplicaciónDedup exacta (hash) y difusa (MinHash/LSH) en GPU

Filtrado de Calidad (bosquejo)

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)

Deduplicación (bosquejo)

from nemo_curator import FuzzyDuplicates, FuzzyDuplicatesConfig

config = FuzzyDuplicatesConfig(
    cache_dir="./cache",
    num_buckets=20,
    hashes_per_bucket=13,   # Parámetros MinHash/LSH
)
fuzzy = FuzzyDuplicates(config=config)
duplicates = fuzzy(dataset)        # Detección de casi-duplicados acelerada por GPU
deduped = dataset.df[~dataset.df["id"].isin(duplicates.df["id"])]
Tipo de dedupMétodo
ExactaHashing de documento
DifusaMinHash + LSH (GPU vía RAPIDS)
SemánticaEliminación de cuasi-duplicados basada en incrustación

Clasificadores y Filtrado

ClasificadorBanderas
DominioEtiquetas de tema/dominio para control de mezcla
CalidadPuntuación de calidad alta/baja
ToxicidadContenido inseguro para eliminación
IdiomaMantener/soltar por idioma

Escalado

MecanismoNota
GPU (cuDF/RAPIDS)Acelera filtrado y dedup
Tiempo de ejecución RayDistribuye entre GPUs y nodos
DaskProcesamiento fuera de núcleo para corpus enormes
Punto de controlReanuda ejecuciones de curación largas

Flujos de Trabajo Comunes

# Curación reproducible de pre-entrenamiento: limpia → filtra por calidad → dedup
from nemo_curator.datasets import DocumentDataset
ds = DocumentDataset.read_json("raw/*.jsonl", backend="cudf")
# 1) ID de idioma + limpieza  2) ScoreFilter de calidad  3) FuzzyDuplicates
# escribe el corpus curado y deduplicado para entrenamiento

NeMo Curator vs DataTrove

AspectoNeMo CuratorDataTrove
AceleraciónGPU-nativo (RAPIDS)CPU-primero
Mejor paraEjecuciones pesadas en dedup, novela grande (10T+ tokens)Reproducción de canalizaciones estilo FineWeb
DistribuciónRayEjecutores local/Slurm/Ray
ModalidadesTexto, imagen, video, audioEnfocado en texto

Recursos