Crawl4LLM 配置文件全解:YAML 参数一篇看懂 📅 发布时间:2026/8/21 15:28:59 👁 浏览次数: Crawl4LLM 配置文件全解YAML 参数一篇看懂【免费下载链接】Crawl4LLMOfficial repository for Craw4LLM: Efficient Web Crawling for LLM Pretraining项目地址: https://gitcode.com/gh_mirrors/cr/Crawl4LLMCrawl4LLM 是面向 LLM 预训练场景的高效网络爬虫工具它的所有爬取行为都由一份YAML 配置文件驱动种子文档从哪来、每轮抓多少、按什么标准打分、爬到哪里停止……全部由参数决定。本文为新手梳理 Crawl4LLM 配置文件中的每一个关键参数一篇看懂 YAML 配置的写法与调优思路让你开箱即用、少踩坑。Crawl4LLM 配置文件放在哪如何启动爬取Crawl4LLM 约定把 YAML 配置文件放在项目根目录的configs/文件夹下然后用一行命令启动爬取python crawl.py crawl --config configs/你的配置.yaml入口脚本是 crawl.py它支持crawl正式爬取和rate仅评分评估两种模式。配置文件同时支持.yaml/.yml/.json三种格式参数解析逻辑见 crawl.py。7 个必填参数一份能跑起来的最小配置第一次上手先记住下面这张参数速查表凑齐它们就能跑通一次爬取参数作用示例值cw22_root_pathClueWeb22 数据集根目录路径/data/clueweb22_aseed_docs_file种子文档 ID 文件每行一个 IDseed.txtoutput_dir爬取结果输出目录crawl_results/seed_10knum_selected_docs_per_iter每轮迭代选出多少篇文档10000num_workers并行工作进程数按机器配置调16max_num_docs爬取文档总量上限达到即停止20000000rating_methods评分方法列表见下一节见下文种子文件可以直接复用项目自带的 seed.txt内含 10000 个 ClueWeb22 文档 ID。注意种子文档数量必须不少于num_selected_docs_per_iter否则程序会直接报错crawl.py。rating_methods 评分方法配置爬虫的打分裁判这是 Crawl4LLM 配置文件里最核心也最容易迷惑的部分。爬虫每轮会把候选文档交给rating_methods里列出的所有评分器打分再按selection_method指定的那个分数排序。五种评分器如下1. length按文档长度打分rating_methods: - type: length适合过滤短小垃圾页面但单独使用容易偏好长文。2. fasttext_score用 fastText 模型评质量- type: fasttext_score rater_name: dclm_fasttext_score model_path: fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin需要先把 DCLM fastText 分类器下载到fasttext_scorers/目录。rater_name是给这个评分器起的名字之后selection_method就引用这个名字。可选参数text_normalize可在打分前做文本归一化。3. random_score随机打分随机爬虫基线- type: random_score4. inlink_count按入链数打分经典 PageRank 思路- type: inlink_count5. ensemble_score多个评分器加权组合- type: ensemble_score rater_name: my_ensemble raters_and_weights: - rater_name: length weight: 0.5 - rater_name: dclm_fasttext_score weight: 0.5各评分器的实现都在 document_rater.py 中想自定义打分逻辑可以从这里下手。选择与排序selection_method 和 orderselection_method决定队列以哪个分数为准必须与某个评分器的rater_name或内置名一致order决定排序方向desc分数从高到低默认优先高质量文档asc分数从低到高常用于研究性实验排序逻辑在 corpus_interface.py 的DocumentAnnotation中实现注意order只接受desc或asc写错会直接抛异常。性能与资源参数num_workers 和 max_num_in_mem_docsnum_workers控制多进程池大小涉及出链发现和文档拉取建议按 CPU 核心数设置。max_num_in_mem_docs每批放入内存的文档数默认 1000000。小内存机器调低它可以避免一次评分把内存打爆crawler.py。另外官方 README 强调ClueWeb22 数据一定要放在SSD上否则随机读取会成为爬取瓶颈。断点续爬save_state_every 与 resume_from_state大规模爬取动辄几十小时断点续爬是刚需save_state_every每 N 轮保存一次队列与已访问集合设为-1关闭设为正数如400即每 400 轮保存。resume_from_state从output_dir下的state_XXXXXX.pkl恢复。若换了评分器配置Crawler 会检测到并自动重算队列分数crawler.py非常贴心。wandb 日志配置可视化你的爬取过程Crawl4LLM 内置了 Weights Biases 日志支持三个参数就能开启wandb: true wandb_project: crawler wandb_run_name: seed_10k_crawl_20m_dclm_fasttext开启后会记录每轮文档数、平均分、出链扩展率等指标实现在 wandb_logger.py。不需要就设wandb: false。normalizer 归一化参数让分数可比较当多个评分器分数量纲差异大时比如长度是上万、fasttext 分数是 0~1可以给评分器套归一化器- type: fasttext_score rater_name: dclm_fasttext_score model_path: fasttext_scorers/xxx.bin normalizer: type: zscore mean: 0.5 std: 0.1支持zscore高斯标准化和minmax线性缩放两种实现见 normalizer.py。一套完整参考配置官方 Crawl4LLM 示例把上面的知识串起来官方 README 的完整配置长这样cw22_root_path: /path/to/clueweb22_a seed_docs_file: seed.txt output_dir: crawl_results/seed_10k_crawl_20m_dclm_fasttext num_selected_docs_per_iter: 10000 num_workers: 16 save_state_every: -1 max_num_docs: 20000000 selection_method: dclm_fasttext_score order: desc wandb: true wandb_project: crawler wandb_run_name: seed_10k_crawl_20m_dclm_fasttext 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爬完之后的配套工具爬取完成后output_dir下会生成iter_XXX.docids.txt文件用 fetch_docs.py 把文档 ID 转成正文文本python fetch_docs.py --input_dir 文档ID目录 --output_dir 文本目录 --num_workers 进程数想单条查看某篇文档及其出链可以用python access_data.py clueweb22路径 文档ID想对比不同评分方法的相关性用rate模式配合plots参数生成可视化热力图utils.py。调参建议小结 首次实验用小max_num_docs如 100 万 大save_state_every验证流程后再上全量。 追求语料质量用fasttext_score或ensemble_score只做基线对比用random_score/inlink_count。 机器内存小调低max_num_in_mem_docs磁盘是机械盘先把数据迁移到 SSD。 想复现论文实验克隆仓库后参考 README 中的 Random 与 Indegree 基线配置即可仓库地址https://gitcode.com/gh_mirrors/cr/Crawl4LLM。到这里Crawl4LLM 配置文件的每个参数你应该都心里有数了。从最小配置跑通到评分器组合、断点续爬、性能调优这份 YAML 就是你和高效 LLM 预训练语料爬取之间的全部开关。【免费下载链接】Crawl4LLMOfficial repository for Craw4LLM: Efficient Web Crawling for LLM Pretraining项目地址: https://gitcode.com/gh_mirrors/cr/Crawl4LLM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考