你睡一觉,AI 帮你试了一百种方案——Karpathy 的 AutoResearch 是怎么回事

0 阅读8分钟

你睡一觉,AI 帮你试了一百种方案——Karpathy 的 AutoResearch 是怎么回事

很多人第一次听到 AutoResearch,以为又是一款套了 AI 外壳的文献检索工具。

不是的。它做的事情更根本一点:让 AI agent 在你睡觉的时候,自主跑完一百个实验,把有用的改动留下来,把没用的还原掉。

2026 年 3 月,Andrej Karpathy 在 GitHub 上推了这个项目。三个月不到,66,000 个 star。README 最后一行他写了一句话:"This repo is the story of how it all began."


它解决的是什么问题

做机器学习研究有一件很费时间的事:跑实验。

项目里有一份现成的 GPT 训练代码(train.py),能跑,但不一定是最优的。研究员要做的事,是反复调整这份代码——改一下 attention 头的数量,跑一次,等结果;换一个 optimizer,再跑;调一下 batch size,再跑。很多时候你人不在,GPU 却闲着。

AutoResearch 的思路是把这整个循环交给 agent 来转。

人只需要做两件事:写清楚目标,腾出一块 GPU。agent 负责改代码、跑训练、评估结果、决定要不要保留这次修改,然后继续下一轮。


用一个普通人能懂的比喻

如果你觉得上面说的太技术,换一个角度。

假设你在研究一个咖啡配方,想找出最好喝的豆子比例。你的方法是:每次调整一点点比例,冲一杯,喝,记下感受,好的配方写进本子,不好的下次改回来,继续试。

autoresearch 做的事情一模一样,只是换成:每次改一点点代码,跑训练,看分数,分数好就保留,不好就还原,继续改。

区别是:你每天最多喝十几杯咖啡,它一晚上能试一百次。

这套逻辑的本质非常简单——在约定好的边界内,反复试错,保留有效的改动,丢掉没用的。没有魔法,就是循环够快、够持久。


设计上有三个核心决策

1. 只允许 agent 改一个文件

整个项目里有三个文件:

  • prepare.py:数据准备、常量定义、评估工具。这个文件 agent 不能碰
  • train.py:GPT 模型、optimizer、训练 loop。这是 agent 唯一可以修改的文件
  • program.md:人写给 agent 的目标和策略,自然语言。

这个设计很关键。把可修改的范围限死在一个文件里,让 agent 的操作边界非常清晰,失控的可能性大幅降低。

2. 每轮实验固定 5 分钟

每一次改动之后,训练跑 5 分钟,不管你用什么 GPU。

这个约束看起来随意,其实解决了一个很实际的问题:不同硬件的训练速度差很多,如果按 epoch 来卡预算,H100 和 RTX 4070 就没法用同一套流程。用时间做预算,结果就是可比较的。

一小时能跑约 12 次实验。一晚上,大概 100 轮。

3. 用一个跟架构无关的指标来评估

评估用的是 val_bpb(validation bits per byte)——简单说就是模型预测文本有多准,越低说明模型越好。

这个指标和模型架构无关,不管 agent 怎么改模型结构,评估标准始终一致。所以不同轮之间的结果可以直接比。


program.md:人写,AI 读

先说清楚一个容易误解的地方:program.md 是你写的,不是 AI 自动生成或自动修改的。

AI agent 每次跑循环时会读这个文件,按里面的指令去改 train.py。你可以在两轮实验之间手动更新它,调整方向——但 agent 不会自己去改它。

最小的上手流程是这样的:

第一步,写一个 program.md,内容很简单:

We are trying to improve the language model's validation loss.
Focus on: learning rate schedule and optimizer settings.
Do not change the dataset loading code.
Evaluation metric: val_bpb — lower is better.

第二步,用一句话启动 agent(用 Claude Code、Codex 或 Gemini CLI 都行):

Hi, have a look at program.md and let's kick off a new experiment!

然后 agent 就开始循环:读 program.md → 改 train.py → 跑 5 分钟 → 看分数 → 保留或还原 → 继续。

你不需要盯着它。

第三步,如果你觉得方向不对,手动改一下 program.md,下次循环 agent 就会按新指令走:

Previous experiments improved the optimizer. Now focus on:
attention head count and hidden layer dimensions.
Keep the Muon optimizer settings from last run.

就这样。program.md 是你和 agent 之间唯一的沟通渠道,你调整指令,它调整实验方向。整个过程里,改训练代码的是 agent,写研究策略的是你。


循环是怎么转的

