在大模型迈向推理时代的当下,数学推理能力已成为衡量语言模型智能上限的关键指标。
近日,LLM360 推出了 MegaMath:全球目前最大的开源数学推理预训练数据集,共计 3710 亿(371B)tokens,覆盖网页、代码和高质量合成数据三大领域。
报告标题:MegaMath: Pushing the Limits of Open Math Corpora
技术报告:abs/2504.02807
数据集地址:datasets/LLM360/MegaMath
GitHub 代码: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 等优秀开源团队长期以来提供的模型、工具和数据方案,让团队有机会站在巨人的肩膀上持续打磨和完善这个工作。
0 条