はじめに
Crawl4LLMは、清華大学とカーネギーメロン大学が共同で開発したオープンソースプロジェクトで、大規模モデル(LLM)の事前学習のためのウェブクローリングの効率最適化に焦点を当てている。高品質なウェブページデータをインテリジェントに選択することで、非効率なクロールを大幅に削減し、事前学習効果を維持しながら、本来100のウェブページをクロールする必要がある作業負荷を21まで削減できるとしている。Crawl4LLMの中核は、モデル学習用のウェブページの価値を評価し、有用なコンテンツを優先的に選択するデータ選択アルゴリズムにあり、すでに学者や開発者コミュニティから注目を集めている。
機能一覧
- インテリジェントなデータ選択大規模モデルの事前学習において、ウェブページの影響力に基づいて価値の高いコンテンツをフィルタリングする。
- 複数のクローリングモードCrawl4LLMモード、ランダムクローリングなど、様々なニーズに柔軟に対応します。
- 効率的なクローリング・エンジンマルチスレッドと最適化された設定を使用して、クロール速度を大幅に向上させます。
- データの抽出と保存クロールしたウェブページのIDとテキストコンテンツを、モデルの学習に使用できるファイルとして保存します。
- 大規模データセットのサポートClueWeb22のようなデータセットと互換性があり、学術研究や産業用途に適しています。
- 設定のカスタマイズスレッド数や最大文書数などのクローリングパラメータはYAMLファイルで調整される。
ヘルプの使用
設置プロセス
Crawl4LLMはPythonをサポートする環境で動作させる必要があります。詳しいインストール手順は以下の通りです:
- 環境準備
- Python 3.10以降がシステムにインストールされていることを確認してください。
- 依存関係の衝突を避けるために仮想環境を作成する:
python -m venv craw4llm_env source craw4llm_env/bin/activate # Linux/Mac craw4llm_env スクリプト起動 # Windows
- クローンプロジェクト
- GitHubからソースコードをダウンロードする:
git clone https://github.com/cxcscmu/Crawl4LLM.git cd Crawl4LLM
- GitHubからソースコードをダウンロードする:
- 依存関係のインストール
- 以下のコマンドを実行して、必要なライブラリをインストールする:
pip install -r requirements.txt
- 注:依存関係ファイルには、クローラーの実行に必要なすべてのPythonパッケージがリストアップされているので、ネットワークが良好であることを確認すること。
- 以下のコマンドを実行して、必要なライブラリをインストールする:
- ソーターをダウンロード
- このプロジェクトでは、ウェブページの品質を評価するためにDCLM fastText分類器を使用しています。
fasttext_scorers/
カタログ - パスの例:
fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin
. - 公式リソースまたは関連リンクから入手可能。
- このプロジェクトでは、ウェブページの品質を評価するためにDCLM fastText分類器を使用しています。
- データセットの準備
- ClueWeb22のデータセットを使用している場合は、アクセスを要求してSSDに保存する必要があります(設定にパスを指定する必要があります)。
使用方法
Crawl4LLMの操作は主にコマンドラインを通して行われ、設定、クロール、データ抽出の3つのステップに分かれている。以下に詳細なフローを示す:
1.クローリングタスクを設定する
- ある
コンフィグ
ディレクトリにYAMLファイルを作成する(例えばmy_config.yaml
)、内容の例:cw22_root_path: "/path/to/clueweb22_a" seed_docs_file: "seed.txt" output_dir: "crawl_results/my_crawl" num_selected_docs_per_iter:10000件 num_selected_docs_per_iter: 10000 max_num_docs: 20000000 selection_method: "dclm_fasttext_score" order: "desc" selection_method: "dclm_fasttext_score" order: "desc" wandb: false selection_method: "dclm_fasttext_score" order: "desc" wandb: false - タイプ: "length" - タイプ: "fasttext_score" 評価名: "dclm_fasttext_score" model_path: "fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin"
- パラメータの説明::
cw22_root_path
ClueWeb22 データセットのパス。seed_docs_ファイル
最初のシード文書リスト。労働者数
機械性能に合わせて調整されたスレッド数。max_num_docs
クロールするドキュメントの最大数。選択メソッド
データ選択方法、推奨dclm_fasttext_score
.
2.クローラーの実行
- クロールコマンドを実行する:
python crawl.py crawl --config configs/my_config.yaml
- クロールが完了すると、ドキュメントIDが
出力先
を指定されたパスの下にあるファイルに追加する。
3.文書内容の抽出
- クロールされたドキュメントIDをテキストに変換するには、以下のコマンドを使用します:
python fetch_docs.py --input_dir crawl_results/my_crawl --output_dir crawl_texts --num_workers 16
- 出力はテキストファイルで、その後のモデル学習に直接使用できる。
4.個別文書の閲覧
- 特定の文書とそのリンクをチェックする必要がある場合は、実行することができます:
python access_data.py /path/to/clueweb22
注目の機能操作
- インテリジェントなウェブページ選択
- Crawl4LLMの中核はデータフィルタリング機能である。FastText分類器を使い、ウェブコンテンツの長さと質を評価し、モデルのトレーニングに有用なページを優先します。ユーザーが手動でフィルタリングする必要はなく、最適化は自動的に行われます。
- 方法: YAMLコンフィギュレーションを
選択メソッド
というのもdclm_fasttext_score
モデルパスが正しいことを確認してください。
- マルチスレッド・アクセラレーション
- とおす
労働者数
パラメーターでスレッド数を調整できる。例えば、16コアのCPUの場合、計算資源をフルに活用するために16に設定することができる。 - 注:スレッド数が多いとメモリがオーバーフローする可能性があります。
- とおす
- 大規模クローリングのサポート
- このプロジェクトは、ClueWeb22のような非常に大規模なデータセット用に設計されており、何十億ものウェブページを処理する必要がある研究シナリオに適している。
- アクションの提案:データをSSDに保存してI/Oパフォーマンスを確保する。
max_num_docs
は目標とする文書数(例えば2000万件)。
ヒントとコツ
- デバッグとロギングイネーブル
wandb: true
クローリングプロセスを記録することで、効率を簡単に分析することができる。 - ストレージの最適化クロール結果は大きいので、十分なディスク容量(例えば数百GB)を確保することをお勧めします。
- 拡張機能DCLMフレームワークと組み合わせることで、抽出されたテキストは大規模なモデルの事前学習に直接使用することができます。
以上のステップにより、ユーザーはCrawl4LLMを使用して、効率的なウェブデータのクロールと事前学習プロセスの最適化をすぐに開始することができます。