CS336 Language Modeling from Scratch | Lecture 13: Data 1
CS336 Language Modeling from Scratch | Lecture 13: Data 1
1. 引言:数据的重要性 (Introduction)
- 核心观点 (Hot Take): 在构建 Language Models 时,数据是比 Architecture 更关键的因素。
- 行业现状:
- 尽管 Scaling Laws 很重要,但在公开的论文(如 Llama 3, DeepSeek)中,公司倾向于公开 Architecture,但对数据细节严格保密。
- 保密原因包括:竞争动态 (Competitive dynamics) 和 法律风险 (Legal liability)。
- 数据的特性:
- 数据处理是高度可并行化的 (highly parallelizable),相比于 Architecture 设计,更容易通过扩大团队规模来扩展。
2. 训练阶段概览 (Training Stages)
现代 LLM 开发通常分为三个阶段,但界限日益模糊:
- Pre-training (预训练):
- 使用海量的 Raw Data(通常来自 Web)。
- 产出:Base Model。
- Mid-training (中期训练):
- 使用较小规模、高质量的数据集。
- 目标:增强特定能力(如 Math, Code, Long Context)。
- Post-training (后训练):
- 包括 Fine-tuning on instruction/chat data 和 Reinforcement Learning (RLHF)。
- 目标:指令遵循、对话能力、安全性。
- 产出:Instruct Model。
3. 预训练数据源演变 (Evolution of Pre-training Data)
3.1 早期模型 (2018-2019)
- BERT (2018):
- 数据源:BooksCorpus (7k books) + Wikipedia。
- 意义:从基于 Sentences 的训练转向基于 Documents 的训练。
- GPT-2 (2019):
- WebText: 基于 Reddit 的出站链接,筛选标准为 Karma > 3。
- 目标:从低质量的 Web 中快速获取多样化的高质量子集。
3.2 Common Crawl与清洗策略
- Common Crawl (CC):
- 互联网的学术近似版本,自2007年起每月抓取。
- 格式:WARC (Raw HTTP response/HTML) vs. WET (Text only)。HTML 转 Text 是一个 lossy process,工具选择(如 trafilatura vs justtext)会显著影响数据质量。
- 清洗策略 (Filtering Strategies):
- CCNet (Meta):
- 使用 Model-based filtering。
- 在 Wikipedia 上训练一个 5-gram model 作为质量分类器 (Quality Classifier) 来筛选网页。
- C4 (Google/T5):
- 使用 Heuristics (启发式规则)。
- 规则包括:移除包含脏话的页面、移除代码(”{”)、保留以标点结尾的行。
- CCNet (Meta):
3.3 GPT-3 与 The Pile (2020)
- GPT-3 数据混合:
- Common Crawl, WebText2, Books1, Books2, Wikipedia。
- 使用 Quality Classifier(逻辑回归)区分高质量数据(WebText/Wiki/Books)与低质量 CC 数据。
- The Pile (EleutherAI):
- 为了复现 GPT-3 而创建的开源数据集,包含22个高质量域。
- 包括:ArXiv, PubMed, StackExchange, Enron Emails (唯一的大型公开邮件数据集)。
4. 特定领域数据 (Domain Specific Data)
4.1 书籍 (Books)
- 重要性: 提供长上下文 (Long Context) 和连贯叙事。
- 来源:
- Project Gutenberg: 公共领域书籍(版权过期)。
- Shadow Libraries (如 LibGen, Books3): 包含版权书籍,法律风险极高,已被多次下架。
4.2 代码 (Code)
- GitHub: 主要来源。
- 处理难点:
- 包含非代码文件、提交历史等。
- 需要处理 Licenses(通常只保留 permissively licensed 代码)和 De-duplication(去重)。
- The Stack: Hugging Face 发布的经过清洗的 GitHub 数据集。
4.3 问答与对话 (Q&A)
- Stack Exchange: 包含问题、答案、评论、投票数。结构天然类似于 Instruction Following 数据。
5. 现代数据处理流水线 (Modern Data Pipelines)
5.1 从 LLaMA 到 DCLM
- LLaMA:
- 使用 Wikipedia 引用作为启发式信号来筛选 Common Crawl。
- RefinedWeb (Falcon) / FineWeb:
- 假设:如果过滤得当,仅仅 Web 数据就足够了。
- 强调大规模去重 (Deduplication) 和基于规则的清洗,最初避免使用 Model-based filtering 以减少偏见。
- DataComp (DCLM):
- 将数据清洗视为一个优化问题。
- DCLM-Baseline: 使用 Model-based filtering 回归主流。
- 训练分类器(FastText),正样本来自 OpenHermes (Instruction data) 和 ELI5 (Reddit Q&A),仅保留前 1-2% 的数据。
5.2 前沿技术:Nemotron-CC (Nvidia)
- Scaling Up: 过于激进的过滤会导致 Token 数量不足。
- 新方法:
- Quality Filtering: 使用 Large Language Model 对文档的“教育价值 (Educational Value)”进行打分。
- Synthetic Data (合成数据):
- 对低质量数据:使用 LLM 重写 (Rewrite)。
- 对高质量数据:使用 LLM 生成任务 (Generate Tasks/QA pairs)。
6. 法律与版权 (Copyright & Legal)
- 基本概念: 版权法保护“固定在有形媒介中的原创表达 (Original works of authorship fixed in a tangible medium)”,不保护 Ideas 或 Algorithms。
- Fair Use (合理使用): 训练受版权保护的数据是否合法主要依赖 Fair Use 抗辩,需考量四个因素:
- 使用的目的(商业 vs 教育,是否具有转换性 Transformative)。
- 作品的性质(事实 vs 虚构)。
- 使用的数量。
- 对潜在市场的影响 (Effect on the market)。
- 现状: 即使通过 Fair Use 或拥有 License,许多平台(如 YouTube)的 Terms of Service 也会限制数据抓取。
7. Mid-training 与 Post-training 数据
7.1 长上下文扩展 (Long Context Extension)
- 由于 Transformers 的计算复杂度是序列长度的平方 (),通常在 Mid-training 阶段才引入长文本训练。
- 数据源:书籍、数学推导。
7.2 指令微调 (Instruction Tuning)
- SuperNaturalInstructions / FLAN: 将传统 NLP 任务转化为 Prompt/Response 格式。
- Synthetic Instruction Data:
- Self-Instruct (Alpaca): 提示 LLM (如 GPT-4) 生成指令-输出对。
- Chat Logs (WildChat/ShareGPT): 用户与 Chatbot 的真实对话记录。
- Evol-Instruct: 将简单指令复杂化以提升难度。
8. 总结 (Summary)
- 数据来源从简单的 Web 抓取演变为复杂的流水线:Raw Dump -> De-duplication -> Heuristic/Model-based Filtering -> Synthetic Augmentation。
- 数据工程目前仍充满启发式规则 (Heuristics),缺乏统一的理论原则,但它是模型性能差异化的核心。