DataTrove - LLM データ処理パイプライン チートシート
DataTrove は Hugging Face のオープンソースライブラリ — LLM トレーニング用の大規模なテキストデータセットを処理、フィルタ、重複排除。構成可能なパイプラインブロック — リーダー、フィルタ、重複排除ステージ、ライター — を提供。エグゼキューションバックエンド全体で変わらずに実行:ローカル、Slurm クラスタ、または Ray。FineWeb および FineWeb-Edu データセットの背後にある参照実装。CPU ファーストのキュレーションパイプラインを再現または適応させたい場合の goto ツール。
インストール
| 方法 | コマンド |
|---|
| pip | pip install datatrove |
| 全エクストラ付き | pip install "datatrove[all]" |
| 処理エクストラ | pip install "datatrove[processing]" |
| ソースから | git clone https://github.com/huggingface/datatrove && pip install -e . |
コアコンセプト
| コンセプト | 意味 |
|---|
| パイプライン | データが流れる順序付きブロックリスト |
| ブロック | 1 つのステップ:リーダー、フィルタ、重複排除、ライター等 |
| ドキュメント | ユニット(text、id、metadata) |
| エグゼキューター | パイプラインが実行される場所(ローカル / Slurm / Ray) |
| タスク | ワークロードの並列シャード |
パイプラインブロック
| カテゴリ | 例 |
|---|
| リーダー | WarcReader、JsonlReader、ParquetReader、HuggingFaceDatasetReader |
| 抽出器 | Trafilatura(HTML → テキスト) |
| フィルタ | LanguageFilter、GopherQualityFilter、GopherRepetitionFilter、C4QualityFilter、FineWebQualityFilter、URLFilter |
| 重複排除 | MinhashDedup、SentenceDedup、ExactSubstrDedup |
| ライター | JsonlWriter、ParquetWriter |
| トークン化 | 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()
エグゼキューター(同じパイプライン、異なるバックエンド)
| エグゼキューター | 使用 |
|---|
LocalPipelineExecutor | 1 つのマシン、マルチプロセッシング |
SlurmPipelineExecutor | Slurm ジョブ経由の HPC クラスタ |
RayPipelineExecutor | Ray クラスタ |
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 | 過度な繰り返し |
C4QualityFilter | C4 スタイルのルール(終末句読点等) |
FineWebQualityFilter | FineWeb レシピヒューリスティック |
LanguageFilter | fastText 言語 ID 閾値 |
URLFilter | URL/ドメイン別にブロック/許可 |
一般的なワークフロー
# FineWeb スタイルのウェブパイプラインを再現(概念的順序)
# WarcReader → URLFilter → Trafilatura → LanguageFilter →
# GopherQuality/Repetition → C4/FineWeb フィルタ → MinhashDedup → JsonlWriter
# パイプラインスケールを、エグゼキューターを入れ替えることで、ラップトップからクラスタに:
# LocalPipelineExecutor → SlurmPipelineExecutor → RayPipelineExecutor
DataTrove vs NeMo Curator
| 側面 | DataTrove | NeMo Curator |
|---|
| コンピュート | CPU ファースト | GPU ネイティブ(RAPIDS) |
| 最適用途 | FineWeb スタイルのデータセットを再現 | 重複排除ヘビー 10T+ トークン実行 |
| バックエンド | ローカル / Slurm / Ray | Ray |
| 出所 | Hugging Face | NVIDIA |
リソース