Crawl4LLM:面向大语言模型预训练的高效网络爬虫

Crawl4LLM是面向大语言模型预训练的高效网络爬虫,为LLM预训练提供高效的网页爬取解决方案,支持多种文档评分策略(基于文本长度、fastText模型评分、随机评分、入链数量等),可智能筛选高质量训练数据。

1、环境配置*

要求Python ≥3.10环境

依赖库:numpy, tqdm, fasttext, pyyaml, wandb

硬件建议:ClueWeb22数据集需存放在SSD硬盘以保证爬取效率

2、运行爬虫

步骤

1、在configs/目录下创建YAML配置文件

2、执行命令:python crawl.py crawl --config <配置文件路径>

配置示例


cw22_root_path: <ClueWeb22数据集路径>

seed_docs_file: seed.txt          # 初始种子文档

output_dir: crawl_results/..、    # 输出目录

num_selected_docs_per_iter: 10000 # 每轮选取文档数

max_num_docs: 20000000            # 最大爬取文档数

selection_method: dclm_fasttext_score  # 文档评分方法

3、支持的爬虫策略

DCLM fastText评分

使用预训练模型评估文档质量,优先爬取高评分内容。

随机爬虫

随机选择文档,配置项selection_method: random_score

入链数量爬虫

优先爬取被更多网页引用的文档,配置项selection_method: inlink_count

4、数据预处理与训练

提取文档文本

python fetch_docs.py命令将爬取的文档ID转换为可读文本。

模型预训练

支持通过DCLM框架进行LLM训练和评估。

5、数据查看工具

通过python access_data.py <数据集路径> <文档ID>可查看指定文档内容及其外链。

技术亮点

高效分布式爬取:支持多线程(num_workers参数调节并发数)

断点续爬:通过save_state_every参数定期保存爬虫状态

实验监控:集成Weights & Biases(WandB)记录实验指标

灵活评分系统:可组合多种评分规则(如文本长度+模型评分)

典型应用场景

1、构建预训练语料库:从海量网页中筛选高质量文本

2、数据质量研究:对比不同爬取策略对模型性能的影响

3、网页结构分析:通过入链/外链关系研究信息传播模式

Crawl4LLM是一个为大规模语言模型(LLM)预训练设计的高效网页爬虫工具,它的代码来源于论文《Crawl4LLM: Efficient Web Crawling for LLM Pretraining》,用于优化爬取的数据质量和效率,以支持LLM的训练。