NanoGPT Slowrun:语言建模,有限数据,无限计算
Source: Hacker News
计算 vs. 数据扩展
计算的增长速度远快于数据。我们当前的扩展定律要求二者成比例增长才能扩展,但它们增长的非对称性意味着智能最终会受到数据而非计算的瓶颈限制。如果你观察除语言模型之外的几乎所有领域,这一点很容易看出来。在机器人学和生物学中,巨大的数据需求导致模型表现薄弱,而这两个领域都有足够的经济激励去利用 1000× 更多的计算资源,只要这能显著提升结果。但他们做不到,因为没有人知道如何仅靠增加计算而不增加数据来实现扩展。
解决方案是构建在有限数据、几乎无限计算环境下工作的新学习算法。这正是我们在 Q Labs 正在解决的问题:我们的目标是理解并解决泛化。
上周我们发布了 NanoGPT Slowrun,这是一个用于数据高效学习算法的开源仓库。规则很简单:在 FineWeb 上使用 1 亿 token 进行训练,使用任意多的计算资源,验证损失最低者获胜。改进以 PR 形式提交到仓库,若能降低验证损失则合并。这个约束是 modded‑nanogpt 等速度跑(speedrun)优化墙钟时间的逆向。那些基准测试非常有成效,但优化速度会过滤掉成本高的想法:强正则化、二阶优化器、梯度下降的替代方案。Slowrun 正是为这些想法而构建的。
我们迄今为止的发现
- Muon 超越了我们测试的所有优化器(AdamW、SOAP、MAGMA)。
- 多轮训练(multi‑epoch training)很重要。
- 参考 Kotha 等人的工作,如果配合激进的正则化——权重衰减高达标准的 16× 以及 dropout,扩展到大参数量是可行的。
基线相对于 modded‑nanogpt 的数据效率约为 2.4×。
更新:5.5× 数据效率
自首次发布以来,社区贡献将数据效率从约 2.4× 提升至 5.5× (相对于 modded‑nanogpt),在几天内翻了一番。关键改动包括:
- 在每个 epoch 开始时进行洗牌,这对多轮训练产生了超出预期的影响。
- 使用学习得到的投影来表示 value embedding,而不是单独的嵌入表。
- 将平方 ReLU 替换为 SwiGLU 激活函数。
- 对多个模型进行集成。
短期内实现 10× 数据效率似乎是可行的。若在今年底前继续探索,达到 100× 也许有可能,但这将需要在算法层面进行深入探索。
我们认为仍有广阔空间的方向
- 二阶优化器和自然梯度方法
- 扩散模型
- 课程学习
- 类梯度下降的替代方案,如进化搜索
- 针对压缩/模型复杂度的优化
如果你正在从事上述任意方向或我们尚未想到的工作,请在仓库上打开 issue,或发送邮件联系。