MegaMath:史上最大开源数学预训练数据集发布,3710亿Tokens助力数学推理

LLM360发布MegaMath,史上最大开源数学预训练数据集,包含3710亿tokens,助力大模型数学推理能力提升。

原文标题:3710亿数学tokens,全面开放!史上最大高质量开源数学预训练数据集MegaMath发布

原文作者:机器之心

冷月清谈:

MegaMath是由LLM360推出的一个大规模开源数学推理预训练数据集,包含3710亿tokens,是目前全球最大的开源数学数据集,规模上超越了DeepSeek-Math Corpus。该数据集由数学密集网页数据、数学相关代码和高质量合成数据三部分组成,旨在解决开源社区缺乏高质量、大规模数学数据的难题,为数学推理能力更强的语言模型提供坚实基础。MegaMath通过优化网页数据处理流程、精确召回数学代码数据和大规模合成数学数据等方法,保证了数据的质量和多样性。实验证明,MegaMath能够显著提升模型在数学任务上的表现。

怜星夜思:

1、MegaMath数据集包含网页、代码和合成数据,你认为哪种数据对提升模型的数学推理能力最有效?为什么?
2、文章提到MegaMath在Llama-3.2上进行了预训练,并在多个数学任务上取得了显著提升。你认为MegaMath数据集对其他架构的大语言模型(例如,GPT系列)是否也能带来类似的提升?
3、MegaMath团队希望通过开源MegaMath数据集推动数学语言模型的发展。你认为除了提升模型性能,MegaMath的开源还有哪些潜在的价值?

原文内容


在大模型迈向推理时代的当下,数学推理能力已成为衡量语言模型智能上限的关键指标。


近日,LLM360 推出了 MegaMath:全球目前最大的开源数学推理预训练数据集,共计 3710 亿(371B)tokens,覆盖网页、代码和高质量合成数据三大领域。



  • 报告标题:MegaMath: Pushing the Limits of Open Math Corpora
  • 技术报告:https://arxiv.org/abs/2504.02807
  • 数据集地址:https://hf.co/datasets/LLM360/MegaMath
  • GitHub 代码:https://github.com/LLM360/MegaMath

这不仅是首次在规模上超越 DeepSeek-Math Corpus(120B)的开源数据集,更代表从「只靠网页」到「面向推理」的重大跨越。短短数日时间,数据集下载量已经来到 3 万余次,并且持续在 Hugging Face 趋势榜上名列前茅。


MegaMath数据集总览


为什么我们需要 MegaMath?


在现有主流闭源数学语料如 Qwen-2.5-Math(1T)和 DeepSeekMath(120B)持续展现卓越数学能力的同时,开源研究社区长期缺乏等量级、等质量的数学数据。当前可用的开源数据集(如 OpenWebMath、FineMath)规模过小,无法支撑更大规模的模型训练;过滤过度,导致数学样本量缺失多样性不足。


MegaMath和其他数据集的统计数据对比


为解决这一痛点,MegaMath 团队本着「做困难而正确的事情」为目标,以规模 × 质量 × 多样性为核心设计,历时 9 个月时间,构建了全面开放的数学推理数据底座。


MegaMath 数据集共计 3710 亿 tokens,是之前经典开源数学数据,如 OpenWebMath 的约 20 倍。数据集共分为三大部分:


  • 2790 亿 tokens:数学密集网页数据(Math-rich Web)
  • 281 亿 tokens:数学相关代码(Math Code)
  • 640 亿 tokens:高质量合成数据(Synthetic Data)

每部分数据均经过多轮筛选、清洗并通过下游预训练实验充分验证,以确保实用性与泛化能力并存


构建 MegaMath 的秘方


如何构建这样一个庞大的推理数据集呢?作者将他们主要分为 3 块内容,并精心设计了不同的数据「流水线」,确保高效、高质量的数据开发。


高质量的网页数据构建


MegaMath的网页数据处理流程


