poolside 合成数据与预训练的真实挑战

视频亮点

02:01

Marah 认为合成数据并非替代有机数据,而是挖掘隐含结构来补充训练

10:24

Robert 介绍他们通过模型副本哈希检查来确保训练正确性,一旦不一致立即崩溃训练

15:07

118B 模型在编码基准上超越 GLM 4.5 Air 和 DeepSeek V4 Flash Max,agentic 代理评测表现最强

poolside 的 Marah Abdin 和 Robert McHardy 在一次演讲中分享了他们在规模化训练大模型过程中遇到的真实问题,涉及合成数据策略和预训练基础设施的调试。

## 合成数据:不是替代,而是补充

Marah 首先解释了 poolside 对合成数据的定位:不是替代有机数据,而是挖掘其中隐含的结构、推理和规划信息。在 Laguna M 点1 到点2 的迭代中,他们发现高质量数据量少、重复率过高,导致模型过早饱和。他们采用重写(rephrasing)来增加多样性,但不仅限于通用的多模态重写,还专门为代码和 STEM 数据设计了专用管道。最终在点2 的预训练混合中,合成数据占 13%。目前他们拥有一个持续增长的 6 万亿 token 语料库。

Marah 把合成数据管道抽象成六个通用组件:种子、主要输入、元数据、次要输入、生成器/函数(可以是带工具的 Agent)以及过滤器/验证器等。管道可以按复杂度排列:一端是廉价的、依赖大量种子的重写,另一端是涉及多步编排的复杂管道(如生成小说,先规划设定再逐章生成)。她特别强调了“跨域移植”:比如把数学题转化为代码,或者从单轮对话变为多轮 Agent 对话。他们开发了 Hive 基础设施,用队列和编排器来管理多个生成 Agent,并且有一个全局监督者来把关生成质量。关键原则是:如果任务对于生成模型来说太难,模型会失去正确性和多样性,所以要把任务拆解得更简单。

## 预训练:信任但验证,否则崩溃

Robert 的分享更侧重于预训练代码和基础设施的可靠性。他提出应该把数据和训练代码实现视作一个整体——数据差模型差,代码差模型同样差。他们团队的原则是“不信任任何东西”,在分布式训练中每隔一段时间计算模型权重的哈希值,如果不同副本的哈希不一致,就立即终止训练。

他展示了几个真实案例:
坏 GPU 导致数据静默损坏:同样的配置和代码,仅仅因为包含一块坏 GPU,损失曲线就变得尖刺,梯度范数巨大。通过哈希检查可以抓住。
数值精度 bug 阻止收敛:在训练 Laguna M1 的约五万步时,模型停止收敛——原因是 Tensor Parallel 进行 unembedding 累加时默认用 BF16,随着激活值增大,精度不够。将累加改为 FP32 后,模型重新开始收敛。
Race condition 导致的默默梯度损坏:在训练 118B 的 Laguna S 时,他们加入了 DeepChem 的 FP8 内核,导致大约 0.5% 的梯度被随机值替换。更麻烦的是,这个损坏在标准哈希检查中是盲点(因为正常训练没有冗余副本用来对比)。他们已经提交了修复 PR,但尚未合入上游。

## 结果的验证与未来

Robert 最后展示了 Laguna S(118B 总参数,8B 活跃参数,训练在 4000 GPU 上 30 万亿 token)的早期 base model 评估结果。在编码基准(MultiPL-E、BigCodeBench)上大幅超越之前的小模型,也优于 GLM 4.5 Air、Qwen 360 和 DeepSeek V4 Flash Max。在代理编码的代理评测 SweepBench 上表现尤为突出。他们特意指出虽然 MMLU Pro 知识基准不如 Nemo Tron 等,但那是数据分布的选择——poolside 专注于 agentic coding。最重要的收获是:所有之前发现的问题修复对 118B 模型仍然有效,配方可以 scale。

poolside 的 Marah Abdin 和 Robert McHardy 在一次演讲中分享了他们在规模化训练大模型过程中遇到的真实问题,涉及合成数据策略和预训练基础设施的调试。

## 合成数据:不是替代,而是补充

Marah 首先解释了 poolside 对合成数据的定位:不是替代有机数据,而是挖掘其中隐含的结构、推理和规划信息。在 Laguna M 点1 到点2 的迭代中,他们发现高质量数据量少、重复率过高,导致模型过早饱和。他们采用重写(rephrasing)来增加多样性,但不仅限于通用的多模态重写,还专门为代码和 STEM 数据设计了专用管道。最终在点2 的预训练混合中,合成数据占 13%。目前他们拥有一个持续增长的 6 万亿 token 语料库。

Marah 把合成数据管道抽象成六个通用组件:种子、主要输入、元数据、次要输入、生成器/函数(可以是带工具的Agent)以及过滤器/验证器等。管道可以按复杂度排列:一端是廉价的、依赖大量种子的重写,另一端是涉及多步编排的复杂管道(如生成小说,先规划设定再逐章生成)。她特别强调了“跨域移植”:比如把数学题转化为代码,或者从单轮对话变为多轮 Agent 对话。他们开发了 Hive 基础设施,用队列和编排器来管理多个生成 Agent,并且有一个全局监督者来把关生成质量。关键原则是:如果任务对于生成模型来说太难,模型会失去正确性和多样性,所以要把任务拆解得更简单。

## 预训练:信任但验证,否则崩溃

Robert 的分享更侧重于预训练代码和基础设施的可靠性。他提出应该把数据和训练代码实现视作一个整体——数据差模型差,代码差模型同样差。他们团队的原则是“不信任任何东西”,在分布式训练中每隔一段时间计算模型权重的哈希值,如果不同副本的哈希不一致,就立即终止训练。

他展示了几个真实案例:
坏 GPU 导致数据静默损坏:同样的配置和代码,仅仅因为包含一块坏 GPU,损失曲线就变得尖刺,梯度范数巨大。通过哈希检查可以抓住。
数值精度 bug 阻止收敛:在训练 Laguna M1 的约五万步时,模型停止收敛——原因是 Tensor Parallel 进行 unembedding 累加时默认用 BF16,随着激活值增大,精度不够。将累加改为 FP32 后,模型重新开始收敛。
Race condition 导致的默默梯度损坏:在训练 118B 的 Laguna S 时,他们加入了 DeepChem 的 FP8 内核,导致大约 0.5% 的梯度被随机值替换。更麻烦的是,这个损坏在标准哈希检查中是盲点(因为正常训练没有冗余副本用来对比)。他们已经提交了修复 PR,但尚未合入上游。

## 结果的验证与未来

Robert 最后展示了 Laguna S(118B 总参数,8B 活跃参数,训练在 4000 GPU 上 30 万亿 token)的早期 base model 评估结果。在编码基准(MultiPL-E、BigCodeBench)上大幅超越之前的小模型,也优于 GLM 4.5 Air、Qwen 360 和 DeepSeek V4 Flash Max。在代理编码的代理评测 SweepBench 上表现尤为突出。他们特意指出虽然 MMLU Pro 知识基准不如 Nemo Tron 等,但那是数据分布的选择——poolside 专注于 agentic coding。最重要的收获是:所有之前发现的问题修复对 118B 模型仍然有效,配方可以 scale。

The Messy Reality of Scale: Synthetic Data and Pre-Training — Marah Abdin & Robert McHardy, poolside

查看原文