- Published on
LLM学習データ前処理の完全ガイド — Webクロールからトークンパッキングまで、最新論文とともに
- Authors

- Name
- Youngju Kim
- @fjvbn20031
- はじめに — モデル品質の8割が決まる場所
- パイプライン全体の俯瞰図
- ① 本文抽出 — HTMLから本物のテキストだけを
- ② 言語識別 — 速くて静かな関門
- ③ 品質フィルタリング — ヒューリスティックから分類器へ
- ④ 重複除去 — 効果のわりに最も過小評価されている段階
- ⑤・⑥ PII・有害性、そして汚染除去
- ⑦ トークナイズとシーケンスパッキング — 最後の工程
- SFTデータは別物 — 少数精鋭の世界
- ツールボックス — すべて自作する必要はない
- 流れを変えた論文たち — おすすめの読み順
- おわりに
- 参考資料
はじめに — モデル品質の8割が決まる場所
AIモデル開発ライフサイクルの記事で「ゴミ1TBより良質なデータ1GB」と書きました。本稿はその一文の実践編です — インターネットの生テキストが学習可能なトークンになるまでに実際に通る工程を、各段階のツールとその段階を確立した論文とともに歩いていきます。ここ数年の興味深い発見は、フロンティアラボ間の差がモデルアーキテクチャよりもまさにこのパイプラインで開いているということです(FineWeb・DCLMの論文が公開データでこれを実証しました)。
パイプライン全体の俯瞰図
収集(CommonCrawlなど)
→ ① 本文抽出 (HTML → テキスト)
→ ② 言語識別
→ ③ 品質フィルタリング (ヒューリスティック → モデル分類器)
→ ④ 重複除去 (厳密 → 近似 MinHash)
→ ⑤ PII・有害性処理
→ ⑥ ベンチマーク汚染除去 (decontamination)
→ ⑦ トークナイズ + シーケンスパッキング
→ 学習
順序にも理由があります — 安いフィルタを前に、高いフィルタを後ろに置くことで、高コストな演算(分類器、MinHash)が処理する文書数を減らすのです。それでは各段階を見ていきましょう。
① 本文抽出 — HTMLから本物のテキストだけを
事前学習データの源泉は、その大部分がCommonCrawl(Web全体を定期的にクロールしたアーカイブ)です。ここで最初の分かれ道が現れます:抽出済みのWETテキストを使うのか、生のWARC(HTML)から直接抽出するのか。RefinedWebとFineWebに共通する結論は、WARCからtrafilaturaのような抽出器で直接取り出すほうが品質は明らかに良いというものです — WETにはナビゲーションメニュー、Cookieバナー、フッターのようなボイラープレートが大量に混ざっているからです。本文抽出の品質が、以降のすべての段階の上限を決めます。
② 言語識別 — 速くて静かな関門
fastText系の言語分類器で文書の言語を判定し、対象言語(例:韓国語データセットならko)だけを残します。単純に見えますが落とし穴があります — 短い文書やコードの混ざった文書では誤判定が多く、低リソース言語ほど、この関門で良いデータまで一緒に捨てられてしまいます。多言語モデルを作るなら、言語ごとにしきい値を個別にチューニングするのが定石です。
③ 品質フィルタリング — ヒューリスティックから分類器へ
2つの世代の手法が重ねて使われます。
ヒューリスティックルール(Gopher rules系) — 文書長、平均単語長、記号/単語比率、箇条書き・ハッシュタグの比率、「lorem ipsum」を含むかどうかといった統計ルール数十個で、明白なゴミをふるい落とします。Gopher論文が確立し、ほぼすべてのパイプラインが変形版を使っています。
モデルベース分類器 — 近年の勝負どころです。FineWeb-Eduは、LLMに「この文書の教育的価値」を採点させたラベルで小さな分類器を学習させ、高品質なサブセットを選び出しました。DCLMは、良質なデータ(instructスタイル)で学習させたfastText分類器1つが、精巧なパイプラインの組み合わせに勝ちうることを示しました。教訓:「品質」の定義をデータそのものではなく分類器を学習させる基準へ移すと、パイプラインは単純になりながら性能は上がります。
ここで注意を1つ — フィルタは常に分布を偏らせます。教育的価値フィルタは、口語体・少数方言・創作テキストを削り落とします。何を捨てているのか、サンプルを自分の目で見る習慣がフィルタチューニングの半分です。
④ 重複除去 — 効果のわりに最も過小評価されている段階
Webクロールのかなりの部分は重複です(ミラーサイト、ボイラープレート、再掲載)。重複は、学習で特定のテキストを実質的に複数エポック回すのと同じ効果を生み、記憶(memorization)とベンチマーク汚染を膨らませ、計算を浪費します。
- 厳密重複除去:文書(または段落)のハッシュで完全一致を除去します。安価で確実です。
- 近似重複除去 — MinHash LSH:「ほぼ同じ」文書を捕まえる標準手法です。文書をn-gram集合(shingle)にし、MinHash署名でJaccard類似度を近似し、LSHバンディングで比較ペアを候補群に絞り込みます — 数十億文書でも総当たり比較なしに動く理由です。
- 行レベル重複除去:複数の文書に繰り返し現れる行(ナビゲーションテキストなど)を除去します。RefinedWebが強調した手法です。
興味深いどんでん返しもあります — FineWebは、クロールスナップショット全体を横断して過激に重複除去するより、スナップショットごとの重複除去のほうが良い結果を出したと報告しています。重複除去でさえ「多いほど良い」ではなく、測定しながら調整すべき対象なのです。
⑤・⑥ PII・有害性、そして汚染除去
PII処理:メールアドレス・電話番号・IPアドレスのようなパターンは、正規表現で検出して除去するか、プレースホルダーに置き換えます(Dolmaツールキットがこの段階の優れた公開実装です)。法務レビューが贅沢品ではないという話は、モデル開発編で述べたとおりです。
ベンチマーク汚染除去(decontamination):評価セット(MMLU、GSM8Kなど)の設問が学習データに混入していると、ベンチマークスコアは実力なしに上がります。評価セットのn-gramと重なる学習文書を除去するのが標準手順で、量子化編で述べた「新しいモデルのスコアを見るときの疑い」は、まさにこの段階の欠如に向けられています。自前の評価セットを作ったなら、それも汚染除去リストに加えるべきです — eval-first原則のデータ版です。
⑦ トークナイズとシーケンスパッキング — 最後の工程
整えられた文書はトークナイザ(BPE系)でトークンIDになり、固定長のシーケンスに切られて学習器に入ります。ここで実務上のポイントを2つ:
- シーケンスパッキング:文書がシーケンス長より短いと、パディングが無駄になります。複数の文書をEOSトークンでつなぎ合わせてシーケンスを埋めるパッキングが標準で、文書境界をまたぐアテンションを防ぐマスキングを併用する実装も増えています。
- シャッフルと混合比率:ドメイン別(Web/コード/論文/多言語)の混合比率は、それ自体がハイパーパラメータです。学習の終盤に高品質データの比率を上げるカリキュラム(annealing)も、FineWeb系の実験で効果が報告されている手法です。
SFTデータは別物 — 少数精鋭の世界
ファインチューニング(SFT)データは、事前学習とは文法が異なります。数千〜数万件の世界なので、1件ごとの品質がすべてです。
- 応答の正確さと形式の一貫性を、人が(または強いモデルが1次として)検証する
- 指示文の多様性を確保する(同じパターン1万件より、異なるパターン1千件)
- チャットテンプレート(ロールマーカー)を学習と推論で正確に一致させる — テンプレートの不一致は、静かな性能低下の定番原因です
- 事前学習と同じく重複除去・汚染除去を行う(特にベンチマーク設問がSFTセットに混入する事故は頻発します)
ツールボックス — すべて自作する必要はない
ツール 開発元 一言紹介
────────────────── ──────────── ─────────────────────────────────
datatrove HuggingFace FineWebを生んだパイプラインライブラリ
Dolma toolkit AI2 フィルタ・dedup・PIIタガーの詰め合わせ (Dolmaデータセットの工程)
NeMo Curator NVIDIA GPU加速の大規模キュレーション (分散MinHashなど)
trafilatura オープンソース HTML本文抽出の事実上の標準
fastText Meta 言語識別・軽量品質分類器
数百GB規模まではdatatroveやDolmaツールキットで十分で、TB級のGPU加速が必要になったらNeMo Curatorが候補になります。パイプラインを分散学習クラスタの上で回すのも、よくある組み合わせです。
流れを変えた論文たち — おすすめの読み順
- The Pile (2020) — 「多様な高品質ソースの混合」という公開データセットの原型。
- Gopher/MassiveText (2021) — ヒューリスティック品質ルールの確立。
- RefinedWeb (2023) — 「Webデータだけでも、うまくキュレーションすれば十分」というどんでん返しと、抽出・行レベルdedupの強調。
- Dolma (2024) — 3兆トークンの工程を完全公開 — ツールキットまで。
- FineWeb / FineWeb-Edu (2024) — 15兆トークンと段階別アブレーション実験の公開、教育的価値分類器の威力。
- DCLM (2024) — データキュレーションのベンチマーク化 — 優れた分類器1つの力。
この6本を順番に読めば、「なぜ今の標準パイプラインがこの形なのか」が歴史として理解できます。
おわりに
データ前処理は華やかではありませんが、この工程の各段階が、モデルの上限を1つずつ決めていきます — 抽出は原料の純度を、フィルタは分布を、dedupは記憶を、汚染除去は評価の誠実さを、パッキングは計算効率を。そして、全段階を貫く習慣は1つだけです:捨てられるものと残るもののサンプルを、自分の目で見続けること。 パイプラインはコードですが、品質の感覚は結局のところ人間のものです。
参考資料
- Gao et al. (2020), "The Pile: An 800GB Dataset of Diverse Text"
- Rae et al. (2021), "Scaling Language Models: Gopher" (MassiveTextルール)
- Penedo et al. (2023), "The RefinedWeb Dataset for Falcon LLM"
- Soldaini et al. (2024), "Dolma: an Open Corpus of Three Trillion Tokens"
- Penedo et al. (2024), "The FineWeb Datasets"
- Li et al. (2024), "DataComp-LM (DCLM)"
- datatrove (GitHub) · Dolma toolkit · NeMo Curator