콘텐츠로 이동

DataTrove - LLM 데이터 처리 파이프라인 치트시트

DataTrove - LLM 데이터 처리 파이프라인 치트시트

DataTrove는 대규모 텍스트 데이터셋을 처리, 필터링, 중복 제거하기 위한 Hugging Face의 오픈소스 라이브러리입니다. 판독기, 필터, 중복 제거 단계, 작성자(writer)로 구성되는 composable 파이프라인 블록을 제공합니다. 실행 백엔드 변경 없이 로컬, Slurm 클러스터 또는 Ray에서 동일하게 실행됩니다. FineWeb 및 FineWeb-Edu 데이터셋 뒤의 참조 구현이므로, 게시된 CPU 우선 큐레이션 파이프라인을 재현하거나 조정하려 할 때 가는 도구입니다.

설치

방법명령어
pippip install datatrove
모든 extras 포함pip install "datatrove[all]"
Processing extraspip install "datatrove[processing]"
소스에서git clone https://github.com/huggingface/datatrove && pip install -e .

핵심 개념

개념의미
Pipeline데이터가 흐르는 순서 있는 블록 목록
Block한 단계: reader, filter, dedup, writer 등
Document단위 (text, id, metadata)
Executor파이프라인이 실행되는 곳 (Local / Slurm / Ray)
Tasks워크로드의 병렬 샤드

파이프라인 블록

카테고리
ReadersWarcReader, JsonlReader, ParquetReader, HuggingFaceDatasetReader
ExtractorsTrafilatura (HTML → 텍스트)
FiltersLanguageFilter, GopherQualityFilter, GopherRepetitionFilter, C4QualityFilter, FineWebQualityFilter, URLFilter
DedupMinhashDedup, SentenceDedup, ExactSubstrDedup
WritersJsonlWriter, ParquetWriter
TokenizationDocumentTokenizer

기본 파이프라인

from datatrove.executor import LocalPipelineExecutor
from datatrove.pipeline.readers import JsonlReader
from datatrove.pipeline.filters import LanguageFilter, GopherQualityFilter
from datatrove.pipeline.writers import JsonlWriter

pipeline = [
    JsonlReader("data/input/"),
    LanguageFilter(languages=["en"]),
    GopherQualityFilter(),
    JsonlWriter("data/output/"),
]

executor = LocalPipelineExecutor(pipeline=pipeline, tasks=8)
executor.run()

Executors (같은 파이프라인, 다른 백엔드)

Executor사용
LocalPipelineExecutor한 머신, multiprocessing
SlurmPipelineExecutorHPC 클러스터 via Slurm jobs
RayPipelineExecutorRay 클러스터
from datatrove.executor import SlurmPipelineExecutor
SlurmPipelineExecutor(
    pipeline=pipeline, tasks=1000, time="20:00:00",
    partition="cpu", workers=200,
).run()

중복 제거

DataTrove의 중복 제거 단계는 일반적으로 다중 단계 파이프라인으로 실행됩니다 (서명 → 버킷 → 클러스터 → 필터).

방법블록
MinHash (퍼지)MinhashDedup (다단계)
Exact substringExactSubstrDedup
Sentence-levelSentenceDedup

품질 필터

필터휴리스틱
GopherQualityFilter길이, 기호 비율, bullet/생략 부호 제한
GopherRepetitionFilter과도한 반복
C4QualityFilterC4 스타일 규칙 (터미널 구두점 등)
FineWebQualityFilterFineWeb 레시피 휴리스틱
LanguageFilterfastText 언어 ID 임계값
URLFilterURL/도메인별 블록/허용

일반적인 워크플로우

# FineWeb 스타일 웹 파이프라인 재현 (개념적 순서)
# WarcReader → URLFilter → Trafilatura → LanguageFilter →
# GopherQuality/Repetition → C4/FineWeb filters → MinhashDedup → JsonlWriter
# executor를 교환하여 노트북에서 클러스터로 동일한 파이프라인 스케일:
#   LocalPipelineExecutor  →  SlurmPipelineExecutor  →  RayPipelineExecutor

DataTrove vs NeMo Curator

측면DataTroveNeMo Curator
ComputeCPU 우선GPU 네이티브 (RAPIDS)
최적FineWeb 스타일 데이터셋 재현중복 제거 집약적 10T+ 토큰 실행
BackendsLocal / Slurm / RayRay
OriginHugging FaceNVIDIA

리소스