- 简介大语言模型(LLMs)在程序合成和数学推理方面的表现从根本上受限于其预训练语料库的质量。我们引入了两个开源许可的数据集,这些数据集根据Llama 3.3社区许可证发布,通过系统性地改写公开数据,显著提升了LLM的性能。SwallowCode(约161亿个标记)通过对The-Stack-v2中的Python代码片段进行四阶段处理来优化:语法验证、基于pylint的风格过滤,以及两阶段的LLM改写过程,该过程确保风格一致性,并将代码片段转换为自包含且算法高效的示例。与依赖排除性过滤或有限转换的先前方法不同,我们的“转换并保留”方法升级了低质量代码,最大化了数据的效用。SwallowMath(约23亿个标记)通过移除样板代码、恢复上下文并将解决方案重新格式化为简洁的分步解释,增强了Finemath-4+数据集。在固定的500亿标记训练预算内,使用SwallowCode对Llama-3.1-8B进行持续预训练,在HumanEval上的pass@1指标提高了+17.0,在HumanEval+上提高了+17.7,相比Stack-Edu取得了显著提升,超越了基线模型的代码生成能力。类似地,使用SwallowMath替代原有数据集后,在GSM8K上的准确率提高了+12.4,在MATH上的准确率提高了+7.6。消融研究表明,每个处理阶段都带来了逐步的改进,其中改写阶段贡献了最大的增益。所有数据集、提示模板和检查点均已公开,便于可重复研究,并推动LLM在专业领域的预训练发展。
-
- 图表
- 解决问题该论文试图通过改进预训练数据集来提升大型语言模型在程序合成和数学推理任务上的性能。这是一个重要但尚未完全解决的问题,特别是在如何有效利用和优化公开数据方面。
- 关键思路论文提出了一种‘转换与保留’的方法,通过系统性地重写公共数据(如Python代码和数学问题解答),生成高质量的预训练数据集SwallowCode和SwallowMath。这种方法不仅过滤低质量数据,还通过多阶段LLM重写过程将其转化为更高效、自包含的形式,这与传统的排除性过滤方法形成鲜明对比。
- 其它亮点实验结果表明,在固定50亿token的训练预算下,使用SwallowCode和SwallowMath进行持续预训练显著提升了Llama-3.1-8B模型在HumanEval、GSM8K等基准测试中的表现。此外,论文提供了详细的消融研究,验证了每个处理阶段对最终效果的贡献。所有数据集、提示词和检查点均已开源,为未来的研究提供了坚实的基础。值得进一步研究的方向包括探索更多领域特定的数据优化方法以及评估这些方法在更大规模模型上的效果。
- 最近的相关研究包括:1) The-Stack-v2 数据集的构建及其在代码生成任务中的应用;2) Finemath-4+ 数据集在数学推理任务中的改进;3) CodeParrot 和 AlphaCode 等模型在程序合成领域的进展;4) Minerva 和 MATH 模型在数学推理方面的研究。相关论文标题如《The Stack: A Dataset of Diverse, High-Quality Coding Data》和《Minerva: Solving Quantitative Reasoning Problems with Language Models》。
NEW
提问交流
提交问题,平台邀请作者,轻松获得权威解答~
向作者提问

提问交流