尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

为什么 LLM 预训练需要 Crawl4LLM?揭秘高质量训练数据获取难题

为什么 LLM 预训练需要 Crawl4LLM?揭秘高质量训练数据获取难题 为什么 LLM 预训练需要 Crawl4LLM揭秘高质量训练数据获取难题【免费下载链接】Crawl4LLMOfficial repository for Craw4LLM: Efficient Web Crawling for LLM Pretraining项目地址: https://gitcode.com/gh_mirrors/cr/Crawl4LLM大模型的智能上限很大程度上取决于喂给它的数据。LLM 预训练需要海量且高质量的文本而 Crawl4LLM 正是为了解决高质量训练数据从哪来这一难题而生的网页爬取框架。它源自论文Crawl4LLM: Efficient Web Crawling for LLM Pretraining通过边爬边筛的方式让每一次爬取都直奔高质量文本把浪费在垃圾页面上的时间和算力省下来。本文就带你用 5 分钟看懂为什么 LLM 预训练如此依赖数据质量以及 Crawl4LLM 是如何破解这道难题的。LLM 预训练为什么离不开高质量数据训练一个大模型就像培养一名专家。专家读的书越多、越精知识就越扎实如果喂给他大量重复、低质甚至错误的内容模型不仅学不到东西还可能学到噪声。 具体来说LLM 预训练对数据有三大硬性要求要求说明不满足的后果海量动辄数万亿 token数据不足模型欠拟合高质量语法正确、信息密度高、重复少模型生成质量崩塌多样性覆盖百科、新闻、论坛、代码等领域知识缺失、偏见放大问题在于互联网上的网页 90% 以上并不适合直接用于预训练——广告页、登录页、导航页、机器生成的低质内容比比皆是。如何从中挑出那 10% 的金子就是 Crawl4LLM 的核心使命。传统网页爬取的三大痛点 在 Crawl4LLM 之前常见的做法是先爬后筛先把整个互联网或某个大型语料库全部抓下来再离线清洗。这带来三个致命问题痛点一数据质量参差不齐全量爬取会把大量垃圾页面一起带回来后期的过滤成本极高。痛点二链接噪声多网页之间的链接质量差异巨大。传统爬虫按广度优先无差别扩散很容易被链接农场带偏方向越爬越偏。痛点三存储与算力浪费爬 1 个网页可能只有 1% 的内容有用其余 99% 的存储、带宽、解析算力全部浪费。对一个要爬到 2000 万文档README 中max_num_docs: 20000000的任务来说这个浪费是灾难级的。Crawl4LLM 如何破解高质量训练数据获取难题✨Crawl4LLM 的思路可以概括为一句话让爬虫自己挑食。它不再盲目地全量爬取而是把质量评估内嵌到爬取循环的每一步。核心逻辑位于 crawler.py 的Crawler类和 crawl.py 的主流程中整个循环只有四步播种从种子文档如 seed.txt内含 1 万条 ClueWeb22 文档 ID出发先给每个种子打分并入队弹出每次从优先队列中弹出质量最高的文档对应pop_from_queue扩散提取这些高质量文档的出链find_outinks继续寻找下一批候选评分用多个质量评分器rating_methods给新候选打分再放回优先队列。这样爬虫每走一步都踩在高质量文档的肩膀上链接扩散的方向会被持续校正形成一条直奔优质内容的贪心路径。Crawl4LLM 的评分器如何给网页质量打分评分逻辑全部集中在 document_rater.py 中你可以自由组合多种评分器文档长度评分器length按文本长度打分过滤超短空壳页面DCLM fastText 质量评分器fasttext_score用预训练的 fastText 分类器判断文本属于高质量还是通用网络内容这是论文验证过的最强策略入链数评分器inlink_count模仿 PageRank 思想被引用越多的页面越有价值随机评分器random_score作为基线对照验证挑食到底有多大收益集成评分器ensemble_score把多个评分器按权重加权得到综合分。所有评分都可以搭配 normalizer.py 中的 Z-Score 或 Min-Max 归一化让不同量纲的分数可以公平比较。三种爬取策略对比差距有多大论文和项目配置见 README给出了三种可对比的基线策略策略配置中的selection_method思路随机爬取random_score完全盲爬作为下限参考入链爬取inlink_count优先爬被引用多的页面Crawl4LLMdclm_fasttext_score用 fastText 实时判断文本质量实验结果显示用 Crawl4LLM 策略爬到的数据训练出的模型在同等数据量下表现明显优于随机和入链基线。这证明边爬边筛不只是省事而是真的能提升预训练效果。如何运行 Crawl4LLM一分钟上手 ⚡整个爬取流程通过 YAML 配置文件驱动入口是python crawl.py crawl --config 配置文件详见 README。一个最小配置长这样cw22_root_path: 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 max_num_docs: 20000000 selection_method: dclm_fasttext_score order: desc rating_methods: - type: length - type: fasttext_score rater_name: dclm_fasttext_score model_path: fasttext_scorers/xxx.bin爬取结束后文档 ID 会分批写入output_dir再用 fetch_docs.py 把 ID 批量还原成正文文本python fetch_docs.py --input_dir 文档ID目录 --output_dir 正文目录 --num_workers 进程数拿到正文后就可以接入 DCLM 等框架进行 LLM 预训练与评估了。整个管线还支持✅断点续爬save_state_every定期保存队列与已访问集合中断后可无缝恢复✅训练监控集成 wandb_logger.py实时追踪每轮爬取的文档数、链接扩散率与剩余时间✅并行加速num_workers多进程并行抓取与评分充分利用多核机器。想先看看数据长什么样用 access_data.py 传入 ClueWeb22 路径和文档 ID就能直接打印某篇文档的正文及其出链方便你观察爬虫看到的世界。新手常见疑问 FAQ Q1Crawl4LLM 能爬任意网站吗A当前实现针对 ClueWeb22 语料库设计需要先申请该数据集更适合研究和复现论文实验而非通用的互联网爬虫。Q2为什么需要 SSDAREADME 特别强调ClueWeb22 数据量巨大放在 SSD 上才能保证随机读取文档的速度否则 IO 会成为瓶颈。Q32000 万文档要爬多久A取决于机器配置和num_workers。项目内置了剩余时间估算见 utils.py 的log_time会以 12h 30m 5s 的形式告诉你大概进度。总结高质量训练数据从爬得多到爬得准 回到开头的问题LLM 预训练需要 Crawl4LLM 吗如果你的目标是打造高质量、高效率的数据获取管线答案是肯定的。Crawl4LLM 用评分驱动的贪心爬取彻底改变了传统先爬后筛的低效模式把质量筛选从爬取后的清理步骤提前到了每一次链接扩散的决策之中。它让你用更少的算力、更短的时间拿到更适合 LLM 预训练的高质量文本。如果你正为预训练数据发愁不妨从 Crawl4LLM 的论文和这份开源代码开始亲手复现一条越爬越聪明的数据管线——这可能是你迈向更强 LLM 的第一步。【免费下载链接】Crawl4LLMOfficial repository for Craw4LLM: Efficient Web Crawling for LLM Pretraining项目地址: https://gitcode.com/gh_mirrors/cr/Crawl4LLM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表