Karpathy 的 autoresearch:让 AI Agent 自主跑 LLM 训练实验

> 来源: https://github.com/karpathy/autoresearch

> 作者: Andrej Karpathy(前 Tesla AI 总监、OpenAI 联合创始人)

> 日期: 2026-03-06

> 许可: MIT

📌 核心理念

> "有一天,前沿 AI 研究曾经由碳基计算机在吃饭、睡觉、找乐子的间隙完成,偶尔通过声波互联在'组会'仪式中同步一下。那个时代早已过去。"

> —— @karpathy, March 2026

autoresearch 的想法极其简洁:给一个 AI Agent 一个小而真实的 LLM 训练环境,让它通宵自主实验。Agent 修改代码、训练 5 分钟、检查是否改进、保留或丢弃、重复。你早上醒来,得到一份实验日志和(希望是)一个更好的模型。

🏗️ 极简架构

整个仓库只有三个关键文件

文件角色谁修改
`prepare.py`数据准备 + 运行时工具(数据加载器、评估)**不动**
`train.py`完整的 GPT 模型 + 优化器 (Muon + AdamW) + 训练循环**Agent 修改**
`program.md`Agent 的指令/技能文件**人类修改**

设计决策

1. 单文件可修改:Agent 只碰 train.py,一切都在里面——架构、超参数、优化器、batch size。范围可控,diff 可审。

2. 固定 5 分钟时间预算:不管改了什么(模型大小、架构等),训练始终跑 5 分钟(wall clock)。好处:

- 实验直接可比较

- 约 12 次实验/小时,睡一觉 ≈ 100 次实验

- 自动找到在你的硬件上该时间预算内的最优模型

3. 单一指标val_bpb(验证集 bits per byte),越低越好,与词表大小无关。

4. 自包含:只需 PyTorch + 单卡 NVIDIA GPU(测试于 H100),无分布式训练、无复杂配置。

🚀 使用方式


# 安装 + 准备数据
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
uv run prepare.py      # 下载数据、训练 BPE tokenizer

# 手动跑一次验证
uv run train.py

# 自主研究模式:启动你的 Claude/Codex
# 提示词:
# "Hi have a look at program.md and let's kick off a new experiment!"

核心范式转变:你不再修改 Python 文件,你在编程 program.md——一个给 AI Agent 的指令文件。

🎬 具体例子:Agent 的一个通宵

假设你睡前启动了 autoresearch,Agent 会这样自主工作:

第 1 轮:Agent 看到 train.py 里 learning rate 是 0.001,想试试 0.0006


# Agent 修改 train.py
- lr = 0.001
+ lr = 0.0006

→ 训练 5 分钟 → val_bpb = 1.42(比之前的 1.45 好了)→ ✅ 保留

第 2 轮:Agent 想把 Transformer 从 6 层加到 8 层


- n_layer = 6
+ n_layer = 8

→ 训练 5 分钟 → val_bpb = 1.48(更差了,层数多了但 5 分钟训不够)→ ❌ 回滚

第 3 轮:Agent 想换个激活函数


- self.act = nn.GELU()
+ self.act = nn.SiLU()

→ 训练 5 分钟 → val_bpb = 1.40 → ✅ 保留

第 4 轮:Agent 甚至可能加一个全新的技术


+ # 加入 RMSNorm 替换 LayerNorm
+ class RMSNorm(nn.Module): ...

→ 训练 5 分钟 → val_bpb = 1.37 → ✅ 保留

你醒来后看到日志:


实验 1:   lr 0.001→0.0006       ✅ 1.45→1.42
实验 2:   6层→8层               ❌ 1.42→1.48 (回滚)
实验 3:   GELU→SiLU             ✅ 1.42→1.40
实验 4:   LayerNorm→RMSNorm     ✅ 1.40→1.37
... (共跑了约 100 次)
实验 100: ...                   ✅ 1.37→1.21

一晚上从 1.45 降到了 1.21,而你什么都没做

关键区别:传统 AutoML 只能调数字(lr=0.001 还是 0.0005);autoresearch 的 Agent 能改任意代码——换架构、加新模块、重写优化器,只要它觉得有道理就试。

