Decoding Data Quality via Synthetic Corruptions: Embedding-guided Pruning of Code Data
作者: Yu Yang, Aaditya K. Singh, Mostafa Elhoushi, Anas Mahmoud, Kushal Tirumala, Fabian Gloeckle, Baptiste Rozière, Carole-Jean Wu, Ari S. Morcos, Newsha Ardalani
分类: cs.CL, cs.AI, cs.LG
发布日期: 2023-12-05
备注: 12 pages, 4 figures, Oral Presentation at 3rd Workshop on Efficient Natural Language and Speech Processing (ENLSP-III), NeurIPS 2023
💡 一句话要点
提出基于合成扰动的代码数据质量评估与剪枝方法,提升代码大模型性能。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码数据质量 数据剪枝 合成扰动 代码嵌入 大语言模型
📋 核心要点
- 现有代码数据集质量参差不齐,直接影响代码大模型的训练效果,亟需有效的数据清洗方法。
- 论文提出一种基于合成扰动的代码数据质量评估与剪枝方法,通过分析扰动后的嵌入特征来识别低质量数据。
- 实验表明,该方法在HumanEval和MBPP等基准测试中优于现有方法,且相比不剪枝,性能提升高达3%。
📝 摘要(中文)
代码数据集通常来自GitHub等多样化且不受控的来源,可能存在质量问题,影响代码生成大语言模型的性能和训练效率。本文利用嵌入空间识别并移除“低质量”代码数据。首先,通过合成扰动探索嵌入空间中“低质量”代码的特征。然后,设计在嵌入空间中运行的新型剪枝指标,以识别和删除Stack数据集中低质量的条目。在HumanEval和MBPP基准测试中,本文提出的合成扰动信息剪枝(SCIP)方法优于现有的基于嵌入的方法。重要的是,与不进行剪枝相比,性能提升高达3%,表明合成扰动的洞察力在数据剪枝方面的潜力。
🔬 方法详解
问题定义:论文旨在解决代码数据集质量参差不齐的问题,这些低质量数据会降低代码大语言模型的训练效率和最终性能。现有基于嵌入的剪枝方法主要集中在去重或增加多样性上,缺乏针对代码数据质量的有效评估和剪枝策略。
核心思路:论文的核心思路是利用合成扰动来模拟低质量代码,通过分析这些扰动代码在嵌入空间中的特征,从而学习到区分高质量和低质量代码的判别标准。基于此,设计相应的剪枝指标,在嵌入空间中高效地识别并移除低质量代码。
技术框架:整体框架包含以下几个主要步骤:1) 使用预训练的代码嵌入模型(如CodeBERT)将代码数据集映射到嵌入空间;2) 对代码数据进行合成扰动,生成低质量代码样本;3) 分析扰动前后代码样本在嵌入空间中的特征变化,学习低质量代码的特征表示;4) 基于学习到的特征,设计剪枝指标,用于评估代码数据的质量;5) 根据剪枝指标,对代码数据集进行剪枝,移除低质量数据。
关键创新:最重要的创新点在于利用合成扰动来指导代码数据质量的评估和剪枝。通过模拟真实世界中可能出现的代码错误和噪声,可以更有效地学习到低质量代码的特征表示,从而提高剪枝的准确性和有效性。与现有方法相比,该方法更关注代码本身的质量,而非仅仅是去重或增加多样性。
关键设计:论文中关键的设计包括:1) 合成扰动的类型和强度,需要根据具体的代码数据集和任务进行调整;2) 剪枝指标的设计,需要能够有效地捕捉到低质量代码的特征,并区分高质量和低质量代码;3) 剪枝比例的设置,需要在保证数据质量的同时,避免过度剪枝导致的信息损失。
📊 实验亮点
实验结果表明,本文提出的SCIP方法在HumanEval和MBPP基准测试中优于现有的基于嵌入的方法。与不进行剪枝相比,性能提升高达3%,验证了合成扰动信息剪枝在提升代码大模型性能方面的有效性。该方法为代码数据清洗提供了一种新的思路。
🎯 应用场景
该研究成果可应用于代码大模型的预训练数据清洗,提升模型训练效率和生成代码的质量。此外,该方法也可扩展到其他类型的数据集,例如文本、图像等,用于数据质量评估和清洗,从而提升机器学习模型的性能。
📄 摘要(原文)
Code datasets, often collected from diverse and uncontrolled sources such as GitHub, potentially suffer from quality issues, thereby affecting the performance and training efficiency of Large Language Models (LLMs) optimized for code generation. Previous studies demonstrated the benefit of using embedding spaces for data pruning, but they mainly focused on duplicate removal or increasing variety, and in other modalities, such as images. Our work focuses on using embeddings to identify and remove "low-quality" code data. First, we explore features of "low-quality" code in embedding space, through the use of synthetic corruptions. Armed with this knowledge, we devise novel pruning metrics that operate in embedding space to identify and remove low-quality entries in the Stack dataset. We demonstrate the benefits of this synthetic corruption informed pruning (SCIP) approach on the well-established HumanEval and MBPP benchmarks, outperforming existing embedding-based methods. Importantly, we achieve up to a 3% performance improvement over no pruning, thereby showing the promise of insights from synthetic corruptions for data pruning.