AI个人学习
和实操指南
资源推荐1

Crawl4LLM:为LLM预训练提供的高效网页爬取工具

综合介绍

Crawl4LLM 是一个由清华大学和卡内基梅隆大学联合开发的开源项目,专注于优化大模型(LLM)预训练的网页爬取效率。它通过智能选择高质量网页数据,显著减少无效爬取,号称能将原本需要爬取100个网页的工作量缩减到21个,同时保持预训练效果。项目托管在 GitHub 上,提供详细代码和配置文档,适合开发者和研究人员使用。Crawl4LLM 的核心在于其数据选择算法,能评估网页对模型训练的价值,优先抓取有用内容,已在学术界和开发者社区中引发关注。

Crawl4LLM:为LLM预训练提供的高效网页爬取工具-1


 

功能列表

  • 智能数据选择:根据网页对大模型预训练的影响力,筛选高价值内容。
  • 多种爬取模式:支持 Crawl4LLM 模式、随机爬取等,灵活应对不同需求。
  • 高效爬取引擎:利用多线程和优化配置,显著提升爬取速度。
  • 数据提取与存储:将爬取的网页ID和文本内容保存为可用于模型训练的文件。
  • 支持大规模数据集:兼容 ClueWeb22 等数据集,适合学术研究和工业应用。
  • 配置自定义:通过 YAML 文件调整爬取参数,如线程数和文档数量上限。

 

使用帮助

安装流程

Crawl4LLM 需要在支持 Python 的环境中运行,以下是详细安装步骤:

  1. 环境准备
    • 确保系统安装 Python 3.10 或更高版本。
    • 创建虚拟环境以避免依赖冲突:
      python -m venv crawl4llm_env  
      source crawl4llm_env/bin/activate  # Linux/Mac  
      crawl4llm_env\Scripts\activate  # Windows
      
  2. 克隆项目
    • 从 GitHub 下载源码:
      git clone https://github.com/cxcscmu/Crawl4LLM.git  
      cd Crawl4LLM
      
  3. 安装依赖
    • 运行以下命令安装所需库:
      pip install -r requirements.txt
      
    • 注意:依赖文件列出了爬虫运行所需的所有 Python 包,确保网络畅通。
  4. 下载分类器
    • 项目使用 DCLM fastText 分类器评估网页质量,需手动下载模型文件至 fasttext_scorers/ 目录。
    • 示例路径:fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin
    • 可从官方资源或相关链接获取。
  5. 准备数据集
    • 如果使用 ClueWeb22 数据集,需申请访问权限并将其存储在 SSD 上(路径需在配置中指定)。

如何使用

Crawl4LLM 的操作主要通过命令行完成,分为配置、爬取和数据提取三个步骤。以下是详细流程:

1. 配置爬取任务

  • 在 configs/ 目录下创建一个 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_workers: 16  
    max_num_docs: 20000000  
    selection_method: "dclm_fasttext_score"  
    order: "desc"  
    wandb: false  
    rating_methods:  
    - type: "length"  
    - type: "fasttext_score"  
    rater_name: "dclm_fasttext_score"  
    model_path: "fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin"
  • 参数说明
    • cw22_root_path:ClueWeb22 数据集路径。
    • seed_docs_file:初始种子文档列表。
    • num_workers:线程数,根据机器性能调整。
    • max_num_docs:最大爬取文档数。
    • selection_method:数据选择方式,推荐使用 dclm_fasttext_score

2. 运行爬虫

  • 执行爬取命令:
    python crawl.py crawl --config configs/my_config.yaml
    
  • 爬取完成后,文档 ID 会保存在 output_dir 指定路径下的文件中。

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 <document_id>
    

特色功能操作

  • 智能选择网页
    • Crawl4LLM 的核心在于其数据筛选能力。它通过 fastText 分类器评估网页内容长度和质量,优先抓取对模型训练更有帮助的页面。用户无需手动筛选,系统自动完成优化。
    • 操作方法:在 YAML 配置中设置 selection_method 为 dclm_fasttext_score,并确保模型路径正确。
  • 多线程加速
    • 通过 num_workers 参数调整线程数。例如,16 核 CPU 可设为 16,充分利用计算资源。
    • 注意:线程数过高可能导致内存溢出,建议根据机器配置测试。
  • 支持大规模爬取
    • 项目针对 ClueWeb22 等超大数据集设计,适合需要处理亿级网页的研究场景。
    • 操作建议:将数据存放于 SSD,确保 I/O 性能;设置 max_num_docs 为目标文档数(如 2000 万)。

使用技巧

  • 调试与日志:启用 wandb: true 可记录爬取过程,便于分析效率。
  • 优化存储:爬取结果较大,建议预留足够磁盘空间(如数百 GB)。
  • 扩展功能:结合 DCLM 框架,可直接将提取的文本用于大模型预训练。

通过以上步骤,用户可快速上手 Crawl4LLM,实现高效网页数据爬取和优化预训练流程。

内容3
未经允许不得转载:首席AI分享圈 » Crawl4LLM:为LLM预训练提供的高效网页爬取工具

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文