Karpathy的autoresearch实战:让AI Agent替你跑一整夜训练实验
什么是”autoresearch”
Andrej Karpathy 的最新开源项目 autoresearch,是一个小但完整的”自动研究实验室”——它跑在一张 GPU 上,核心驱动是一个 AI 编程 Agent。
这个项目的核心理念很简单:人类写高层指令,AI Agent 负责底层迭代。人类不再需要手动调参、改代码、对比日志……这些事情全部交给 Agent 去做。人类退回到”监督者”的位置,写一个 Markdown 文件描述想做什么,Agent 就自己去改训练脚本、跑实验、决定要不要保留改动。
Karpathy 把它描述为”单 GPU、单文件版本的 nanochat 训练核心”,专门设计给 Agent 无限迭代用的。
不是手动指挥每一个改动,而是人类写一个高层次的”程序”(其实是 Markdown),描述Agent应该做什么,然后Agent反复编辑一个Python训练脚本,跑固定时间的训练,根据验证指标决定是否保留自己的修改。
这和 Karpathy 之前提出的 “agentic engineering”(Agent式工程化) 思路一脉相承——人类越来越多地扮演编排者的角色,而不是亲自写每一行代码。
三个核心文件
这个仓库小得惊人,整个项目只有三个核心文件:
prepare.py
负责下载训练数据和训练 BPE(Byte Pair Encoding)分词器。这个文件被视为”固定环境”,Agent 不允许修改它。它是基础设施,不是实验变量。
train.py
大约是 630 行的训练脚本,定义了一个紧凑的 GPT 风格模型,它的优化器(Karpathy 用的是 Muon + AdamW 的组合)以及完整的训练循环。这是 Agent 唯一可以修改的文件,所有的架构改动和超参数调整都通过编辑这个文件来实现。
program.md
这是人类写的 Markdown 指令文件。Agent 会读取这个文件来了解它应该做什么。它就类似于一个轻量级的 skill——告诉 Agent 怎么行为,如何评估实验结果,什么时候 commit。
这三者的关系非常清晰:
人类 → 写 program.md
↓
Agent → 读 program.md + 编辑 train.py
↓
跑训练(固定5分钟)→ 看验证指标 → commit 或回滚
Karpathy 刻意保持这种极简设计,是为了让人类可以在喝杯咖啡的时间里读完整个训练脚本,理解所有关键环节。这延续了他一贯的风格——从 minGPT 到 nanoGPT,全是小而精的单文件仓库。
实验循环机制
autoresearch 的核心是一个严谨的实验循环,设计上同时保证了公平性和全自动化。
具体的流程是:
- Agent 读取
program.md,打开train.py - 提出某种架构或超参数的修改方案
- 启动一次训练,硬限制 5 分钟北京时间
- 5 分钟结束后,Agent 检查验证指标(
val_bpb——bits-per-byte,衡量语言模型质量的标准指标) - 如果指标变好了,
git commit保留修改 - 如果变差了,回滚到上一个最佳版本,换个方向重新尝试
这就像是在模型配置的山形地貌上攀爬,每一步要么向上走一点,要么退回原地另找出路。而且每一步都有 Git 记录,可审计、可回溯。
Karpathy 特别强调了这个固定时间窗口设计和传统超参数调优的区别。在传统方式里,跑得快的模型可能仅仅因为收敛快就被认为更好——但固定的 5 分钟窗口消除了这个偏差,大家公平竞争,只看最终谁的质量更高。
硬件和软件要求
autoresearch 是为单张 NVIDIA GPU 设计的。不是分布式集群,不是多卡并行,就是一张卡。
Karpathy 自己测试的环境是 H100,但固定的 5 分钟时间窗口本身就是一个”归一化机制”——慢一点的 GPU 只是在 5 分钟里跑更少的步数,对比的是最终验证损失,而不是速度。
软件方面需要:
- Python 3.10+
- PyTorch + CUDA
- 对应的 NVIDIA 驱动
- 一个 AI coding agent(Claude Code / Codex 等)
基础设置流程和标准的深度学习环境配置一模一样:装驱动、对 CUDA 版本、建虚拟环境。
上手设置
设置 autoresearch 的第一步和 Karpathy 的其他项目一样——clone 仓库,创建干净的 Python 环境。
git init
git remote add origin https://github.com/karpathy/autoresearch
git pull origin master
然后安装 Python 工具链。Karpathy 推荐用 uv(astral 家的现代 Python 包管理器):
curl -LsSf https://astral.sh/uv/install.sh | sh
安装项目依赖:
uv sync
下载数据、训练分词器、跑一个基础训练:
uv run prepare.py
uv run train.py
跑通这些命令后,说明环境和依赖都没问题了。
接下来就是启动你喜欢的 AI coding agent(Codex、Claude Code 或者其他),让它读 program.md 然后开始做实验:
# 在你的 terminal 中对 AI agent 说:
Hi, have a look at program.md and let's kick off a new experiment!
Agent 会读取 program.md 这个轻量级 skill,按照里面描述的指令开始做研究。
如何选择和接入 AI Agent
autoresearch 没有捆绑自己的 Agent 实现,它假设你手头有一个能读文件、能编辑 train.py、能在受控环境里跑 shell 命令的 AI 编程助手。
当前主流的选项包括:
| Agent | 特点 |
|---|---|
| Claude Code | Anthropic 出品,代码能力极强,适合复杂编辑任务 |
| OpenAI Codex CLI | OpenAI 的命令行 Agent,擅长 Python 脚本 |
| 其他通用 Agent | 只要能读文件和跑命令,理论上都能接入 |
接入方式就是常规的 Agent 使用方式——在项目目录下启动 Agent,给它一段提示词,让它读 program.md。
让 autoresearch 跑一整夜
当 Agent 接入完毕、program.md 也写得差不多之后,最令人满足的一步来了:让它自己跑着。
以现代的 NVIDIA GPU 为例,每次训练固定 5 分钟,一个 8 小时的通宵运行可以完成 约 96 次完整训练尝试。高端硬件(H100 级别)可能推进到 100 次左右,取决于模型大小和具体实现。
这完全改变了实验的节奏。以前你手动改一个参数跑一次,一天最多能试 5-10 次。现在一觉醒来,Agent 已经爬过了近百个配置点的山形地貌,留下了完整的 Git commit 记录——哪个改动有效、哪个无效、最终最好的是什么,一目了然。
autoresearch 是一个小而雄心勃勃的实验,它探索了当真实的训练循环被交给一个 AI Agent 时会怎样——Agent 带着一个简单的指令:”在固定的时间预算内,让效果更好,并记录一切。”
最让我惊讶的部分
autoresearch 真正让我觉得”这事不简单”的,不是技术本身,而是它重新定义了”做实验”这件事的节奏和分工。
以前你跑深度学习实验,流程大概是这样的:改代码 → 丢去后台跑 → 切出去刷网页 → 半小时后回来看日志 → 哦 loss 没降 → 再改 → 再跑。一个周期的决策间隔是几十分钟到几小时。
但 autoresearch 把这个间隔压缩到了 5 分钟一次,而且不必让你坐在那里等着做决策。Agent 自己在 5 分钟窗口内完成”改代码 → 跑训练 → 看指标 → commit/回滚”的循环,你在旁边写代码、看论文、睡觉都行。
这意味着什么?意味着你能在同一个晚上并行探索的实验数量,直接放大了一个数量级。
如果你是一个做 LLM 方向的研究生,手头有一张 24GB VRAM 的卡(比如 4090 或者 A10G),以前一个晚上你可能跑 2-3 组实验,手动记录对比。现在有了 autoresearch,一晚上 50-80 组实验自动跑完、自动记录、自动保留最佳结果。
这不是”帮你自动化”那么简单——这是改变了你作为研究者能做多少事的量级。
说人话的总结
Karpathy 的 autoresearch 就是告诉了我们一件事:AI Agent 不只是帮你写代码,它还能帮你跑实验、做研究。
三个文件(prepare.py、train.py、program.md)构建了一个极简框架——人类写战略(Markdown 指令),Agent 做战术(改代码 + 跑实验),一张 GPU 当战场。
这个东西的意义不在于它现在能做得多好(训练的还是小模型),而在于它展示了一个未来的工作范式:人类不再和代码搏斗,而是和 Agent 一起探索未知的配置空间。
这个模式很可能不会停留在语言模型预训练这一个方向。检索管线、领域自适应、多模态训练……只要有可量化的指标和一个训练脚本,这个”人类写指令、Agent 做迭代”的模式都能套用。
项目地址:https://github.com/karpathy/autoresearch