
Crawl4LLM 核心原理揭秘质量评分如何驱动智能爬取【免费下载链接】Crawl4LLMOfficial repository for Craw4LLM: Efficient Web Crawling for LLM Pretraining项目地址: https://gitcode.com/gh_mirrors/cr/Crawl4LLM训练大语言模型LLM最烧钱的环节之一就是准备高质量语料。传统爬虫像撒网捕鱼抓到什么算什么而Crawl4LLM提供了一套智能爬取方案——用质量评分给每个网页打分优先爬取最值得训练的内容让 LLM 预训练语料的质量与效率双双提升。本文带你拆解 Crawl4LLM 的核心原理看看质量评分究竟是如何驱动整个爬取过程的。为什么 LLM 预训练需要智能爬取全网网页质量参差不齐有的图文并茂、信息密度高有的全是导航栏、广告和垃圾内容。如果爬虫盲目抓取预训练语料里会混入大量噪声白白消耗算力。Crawl4LLM对应论文Crawl4LLM: Efficient Web Crawling for LLM Pretraining的思路很直接在爬取的同时给文档打分用分数决定爬取优先级让高质量内容优先进入队列低质量内容靠后甚至被丢弃。官方代码中这一机制的核心就是 document_rater.py 里的DocumentRater基类。Crawl4LLM 质量评分架构五大评分器详解Crawl4LLM 把评分器抽象成统一的DocumentRater接口每个评分器输入一批文档、输出带分数的文档天然支持叠加组合。目前内置五种质量评分策略评分器类型标识原理是否需要正文随机评分random_score纯随机作为对照基线否文档长度length正文越长分越高是入链数量inlink_count被引用越多分越高否fastText 质量fasttext_score模型预测高质量概率是集成评分ensemble_score多评分器加权求和否其中RandomRater基线、DocumentLengthRater长度、InlinkCountRater入链都很直观。最有意思的是fastText 质量评分它借助 DCLM 的 fastText 分类器直接预测一段文本属于高质量语料__label__hq还是通用网络文本__label__cc的概率将概率作为质量分数实现一网打尽 vs 优中选优的质变。具体实现见 document_rater.py。优先队列调度质量评分如何驱动爬取顺序评分器打分之后真正驱动爬取的是优先队列Priority Queue。在 crawler.py 中每个文档带着自己的评分注解DocumentAnnotation被压入heapq堆队列队列会永远把最高分的文档排在队首每次迭代从队首弹出num_selected_docs_per_iter篇文档抓取其出链对新发现的文档再次评分、入队如此循环直到达到目标文档数。关键在于 corpus_interface.pyDocumentAnnotation通过自定义__lt__比较方法把分数最高优先出队翻译成了 Python 堆的标准操作排序方向升序/降序和比较键selection_method都由配置决定。换句话说换一种评分器就换了一套爬取优先级爬虫行为随之彻底改变。一键切换爬取策略的 YAML 配置方法智能爬取的另一个亮点是配置驱动你不需要改一行代码只需在configs/下新建 YAML 文件就能切换整套质量评分策略。官方示例见 README.md把dclm_fasttext_score作为主排序依据selection_method: dclm_fasttext_score order: desc # 降序高分优先 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配置里rating_methods是所有参与打分的评分器selection_method则指定最终按哪个分数排序。文档会被所有评分器标注还能叠加zscore/minmax归一化见 normalizer.py让不同量纲的分数可比。Crawl4LLM 智能爬取完整流程把上面的模块串起来一次智能爬取就是这样的闭环主流程见 crawl.py初始化种子从seed.txt随机采样种子文档评分后压入队列弹出高分文档从优先队列取出当前分数最高的文档并记录扩展出链多进程并行读取这些文档的出链只保留 ClueWeb22-A 范围内的链接评分入队对新文档调用全部评分器打分再压回优先队列循环迭代重复 2-4 步直到爬满max_num_docs篇文档。每一步之间还通过 wandb_logger.py 记录队列规模、扩展比、平均分数等指标方便实时观察爬取过程。爬取完成后用 fetch_docs.py 把选中的文档 ID 批量还原成正文文本即可送入 DCLM 等框架做预训练。快速上手跑通你的第一次智能爬取想亲自体验质量评分驱动的智能爬取环境准备并不复杂申请并下载 ClueWeb22 数据集注意官方建议放在 SSD 上以提升读取效率创建 Python 3.10 虚拟环境安装numpy、tqdm、fasttext、pyyaml、wandb下载 DCLM fastText 分类器到fasttext_scorers/目录在configs/写好 YAML 配置运行python crawl.py crawl --config 你的配置文件路径源码已同步在 GitCode 仓库可执行git clone https://gitcode.com/gh_mirrors/cr/Crawl4LLM获取完整代码。结语Crawl4LLM 用一套**评分器 优先队列**的简洁架构把爬什么从运气问题变成了策略问题。无论是 DCLM fastText 的内容质量打分还是可插拔的 YAML 配置都让 LLM 预训练的数据采集变得更聪明。对想复现论文实验、或优化自有爬虫的同学来说这套质量评分驱动的智能爬取设计非常值得参考借鉴。【免费下载链接】Crawl4LLMOfficial repository for Craw4LLM: Efficient Web Crawling for LLM Pretraining项目地址: https://gitcode.com/gh_mirrors/cr/Crawl4LLM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考