@karpathy 三天前我让 autoresearch 在 dep… 上调优 nanochat 约 2 天
@karpathy Three days ago I left autoresearch tuning nanochat for ~2 days on dep…
作者使用 autoresearch 在 depth=12 的 nanochat 上运行约 2 天,自动处理约 700 个改动,找到约 20 个可降低 validation loss 的调整;这些改动可叠加并迁移到 depth=24,使 leaderboard 的 “Time to GPT-2” 从 2.02 小时降至 1.80 小时。涉及 QKnorm scaler、Value Embeddings regularization、banded attention、AdamW betas、weight decay schedule 和 initialization。
三天前,我让 autoresearch 在 depth=12 的模型上调优 nanochat,跑了大约 2 天。它找到了约 20 个能改善 validation loss 的改动。我昨天测试了这些改动,它们全都是可叠加的,并且能迁移到更大的(depth=24)模型上。把这些改动全部叠起来后,今天我测得 leaderboard 上的 “Time to GPT-2” 从 2.02 小时降到了 1.80 小时(约 11% 提升),这会成为新的 leaderboard 记录。所以,是的,这些是真实的改进,而且确实产生了实际差异。我有点意外:在一个我以为已经手动调得相当好的项目上,我第一次很朴素的尝试就已经效果这么好。
这对我来说是第一次,因为我非常习惯手动做神经网络训练的迭代优化。你提出想法,实现它们,检查是否有效(更好的 validation loss),再基于结果提出新想法,读一些论文找灵感,等等等等。这是我 20 年来每天都在做的基本工作。看到 agent 端到端、全靠自己完成整个 workflow,并自主处理了大约 700 个改动,这很特别。它确实会查看实验结果序列,并据此规划下一批实验。这还不是新颖、开创性的“research”(至少现在还不是),但所有调整都是“真实的”:我之前没有手动找到它们,它们可以叠加,并且确实改进了 nanochat。比较大的点包括:
- 它注意到一个疏漏:我的无参数 QKnorm 没有附带 scaler multiplier,所以我的 attention 过于发散。agent 找到了能让它更锐化的 multiplier,也指向了后续工作。
- 它发现 Value Embeddings 很需要 regularization,而我没有加任何 regularization(oops)。
- 它发现我的 banded attention 太保守了(我忘了调它)。
- 它发现 AdamW betas 全乱了。
- 它调了 weight decay schedule。
- 它调了 network initialization。
这是在我已经花了不少时间完成大量调优的基础上做出的。这里是这次 autoresearch “round 1” 的确切 commit。我准备启动 “round 2”,同时也在研究多个 agents 如何协作以释放并行性。 https://t.co/WAz8aIztKT
所有 LLM frontier labs 都会做这个。这是最终 boss 战。当然,在规模化时要复杂得多——你不是只有一个 train.py 文件可以调。但做这件事“只是 engineering”,而且会奏效。你启动一群 agents,让它们协作调小模型,把最有希望的想法逐步提升到越来越大的规模,人类则(可选地)在边缘参与贡献。
更一般地说,任何你关心的 metric,只要评估起来足够高效(或者有更高效的 proxy metrics,比如训练一个更小的网络),都可以由一个 agent swarm 做 autoresearch。值得想一想你的问题是否也属于这一类。
哦对,我可能应该附上 autoresearch 的链接 https://t.co/YCvOwwjOzF (你不是直接“使用它”,它只是一个 recipe/idea——把它交给你的 agent,并应用到你关心的事情上。)
以及周末小范围 viral 的那条关于它的推文,里面有更多上下文 https://t.co/q5eWsvx5p2