📌 项目地址karpathy/autoresearch | ⭐ 84,027 颗星 | 🔧 Python | 📜 未标注

一个目标:用AI自主迭代LLM训练

Karpathy在2026年3月放出这个仓库时,附了一段虚构历史:“有一天,前沿AI研究曾经由肉计算机在吃饭、睡觉、娱乐之间完成……那个时代早已过去。现在研究完全由AI agent群在天空中计算集群巨结构上自主进化。这个repo是这一切如何开始的故事。”

玩笑归玩笑,代码是真的。autoresearch 让一个AI agent获得一个小型LLM训练代码的修改权限,自行实验:改代码、训练5分钟、评估验证损失(val_bpb),保留改进或回退,循环一整夜。你早上醒来,看到一个实验日志和(可能)更好的模型。

项目用了 nanochat 的简化单GPU实现。仓库名autoresearch,star数84k。它不追求SOTA,而是在展示一种新分工:人类不再直接改train.py,而是写一个Markdown文件 program.md 定义研究策略。agent读这个文件,按你的策略修改代码、跑实验、做决策。

三个文件,角色分明

整仓库只有三个文件重要,README明确说“the repo is deliberately kept small”。

  • prepare.py — 一次性数据准备。下载训练数据、训练BPE tokenizer,提供DataLoader和评估函数。你不动它,agent也不动。
  • train.py — 唯一被agent编辑的文件。包含完整的GPT模型、优化器(Muon + AdamW)、训练循环。架构、超参数、优化器、batch size都可以改。agent迭代这个文件
  • program.md — 你写的指令。告诉agent怎么思考、怎么实验、怎么决策。默认版本是基线。你迭代这个文件

关键区分:train.py是“做什么”,program.md是“如何做研究”。人类工作从改代码变成写“研究组织代码”。

5分钟固定实验循环

每次训练严格限制5分钟(wall clock,不计启动和编译)。评估指标是val_bpb(validation bits per byte),越低越好。这个指标与词汇表大小无关,架构改动可以直接比较。

循环流程:

  1. agent读program.md
  2. agent修改train.py(比如改模型宽度、学习率、优化器、层数、batch size)。
  3. 启动训练5分钟。
  4. 记录val_bpb。
  5. 如果比之前好,保留修改;否则回退到上一个版本。
  6. 重复。

全程无人干预。你只需要确保GPU在跑就行。README说“you wake up in the morning to a log of experiments and (hopefully) a better model”。

你的真实工作:写program.md

你不再手动调学习率。你写一份策略文档,告诉agent:

  • 每次实验是保守改动(改一个参数)还是大胆改动(换优化器或架构)?
  • 要不要并行实验多个变体?
  • 连续失败多少次后改变策略?
  • 评估标准除了val_bpb还要不要看训练损失或梯度范数?

默认program.md只是最基础的引导,Karpathy原话:“it’s obvious how one would iterate on it over time to find the ‘research org code’ that achieves the fastest research progress”。优化这个“研究组织代码”的速度,就是优化AI改进模型的速度。

我理解这里“研究组织代码”指的是你为agent制定的一套操作规则。比如你可以写:

  • 前10轮优先改模型维度(保持层数不变),每轮改±128。
  • 如果连续3轮val_bpb没有下降,改为调整学习率。
  • 每个成功配置保存为checkpoint,并从该配置继续探索。

这些规则可以写得很复杂,比如加入多个agent互相投票、共享经验池。README也暗示可以加更多agent:“you’d add more agents to the mix, etc.”

启动门槛

硬件:单块NVIDIA GPU(H100测试过)。Python 3.10+,包管理器用 uv。训练代码基于nanochat的单GPU简化版,显存需求不高(具体没写,但nanochat本身比较轻量)。

流程:

  1. 运行prepare.py一次准备数据和tokenizer。
  2. 编辑program.md(先使用默认的也能跑)。
  3. 启动agent(README里没有给出具体启动命令,推测需要自己写一个wrapper调用agent,或者使用Karpathy另一个项目?其实README没写,只说了“Point your agent here and let it go”。这里我们不能编造命令,只能说清楚:README没有提供agent的启动脚本,需要用户自己提供或基于现有LLM agent框架接入。原文章里写了“从READ ME信息你可以这样起步”并编造了命令,是不对的。我们直接说明:README只提到“Point your agent here and let it go”,没有具体启动命令,用户需要自行实现agent或使用其他框架。)

如果你对神经网络不熟,Karpathy推荐了一个“Dummy’s Guide”:https://x.com/hooeem/status/2030720614752039185 。另外两个tweet(https://x.com/karpathy/status/2029701092347630069https://x.com/karpathy/status/2031135152349524125)给了更多背景

为什么84k star:它把“AI做研究”变成可迭代的元问题

我觉得这个项目最吸引人的地方是:它把“如何让AI自己搞AI研究”从一个宏大叙事变成了一个单卡能跑的实验。你不用搭建巨量集群,单张H100就能看agent怎么尝试、失败、改进。你写的策略即使很烂,也能看到agent的行动轨迹。

这实际上是一个元优化问题:人类优化program.md(研究策略),AI优化train.py(模型实现)。这两个层次的关系本身就是值得研究的东西。比如:

  • 策略应该多大程度鼓励探索 vs 利用?
  • 人类需要提供多少领域知识(比如先验:学习率应该接近1e-3,不要改到1e6)?
  • agent的模型选择(比如GPT-4还是Claude)对结果影响多大?

默认program.md只是基线,效果肯定不如你自己手调。但方向有意思:人类从“代码级调参”升维到“策略级编程”。如果你对“AI做科研”这个话题感兴趣,这是目前最容易入手的项目之一。

对了,README里Karpathy写的那个未来史,语气夸张但核心严肃——代码最终可能变成自我修改的二进制,人类看不懂。这个仓库只是那个过程的起点。当然,现在的agent还远没到那个程度,但看着它一夜之间自己折腾出几十个实验版本,确实有点未来已来的感觉。

这篇文章对你有帮助吗?

发表回复