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(厳しすぎると有用なデータも除去)
主要ツール・ライブラリ
| ツール名 | 開発元 | 手法 | 処理速度 |
|---|---|---|---|
| datasketch | Eric Zhu | MinHash + LSH | 高速 |
| text-dedup | MinHash + SimHash + Suffix Array | 高速 | |
| NeMo Curator | NVIDIA | GPU加速MinHash | 非常に高速 |
| datatrove | Hugging Face | パイプライン統合型 | 高速 |
| CCNet | Meta | MinHash + 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対応ツールが実用的