コンテンツにスキップ

DataTrove - LLM データ処理パイプライン チートシート

DataTrove - LLM データ処理パイプライン チートシート

DataTrove は Hugging Face のオープンソースライブラリ — LLM トレーニング用の大規模なテキストデータセットを処理、フィルタ、重複排除。構成可能なパイプラインブロック — リーダー、フィルタ、重複排除ステージ、ライター — を提供。エグゼキューションバックエンド全体で変わらずに実行:ローカル、Slurm クラスタ、または Ray。FineWeb および FineWeb-Edu データセットの背後にある参照実装。CPU ファーストのキュレーションパイプラインを再現または適応させたい場合の goto ツール。

インストール

方法コマンド
pippip install datatrove
全エクストラ付きpip install "datatrove[all]"
処理エクストラpip install "datatrove[processing]"
ソースからgit clone https://github.com/huggingface/datatrove && pip install -e .

コアコンセプト

コンセプト意味
パイプラインデータが流れる順序付きブロックリスト
ブロック1 つのステップ:リーダー、フィルタ、重複排除、ライター等
ドキュメントユニット(textidmetadata
エグゼキューターパイプラインが実行される場所(ローカル / Slurm / Ray)
タスクワークロードの並列シャード

パイプラインブロック

カテゴリ
リーダーWarcReaderJsonlReaderParquetReaderHuggingFaceDatasetReader
抽出器Trafilatura(HTML → テキスト)
フィルタLanguageFilterGopherQualityFilterGopherRepetitionFilterC4QualityFilterFineWebQualityFilterURLFilter
重複排除MinhashDedupSentenceDedupExactSubstrDedup
ライターJsonlWriterParquetWriter
トークン化DocumentTokenizer

基本的なパイプライン

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()

エグゼキューター(同じパイプライン、異なるバックエンド)

エグゼキューター使用
LocalPipelineExecutor1 つのマシン、マルチプロセッシング
SlurmPipelineExecutorSlurm ジョブ経由の HPC クラスタ
RayPipelineExecutorRay クラスタ
from datatrove.executor import SlurmPipelineExecutor
SlurmPipelineExecutor(
    pipeline=pipeline, tasks=1000, time="20:00:00",
    partition="cpu", workers=200,
).run()

重複排除

DataTrove の重複排除ステージは通常マルチステップパイプラインとして実行(署名 → バケット → クラスタ → フィルタ)。

メソッドブロック
MinHash(曖昧)MinhashDedup(マルチステージ)
完全な部分文字列ExactSubstrDedup
文レベルSentenceDedup

品質フィルタ

フィルタヒューリスティック
GopherQualityFilter長さ、シンボル比、箇条書き/省略記号制限
GopherRepetitionFilter過度な繰り返し
C4QualityFilterC4 スタイルのルール(終末句読点等)
FineWebQualityFilterFineWeb レシピヒューリスティック
LanguageFilterfastText 言語 ID 閾値
URLFilterURL/ドメイン別にブロック/許可

一般的なワークフロー

# FineWeb スタイルのウェブパイプラインを再現(概念的順序)
# WarcReader → URLFilter → Trafilatura → LanguageFilter →
# GopherQuality/Repetition → C4/FineWeb フィルタ → MinhashDedup → JsonlWriter
# パイプラインスケールを、エグゼキューターを入れ替えることで、ラップトップからクラスタに:
#   LocalPipelineExecutor  →  SlurmPipelineExecutor  →  RayPipelineExecutor

DataTrove vs NeMo Curator

側面DataTroveNeMo Curator
コンピュートCPU ファーストGPU ネイティブ(RAPIDS)
最適用途FineWeb スタイルのデータセットを再現重複排除ヘビー 10T+ トークン実行
バックエンドローカル / Slurm / RayRay
出所Hugging FaceNVIDIA

リソース