콘텐츠로 이동

NeMo Curator - LLM용 GPU 데이터 큐레이션 치트시트

NeMo Curator - LLM용 GPU 데이터 큐레이션 치트시트

NVIDIA NeMo Curator는 LLM을 사전 학습 또는 미세 조정하기 위한 대규모 고품질 데이터셋을 준비하기 위한 오픈소스 GPU 가속 데이터 큐레이션 도구킷입니다. 데이터를 다운로드하고 추출하며, 텍스트를 정제하고 정규화하며, 언어를 식별하고, 품질로 필터링하고, 도메인/독성을 분류하며, 개인정보 필터를 적용하고, 중복 제거(정확 및 퍼지)하는 반복 가능한 파이프라인을 구축합니다. RAPIDS/cuDF 및 Ray를 통해 노트북에서 수천 개 GPU로 확장됩니다. 26.x 릴리스부터 Ray 기반 파이프라인 아키텍처를 텍스트, 이미지, 비디오, 오디오 전체에 사용합니다.

큐레이션 품질이 모델 품질을 결정합니다. 일반적으로 비용이 많이 들고 영향이 큰 단계는 중복 제거입니다. NeMo Curator의 GPU 중복 제거가 주요 장점입니다.

설치

방법명령어
pip (CPU 모듈)pip install nemo-curator
CUDA extras 포함 pippip install "nemo-curator[cuda12x]"
ContainerNVIDIA의 NeMo/Curator 컨테이너 이미지 사용
요구 사항가속 모듈용 NVIDIA GPU(s) + CUDA; 분산용 Ray

파이프라인 개념

개념의미
DocumentDataset데이터셋 추상화 (Dask/cuDF 지원)
Module큐레이션 단계 (필터, 중복 제거, 분류자, …)
Pipeline반복 가능한 흐름을 형성하는 순서 있는 모듈
BackendCPU (pandas) 또는 GPU (cuDF/RAPIDS) 실행
Ray runtime코어/GPU/노드 전체에서 작업 분배

핵심 모듈

단계모듈
Download/extractCommon Crawl, arXiv, Wikipedia 다운로더; 텍스트 추출
Language IDfastText 기반 언어 식별
CleaningUnicode 수정, 보일러플레이트/URL 제거, 재포장
Quality filtering휴리스틱 필터 + 분류자 기반 품질 점수
Classification도메인 및 독성 분류자
PII / privacy개인 데이터 감지 및 수정
DeduplicationGPU의 정확 (해시) 및 퍼지 (MinHash/LSH) 중복 제거

품질 필터링 (스케치)

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)

중복 제거 (스케치)

from nemo_curator import FuzzyDuplicates, FuzzyDuplicatesConfig

config = FuzzyDuplicatesConfig(
    cache_dir="./cache",
    num_buckets=20,
    hashes_per_bucket=13,   # MinHash/LSH 파라미터
)
fuzzy = FuzzyDuplicates(config=config)
duplicates = fuzzy(dataset)        # GPU 가속 근처 중복 감지
deduped = dataset.df[~dataset.df["id"].isin(duplicates.df["id"])]
중복 제거 타입방법
Exact문서 해싱
FuzzyMinHash + LSH (RAPIDS를 통한 GPU)
Semantic임베딩 기반 근처 중복 제거

분류자 & 필터링

분류자플래그
Domain혼합 제어를 위한 주제/도메인 레이블
Quality높음/낮음 품질 점수
Toxicity제거용 안전하지 않은 콘텐츠
Language언어로 유지/삭제

스케일링

메커니즘참고
GPU (cuDF/RAPIDS)필터링 및 중복 제거 가속
Ray runtimeGPU 및 노드 간 분배
Dask거대한 코퍼스를 위한 코어 외 처리
Checkpointing긴 큐레이션 실행 재개

일반적인 워크플로우

# 반복 가능한 사전 학습 큐레이션: 정제 → 품질 필터 → 중복 제거
from nemo_curator.datasets import DocumentDataset
ds = DocumentDataset.read_json("raw/*.jsonl", backend="cudf")
# 1) 언어 ID + 정제  2) 품질 ScoreFilter  3) FuzzyDuplicates
# 학습용 큐레이션, 중복 제거된 코퍼스 작성

NeMo Curator vs DataTrove

측면NeMo CuratorDataTrove
가속GPU 네이티브 (RAPIDS)CPU 우선
최적중복 제거 집약적, 새로운 대규모 실행 (10T+ 토큰)FineWeb 스타일 파이프라인 재현
분산RayLocal/Slurm/Ray executors
Modalities텍스트, 이미지, 비디오, 오디오텍스트 중심

리소스