AI・機械学習
中級

訓練データ重複排除(クンレンデータチョウフクハイジョ)

LLMの訓練データから重複・類似テキストを除去する前処理工程。データ品質の向上とベンチマーク汚染の防止を目的とし、MinHash・Bloom Filter・Suffix Arrayなどのアルゴリズムが使用される。

0 回閲覧
0 いいね

訓練データ重複排除とは

訓練データ重複排除(Training Data Deduplication)は、LLMの事前訓練に使用するコーパスから重複・類似テキストを検出・除去する前処理工程である。数兆トークン規模のWebクロールデータには、同一ページの複数クロール、テンプレート生成ページ、コピー&ペーストコンテンツが大量に含まれる。これらを放置すると訓練効率の低下、特定パターンへの過学習、ベンチマーク汚染リスクの増大につながる。

なぜ重複排除が必要か

データ品質と訓練効率

問題影響重複排除の効果
完全重複同一テキストを複数回学習、計算資源の浪費訓練時間15-25%削減
近似重複テンプレートページの過学習汎化性能5-10%向上
定型文汚染Cookie通知・フッター等のノイズ学習生成品質の向上
ベンチマーク混入評価スコアの信頼性低下公正な評価の実現

実証研究

  • Llama 2: RedPajamaデータセット(1.2兆トークン)に対しMinHash重複排除を適用し、約30%のデータを除去。除去後のモデルが除去前より全ベンチマークで同等以上の性能を示した
  • Falcon-40B: RefinedWeb(5兆トークン → 約1兆トークン)への厳格な重複排除により、The Pile比で高品質なコーパスを構築
  • DCLM: 重複排除を含む品質フィルタリングパイプラインで、10倍少ないデータでGPT-3級の性能を達成

主要な重複排除アルゴリズム

完全重複の排除

アルゴリズム原理時間計算量空間計算量
ハッシュ完全一致SHA-256/MD5でドキュメントハッシュを比較O(N)O(N)
URL重複排除同一URLからのクロールデータを統合O(N log N)O(N)
Bloom Filter確率的データ構造でメンバーシップ判定O(N)O(N/10)

近似重複の排除

アルゴリズム原理Jaccard閾値スケーラビリティ
MinHash + LSHランダムハッシュ関数でJaccard類似度を近似0.7-0.8数十億文書
SimHash局所性鋭敏型ハッシュでハミング距離を比較N/A (ハミング距離3以内)数十億文書
Suffix Array最長共通部分文字列の効率的な検索N/A (文字列長閾値)数億文書
SemDeDupエンベディング類似度で意味的重複を検出コサイン0.9以上数千万文書

パイプライン実装の実際

大規模重複排除パイプラインの典型的構成

[Raw Crawl] → [URL Dedup] → [Exact Hash Dedup] → [MinHash Near-Dedup] → [Quality Filter] → [Benchmark Exclusion] → [Clean Corpus]

段階別の効果(Common Crawlの場合)

段階除去率残存データ量
URL重複排除約40%60%
完全ハッシュ一致約15%51%
MinHash近似重複(J≥0.8)約20%41%
品質フィルタリング約25%31%
ベンチマーク除外約0.1%30.9%

MinHash実装の主要パラメータ

  • ハッシュ関数数: 128-256(精度とコストのトレードオフ)
  • バンド数/行数: 20バンド×5行(Jaccard 0.8のキャッチ率95%)
  • シングル数: 5-gram(文レベルの単位)
  • Jaccard閾値: 0.7-0.8(厳しすぎると有用なデータも除去)

主要ツール・ライブラリ

ツール名開発元手法処理速度
datasketchEric ZhuMinHash + LSH高速
text-dedupGoogleMinHash + SimHash + Suffix Array高速
NeMo CuratorNVIDIAGPU加速MinHash非常に高速
datatroveHugging Faceパイプライン統合型高速
CCNetMetaMinHash + LID + Perplexity中速

よくある質問(FAQ)

Q1: 重複排除はどの段階で行うべきですか? A: 訓練前のデータ前処理段階で実施するのが標準。URL重複排除 → 完全ハッシュ重複排除 → MinHash近似重複排除 → 品質フィルタリングの順が一般的。ベンチマークデータの除外は品質フィルタリングと並行して行う。

Q2: 重複排除で有用なデータまで除去してしまうリスクはありますか? A: ある。Jaccard閾値が低すぎると(0.5以下)、内容が異なるが構造が似たドキュメント(ニュース記事テンプレートなど)まで除去される。0.7-0.8の閾値と人手によるサンプリング検証を組み合わせるのが推奨。

Q3: 1兆トークン規模のデータに対する重複排除の所要時間は? A: MinHash + LSHで128ハッシュ関数を使用した場合、NeMo Curator(8×A100 GPU)で約12-24時間。CPU環境(64コア)のdatatroveでは約3-5日。完全ハッシュ一致のみなら数時間で完了する。

まとめ

  • 訓練データ重複排除はLLM品質向上の基本的な前処理工程
  • MinHash + LSHが大規模データの近似重複検出のデファクトスタンダード
  • 適切な重複排除で訓練効率15-25%改善、汎化性能5-10%向上
  • NeMo CuratorやdatatroveなどのGPU対応ツールが実用的