Programming Every Example: Lifting Pre-training Data Quality Like Experts at Scale
作者: Fan Zhou, Zengzhi Wang, Qian Liu, Junlong Li, Pengfei Liu
分类: cs.CL, cs.AI, cs.LG
发布日期: 2024-09-25 (更新: 2025-02-14)
备注: 47 pages, 13 figures, 34 tables
🔗 代码/项目: GITHUB
💡 一句话要点
ProX:通过编程每个样本,提升大规模预训练数据质量,媲美专家水平
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 数据清洗 预训练 语言模型 自动化 数据质量
📋 核心要点
- 现有方法依赖人工专家设计规则来提升预训练数据质量,但规则缺乏灵活性,难以针对每个样本的特性进行优化。
- ProX将数据提炼视为编程任务,利用小型语言模型生成并执行细粒度操作,从而大规模优化每个样本。
- 实验表明,在ProX精选数据上预训练的模型,在多个下游任务上显著优于原始数据和其他数据选择方法。
📝 摘要(中文)
大型语言模型预训练传统上依赖于人工专家设计启发式规则来提高语料库质量,这导致了大量规则的产生。然而,这些规则缺乏灵活性,无法有效地处理每个样本的独特特征。同时,对每个样本应用定制规则对于人类专家来说是不切实际的。本文证明,即使是参数量仅为0.3B的小型语言模型也能够展现出与人类专家相当的数据提炼能力。我们引入了Programming Every Example (ProX),这是一个新颖的框架,它将数据提炼视为一个编程任务,使模型能够通过生成和执行细粒度的操作(例如字符串归一化)来大规模地提炼每个样本的语料库。实验结果表明,在ProX精选的数据上预训练的模型在各种下游基准测试中,比原始数据或其他选择方法过滤的数据高出2%以上。它的有效性涵盖各种模型大小和预训练语料库,包括C4、RedPajama-V2、FineWeb、FineWeb-Edu和DCLM。此外,ProX在特定领域的持续预训练中表现出巨大的潜力:在没有特定领域设计的情况下,在ProX精炼的OpenWebMath上训练的模型优于人工设计的基于规则的方法,在Mistral-7B上平均准确率提高了7.6%,在Llama-2-7B上提高了14.6%,在CodeLlama-7B上提高了20.3%,所有这些都在10B tokens内,与在200B tokens上训练的Llemma-7B等模型相当。进一步的分析表明,ProX显著节省了训练FLOPs,为高效的LLM预训练提供了一条有希望的途径。我们开源了ProX,包含>500B语料库、模型,并分享所有训练和实现细节,以供可重复的研究和未来的创新。代码:https://github.com/GAIR-NLP/ProX
🔬 方法详解
问题定义:论文旨在解决大型语言模型预训练中,如何高效且精细地提升数据质量的问题。现有方法依赖人工专家制定规则,但这些规则难以覆盖所有数据样本的特殊情况,且人工成本高昂,难以扩展到大规模数据集。因此,如何自动化地、针对每个样本进行数据清洗和优化,是本论文要解决的核心问题。
核心思路:论文的核心思路是将数据清洗和优化过程视为一个编程任务。通过训练一个小型语言模型,使其能够为每个数据样本生成一段“程序”,这段程序包含了针对该样本的细粒度操作,例如字符串归一化、错误纠正等。然后,执行这段程序,从而实现对每个样本的个性化优化。这种方法的核心在于利用语言模型的生成能力,自动化地为每个样本定制优化策略。
技术框架:ProX框架主要包含以下几个阶段:1) 数据收集:收集大规模的预训练语料库。2) 程序生成:使用一个小型语言模型(例如0.3B参数的模型)为每个数据样本生成一段程序。这个模型通过学习专家规则和人工标注的数据进行训练。3) 程序执行:执行生成的程序,对数据样本进行清洗和优化。4) 预训练:使用优化后的数据进行大型语言模型的预训练。整个框架的关键在于程序生成阶段,需要设计合适的prompt和训练策略,以保证生成的程序能够有效地提升数据质量。
关键创新:ProX最重要的技术创新点在于将数据清洗和优化过程转化为一个编程任务,并利用语言模型自动化地生成针对每个样本的优化策略。这与传统方法依赖人工专家制定规则形成了鲜明对比,具有更高的灵活性和可扩展性。此外,ProX还能够利用小型语言模型实现媲美专家水平的数据提炼能力,降低了成本和资源消耗。
关键设计:在程序生成阶段,论文可能采用了以下关键设计:1) Prompt设计:设计合适的prompt,引导语言模型生成有效的程序。例如,prompt可以包含数据样本的描述、期望的优化目标等。2) 训练策略:采用合适的训练策略,例如模仿学习或强化学习,训练语言模型生成高质量的程序。3) 程序表示:选择合适的程序表示形式,例如领域特定语言(DSL)或自然语言指令,以便语言模型能够生成和执行程序。4) 损失函数:设计合适的损失函数,例如奖励模型或专家规则的损失,引导语言模型生成符合期望的程序。
🖼️ 关键图片
📊 实验亮点
ProX在多个数据集(C4、RedPajama-V2等)和模型规模上都取得了显著的性能提升,下游任务性能提升超过2%。在OpenWebMath数据集上,ProX优于人工设计的规则方法,Mistral-7B模型平均准确率提升7.6%,Llama-2-7B提升14.6%,CodeLlama-7B提升20.3%。此外,ProX还显著节省了训练所需的计算资源(FLOPs)。
🎯 应用场景
ProX具有广泛的应用前景,可用于提升各种语言模型预训练数据的质量,从而提高模型在下游任务中的性能。尤其适用于领域特定语言模型的持续预训练,例如数学、代码等领域。通过自动化数据清洗和优化,ProX可以降低人工成本,加速模型开发周期,并提升模型的泛化能力和鲁棒性。
📄 摘要(原文)
Large language model pre-training has traditionally relied on human experts to craft heuristics for improving the corpora quality, resulting in numerous rules developed to date. However, these rules lack the flexibility to address the unique characteristics of individual example effectively. Meanwhile, applying tailored rules to every example is impractical for human experts. In this paper, we demonstrate that even small language models, with as few as 0.3B parameters, can exhibit substantial data refining capabilities comparable to those of human experts. We introduce Programming Every Example (ProX), a novel framework that treats data refinement as a programming task, enabling models to refine corpora by generating and executing fine-grained operations, such as string normalization, for each individual example at scale. Experimental results show that models pre-trained on ProX-curated data outperform either original data or data filtered by other selection methods by more than 2% across various downstream benchmarks. Its effectiveness spans various model sizes and pre-training corpora, including C4, RedPajama-V2, FineWeb, FineWeb-Edu, and DCLM. Furthermore, ProX exhibits significant potential in domain-specific continual pre-training: without domain specific design, models trained on OpenWebMath refined by ProX outperform human-crafted rule-based methods, improving average accuracy by 7.6% over Mistral-7B, with 14.6% for Llama-2-7B and 20.3% for CodeLlama-7B, all within 10B tokens to be comparable to models like Llemma-7B trained on 200B tokens. Further analysis highlights that ProX significantly saves training FLOPs, offering a promising path for efficient LLM pre-training. We are open-sourcing ProX with >500B corpus, models, and sharing all training and implementation details for reproducible research and future innovation. Code: https://github.com/GAIR-NLP/ProX