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的训练。