为了彻底优化数学文本的处理流程,作者重新下载处理了 2014–2024 年间所有的 99 个 Common Crawl 文件包,并对互联网的数学文本提取进行一系列大量的工程优化来确保数据质量:


  • 当前常用的开源文本抽取工具对 HTML 中数学的元素并没有很好地处理,团队因此开发了一套 HTML 结构优化的脚本,在抽取前就提取和优化 LaTeX、KaTeX、mathml 等元素中的公式信息进行重构,以确保在抽取时充分保留文本中的数学符号、公式和定理。

  • 由于不同抽取器的处理速度有区别,团队创新地采用了两段式提取方法,第一阶段注重效率,用快速的抽取器进行抽取 + 筛除非数学样本;第二阶段注重精度,用包含更多规则的处理器进一步移除文本噪音和精细筛选出和数学强相关的数据。这使得 MegaMath 最终保留出数学强相关、且更干净的大规模数学文本数据。

  • 对于如何训练稳健而准确的文本分类器,团队也发现了因为种子数据收集带来的分布偏移问题,因此在第一阶段的粗筛之后通过重新收集种子数据训练分类器来进行二阶段筛选。

  • 考虑到目前研究社区对于续训练(Continual Pre-training)、中期训练(Mid-Training)的广泛需求,作者还利用语言模型对文本的教育价值进行动态打分,再次过滤得到包含极高教育价值的数学子集,并进一步用 LLM 进行精炼,得到了远超开源任何数据集质量的子集;在和现存最高质量的数据 FineMath 进行一对一公平对比时,也能显著超过 4% 的下游性能。

这一系列的工程优化和技术迭代最终形成了:


  • MegaMath-Web:包含 263B tokens 的最大规模互联网数学语料
  • MegaMath-Web-Pro:包含 15B tokens 的 LLM 优化后的超高质量数学语料


精确的数学代码数据召回


MegaMath-Code的多步召回流程


代码数据被广泛验证,有利于提升模型的数学表现、提升模型利用「生成代码 + 执行求解」范式进行解题的能力。


因此,这是一份宝贵的数据领域。MegaMath 在现存最大的代码预训练数据集 Stack v2 中挖掘了数学相关代码块,同时结合团队之前提出的 Programming Every Example(ProX)方法,利用(1)大模型评分(LLM scoring);(2)微调小模型快速筛选(SLM filtering)的方式,高效清洗出了包括科学计算、符号推理、逻辑程序等领域的代码数据,形成 MegaMath-Code,一个包含 28.1B tokens 的数学相关语料,包含了共 11 种编程语言,进一步加强了数据集的丰富程度。


大规模数学数据合成


MegaMath-Synth的三种大规模合成方法


近年来,合成数据已经成为大模型训练不可缺失的一部分数据;尤其是当传统的数据已经被大量发掘和利用的情况下,合成数据代表了一类可持续被开发的高质量数据源。这在之前的开源预训练数据集中,通常是没有被探索的。


MegaMath 团队积极拥抱合成数据,并开源了预训练规模的高质量文本,包含(1)Q&A 问答形式(解决数学题);(2)合成代码(跨语言转为 Python);(3)文本 + 代码交错数据(更贴近真实解题场景);所有样本都经过质量检测(包括代码块的可执行性校验)。团队通过不断优化 Prompt、简化工程设计,达到在消融实验中表现全面优于现有合成的基线


效果如何,表现说话


MegaMath-Llama-3.2 1B / 3B的表现在CoT和PAL测试上均提升显著。


MegaMath 不是单纯地「堆数据」拼大小,而是对每一步都进行了严谨验证以确保数据质量


这包括:(1)文本抽取流程验证;(2)去重策略对比(在机器承受范围内寻求最优的 MinHash 去重策略);(3)fastText 过滤阈值、训练策略调优;(4)代码数据比重 & SLM 召回率消融;(5)合成策略的迭代。


为了检验这些策略,所有的实验都在足够大的尺度下进行了预训练 + 下游评测的验证实验,用来为最终的方案和策略提供足够显著的实验信号。


最终,MegaMath 共进行了超过 50 次的预训练验证,并最终在 Llama-3.2(1B & 3B)上进行了 100B 的预训练


实验表明,MegaMath 能够在 GSM8K、MATH 等数 10 个标准数学任务上取得 15–20% 的绝对提升。这些数字实打实地说明了 MegaMath 数据集在数学推理上的显著效果。


作者的愿景


作者希望,MegaMath 的发布,能在一定程度上推动开源数学预训练数据集在规模、质量与多样性上的进一步发展,也希望 MegaMath 能成为构建更强数学语言模型的一个坚实起点,激发更多来自学术界与工业界的合作与创新。


