コンテンツにスキップ

NeMo Curator - LLM 用 GPU データキュレーション チートシート

NeMo Curator - LLM 用 GPU データキュレーション チートシート

NVIDIA NeMo Curator はオープンソースのGPU 加速データキュレーションツールキット — LLM をプリトレイン又はファインチューンするための大規模で高品質なデータセットの準備。ダウンロードおよび抽出、テキストのクリーンおよび正規化、言語識別、品質フィルタ、分類ドメイン/毒性、プライバシーフィルタを適用、重複排除(完全および曖昧な)の反復パイプラインを構築 — RAPIDS/cuDF および Ray を通じてラップトップから数千 GPU にスケール。26.x リリースの時点で、テキスト、イメージ、ビデオ、オーディオ全体で Ray ベースのパイプラインアーキテクチャを使用。

キュレーション品質はモデル品質を駆動。通常の高額で高インパクトなステップは重複排除;NeMo Curator の GPU 重複排除はそのヘッドラインアドバンテージ。

インストール

方法コマンド
pip(CPU モジュール)pip install nemo-curator
CUDA エクストラ付き pippip install "nemo-curator[cuda12x]"
コンテナNVIDIA の NeMo/Curator コンテナイメージを使用
要件GPU(複数)+ 加速モジュール用 CUDA;分配用 Ray

パイプラインコンセプト

コンセプト意味
DocumentDatasetデータセット抽象化(Dask/cuDF バックアップ)
モジュールキュレーションステップ(フィルタ、重複排除、分類器…)
パイプライン反復可能なフローを形成する順序付きモジュール
バックエンドCPU(pandas)または GPU(cuDF/RAPIDS)実行
Ray ランタイムコア/GPU/ノード全体で作業を分配

コアモジュール

ステージモジュール
ダウンロード/抽出Common Crawl、arXiv、Wikipedia ダウンローダー;テキスト抽出
言語 IDfastText ベースの言語識別
クリーニングUnicode 修正、ボイラープレート/URL 削除、再フォーマット
品質フィルタリングヒューリスティックフィルタ + 分類器ベースの品質スコアリング
分類ドメインおよび毒性分類器
PII / プライバシー個人データを検出および削除
重複排除完全(ハッシュ)および曖昧(MinHash/LSH)GPU 上の重複排除

品質フィルタリング(スケッチ)

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"])]
重複排除タイプメソッド
完全ドキュメントハッシング
曖昧MinHash + LSH(RAPIDS 経由 GPU)
セマンティック埋め込みベースの近重複削除

分類器 & フィルタリング

分類器フラグ
ドメインミックス制御用トピック/ドメインラベル
品質高/低品質スコアリング
毒性削除用アンセーフコンテンツ
言語言語別に保持/削除

スケーリング

メカニズム注釈
GPU(cuDF/RAPIDS)フィルタリングと重複排除を加速
Ray ランタイムGPU とノード全体で分配
Dask巨大な語彙の外メモリ処理
チェックポイント長いキュレーション実行を再開

一般的なワークフロー

# 再現可能なプリトレインキュレーション:クリーン → 品質フィルタ → 重複排除
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 スタイルパイプラインの再現
分配Rayローカル/Slurm/Ray エグゼキューター
モダリティテキスト、イメージ、ビデオ、オーディオテキスト中心

リソース