💡 分析与评价

为什么这是里程碑级的项目

1. 来自 Karpathy:这不是某个匿名开发者的玩具项目。Karpathy 是 AI 领域最有影响力的教育者和实践者之一,他做的东西往往定义方向。

2. 自动化 ML 研究的起点:传统 ML 研究循环是 假设 → 代码 → 训练 → 分析 → 重复,每个循环需要人类参与。autoresearch 把前四步全交给 Agent,人类只负责设计 program.md

3. "编程的编程":这引入了一个新的抽象层级——你不写代码,你写指导 AI 写代码的指令program.md 本质上是一个"研究组织的源代码"。

4. 时间预算设计精妙:5 分钟固定预算解决了"公平比较不同架构"的经典难题,同时让实验频率极高。

与传统 AutoML 的区别

维度传统 AutoMLautoresearch
搜索空间预定义超参数范围**任意代码修改**
修改粒度超参数调优架构、优化器、训练策略全可改
决策者搜索算法(贝叶斯、进化等)**LLM Agent**(有推理能力)
可解释性有限Agent 可以解释为什么做这个改动
灵活性低(框架内)极高(任何代码变更)

深层含义

Karpathy 开头那段科幻式的引言并非戏言。如果 autoresearch 的模式被规模化:

局限性

评分

维度评分(/10)
创新性10
影响力9.5
实用价值7.5
代码质量9
可扩展性7
**综合****8.6**

📈 延伸应用:量化策略自动回测

autoresearch 的模式可以直接平移到量化交易策略研究:


原版:   Agent 改 train.py    → 训练 5 分钟 → 看 val_bpb    → 保留/丢弃
量化版: Agent 改 strategy.py → 回测 N 天   → 看 Sharpe/回撤 → 保留/丢弃

三文件结构

文件作用谁修改
`data.py`行情数据加载、回测引擎**不动**
`strategy.py`策略逻辑:信号、仓位、止盈止损**Agent 修改**
`program.md`研究指令:目标 Sharpe > 2、最大回撤 < 15%**人类修改**

Agent 的一个通宵(量化版)


实验 1:  MA20→EMA12                    Sharpe 1.8→2.1 ✅
实验 2:  加 RSI 过滤                    Sharpe 2.1→1.6 ❌ 回滚
实验 3:  加波动率自适应仓位             Sharpe 2.1→2.4 ✅
实验 4:  换 VWAP 入场                   Sharpe 2.4→2.7 ✅
...
实验 80: 多因子融合 + 动态止损          Sharpe 2.7→3.2 ✅

⚠️ 关键注意点

1. 过拟合风险极高 — 最大的坑。Agent 可能找到历史 Sharpe 10 的策略,实盘就是垃圾。program.md 必须要求:

- 训练集/验证集/测试集三段分离

- 参数数量限制(防止过拟合)

- 跨市场/跨周期验证

2. 多维评估 — 不能只看一个指标。量化需要同时评估:Sharpe、Calmar、最大回撤、胜率、盈亏比、换手率

3. 回测时间预算 — 参照 autoresearch 的 5 分钟固定预算,比如每次回测跑 2 分钟(覆盖 3 年日线或 3 个月分钟线)

4. 安全边界program.md 里写死:不许改数据加载逻辑、不许 look-ahead bias、不许用未来数据

量化回测是 autoresearch 模式的天然第二应用场景——结构清晰、指标明确、迭代快速。

🔗 与我们的关联

1. 研究方法论program.md 的理念可以推广——不直接写代码,而是写"指导 Agent 写代码的指令"

2. OpenClaw 集成:可以用 OpenClaw 的 Agent + cron 调度实现类似的自主实验循环

3. prompt.md 设计:如何写好一个 program.md(研究指令文件)本身就是一个值得研究的课题

4. Karpathy 风向标:他的项目往往预示着行业方向,autoresearch 暗示"AI 做 AI 研究"即将成为常态

报告由深度研究助手自动生成 | 2026-03-08