在迈向更强推理能力与更高智能上限的过程中,MegaMath 只是初步阶段的尝试。作为一个致力于开放科学与开源研究的团队,团队深知这项工作的挑战与局限,也非常感激开源社区给予的诸多启发与帮助。


特别感谢 Hugging Face、DeepSeek、Qwen 等优秀开源团队长期以来提供的模型、工具和数据方案,让团队有机会站在巨人的肩膀上持续打磨和完善这个工作。


© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:[email protected]

我觉得不一定。Llama-3.2和GPT系列的模型架构差异很大,对数据的偏好也可能不同。MegaMath数据集针对Llama-3.2进行了优化,可能更适合其架构特点。如果直接将MegaMath用于训练GPT系列模型,可能需要进行一些调整和优化,才能达到最佳效果。这就像把一个为安卓手机设计的APP,直接装到IOS上,兼容性可能存在问题。

从信息论的角度来看,我认为高质量的数学网页数据价值最高。代码和合成数据本质上都是对数学知识的一种形式化表达,而网页数据则包含了更丰富的上下文信息、解题思路和推导过程。这些信息对于模型理解数学概念和提升推理能力至关重要。当然,前提是网页数据的质量足够高,能最大程度避免噪声干扰。

从更长远的角度来看,开源MegaMath有助于提高数学语言模型的可解释性和可信度。闭源模型往往像一个黑盒子,我们很难了解其内部的工作机制。而开源模型则可以让我们深入了解其数据来源、算法逻辑和决策过程,从而更好地评估其潜在的风险和偏见,并采取相应的措施进行 mitigations。这对于在关键领域(例如金融、医疗等)应用数学语言模型至关重要。

理论上来说,应该会有提升。MegaMath数据集的核心价值在于其高质量和大规模的数学知识,这些知识对于任何希望在数学推理方面有所突破的大语言模型都是有益的。不过,具体提升幅度可能会受到模型架构、训练方法等因素的影响。例如,某些架构可能更擅长处理特定类型的数据,或者某些训练方法可能更有效地利用MegaMath中的知识。

这个问题很有意思!我觉得这三种数据各有千秋,很难说哪个绝对最有效。网页数据提供了海量的背景知识,代码数据让模型学会使用工具,而合成数据则可以针对性地训练模型的特定能力。如果非要选一个,我个人觉得代码数据可能更直接,毕竟数学最终还是要通过计算来实现的。但是如果缺少了海量的网页数据做铺垫,仅仅靠代码数据训练出来的模型会不会变成一个只会解题的“工具”?这就好比给了你计算器,但是你完全不懂数学概念,还是解不出题。

这是一个很好的问题!我想从迁移学习的角度来分析。如果GPT系列模型与LLama-3.2在特征提取和知识表示方面存在一定的相似性,那么MegaMath数据集的知识就可以比较容易地迁移到GPT系列模型上,从而带来显著的提升。反之,如果两个模型差异太大,那么迁移学习的效果就会很差。因此,需要进一步的研究来评估MegaMath数据集在不同架构大语言模型上的泛化能力。

开源最大的好处就是促进合作和创新啊!MegaMath的开源可以吸引更多的研究者参与到数学语言模型的研究中来,大家可以基于这个数据集进行各种尝试,例如改进模型架构、设计新的训练方法、探索不同的应用场景等等。这种集体智慧的力量,往往能够带来意想不到的突破。另外,开源也有助于知识的传播和共享,让更多的人了解和使用数学语言模型。

我觉得开源MegaMath还有助于打破学术界和工业界之间的壁垒。学术界可以利用MegaMath进行前沿研究,而工业界则可以基于MegaMath开发实际应用。这种产学研结合的模式,可以加速科技成果的转化,推动整个行业的发展。想象一下,如果未来有更多基于MegaMath的数学教育APP出现,孩子们学习数学的方式可能会发生翻天覆地的变化!

我更倾向于合成数据。虽然网页数据和代码数据量大,但噪声也多,需要大量的清洗和筛选工作。而合成数据可以根据需求定制,针对特定数学知识点进行强化训练。而且,合成数据造价相对较低,可以持续生成新的数据,保持模型的新鲜度。当然,合成数据也需要保证质量,否则可能会引入偏差,导致模型出现幻觉。