读 program.md → 改 train.py → 跑 5 分钟训练 → 看 val_bpb
  ↓ 有改进              ↓ 没改进
  保留改动,进下一轮     还原改动,进下一轮

这个结构很像进化算法里的 keep-or-revert,又有点像 Git 里的 commit/revert。

每一轮都是一次微小的 diff。agent 不需要从全局视角做长远规划,只需要在每一步问一个问题:这次改动让结果变好了吗?


实际跑出来的结果

社区用户在不同硬件上跑了一段时间,留下了一些记录:

  • M4 Mac Mini(16GB 内存):一晚上跑出 7.9% 的 val_bpb 改进
  • RTX 4070 笔记本(WSL2):一晚上完成了 282 次实验
  • nanoGPT 上:overnight 找到了 20 个有效改进
  • GPU kernel 优化:从 18 TFLOPS 提升到 187 TFLOPS

一个更完整的案例:Shopify Liquid 引擎优化

有人把这个框架移植到了 Shopify 的模板引擎 Liquid 上。目标很具体:让解析和渲染速度更快,用毫秒数作为评估指标。

他们写了一个 program.md,大意是:探索解析器的缓存策略和渲染路径,目标是降低 benchmark 里的总耗时,不能改接口签名。

然后让 agent 跑了一晚上。

agent 要做的事情就是逐一尝试去推导最优解:改一处缓存逻辑,跑 benchmark,慢了就把文件还原到改动前的状态,快了就留着。下一轮接着改别的。

最终结果:解析 + 渲染速度提升了 53%。

没有人通宵工作,也没有人盯着每一次改动。agent 在循环里跑,人第二天来看结果。

这个案例有意思的地方在于:Liquid 和机器学习没什么关系。只要你有一个可运行的 benchmark,能输出一个数字,这个思路就能套进去。


它和"AI 帮你搜资料"类工具的区别

目前市场上最多的深度研究工具,无论是 Perplexity Deep Research、OpenAI Deep Research,还是 Gemini,本质上都是在做同一件事:搜索 + 综合 + 生成报告。

它们能把已有的知识组织得更好,但产出的是整理,不是新发现。

autoresearch 做的是另一件事:通过实际运行实验,找到原来不知道的结论。

这个区别放在学术界的语境里很清楚:前者是 literature review,后者更接近 experimental research。当然,两者面向的用户群体差别也很大——搜索综合类工具人人可用,autoresearch 的当前形态还是以 ML 研究者为主。


几个真实的限制

autoresearch 目前还是 ML 研究者专用工具:

  • 需要 NVIDIA GPU,官方测试在 H100,消费级 GPU 靠社区 fork 支持
  • 只能优化可量化的目标,如果你的"好坏"没法用一个数值衡量,就没法跑循环
  • setup 不算简单:Python 3.10+、uv 包管理、GPU 驱动全部需要自己配
  • 没有分布式支持,单卡运行
  • 在权限受限的云环境(如 RunPod root 模式)里可能遇到 --dangerously-skip-permissions 的问题

普通开发者,或者不跑 ML 训练的,现在还用不到其实。

但 keep-or-revert 这个思路本身是通用的。社区已经把它用到了 GPU kernel 优化、编译器调优、交易策略迭代,甚至体育数据建模上。框架不一定会保持现在这个形态,但这个核心循环大概率会留下来。


如果你想跑起来

如果你有 NVIDIA GPU,先把环境跑起来:

git clone https://github.com/karpathy/autoresearch
cd autoresearch
uv sync
uv run prepare.py  # 下载数据、做预处理

然后按"program.md:人写,AI 读"一节的格式写好你的目标,再启动一个 AI coding agent(Claude Code、Codex 或 Gemini CLI),发一句:

Hi, have a look at program.md and let's kick off a new experiment!

agent 会自己修改 train.py、调用 uv run train.py 跑训练、评估结果,循环往复。

官方 README 有详细说明,社区也有 Colab 版本可以跑。


延伸:AutoResearchClaw

如果说 Karpathy 的框架是"实验加速引擎",AutoResearchClaw(aiming-lab,10,400 stars)做的是另一件事:从一个研究 topic 出发,走完文献搜索、假设生成、实验、论文撰写的全流程,最后输出一篇 LaTeX 排版的学术论文。

它会从 arXiv、Semantic Scholar、OpenAlex 拉真实文献,有四层 citation 校验,最后生成 NeurIPS/ICML 模板的 PDF。走一次完整流程要几个小时,论文质量有上限,但对于快速探索研究方向来说确实省事。


参考链接