AI 自主科研系统 · Andrej Karpathy

autoresearch

给 AI 智能体一个 LLM 训练环境,让它彻夜自主做实验。 每 5 分钟一轮,改代码→训练→验证→保留/丢弃, 你睡醒时拿到 100 次实验报告。

65.3K GitHub Stars
9.3K Forks
15KB 核心代码
MIT License
☆ 查看源码 → 快速开始
了解更多

当 AI 开始自己做研究

"曾经,前沿 AI 研究是由碳基生命在吃饭、睡觉、社交的间隙完成的……那个时代已经一去不复返了。研究现在完全是 AI 智能体集群的领域……这个 repo 记录了这一切的起源。" —— @karpathy,2026 年 3 月

autoresearch 是 Andrej Karpathy 在 2026 年 3 月发布的开源项目。 核心思路极其简单却又极其震撼:把一个真实的 LLM 训练脚本交给 AI 智能体, 让它完全自主地做实验性研究。

智能体的工作流程就像一个不需要休息的研究员:修改训练代码→运行 5 分钟训练→ 查看验证指标→决定保留或丢弃→重复循环,无休止地迭代, 直到你手动叫停为止。

这不是玩具项目。代码直接基于 Karpathy 的生产级 nanochat 简化而来, 使用的是真实 GPT 模型、Muon + AdamW 优化器、Flash Attention 3 内核。

四步形成完整闭环

从代码修改到结果决策,整个流程完全自动化,无需人工干预。

🧠
智能体读取指令
读取 program.md,理解实验目标和约束条件
✏️
修改 train.py
调整模型架构、超参数、优化器等,自由发挥
⏱️
5 分钟训练
固定时间预算,与平台无关,结果可直接对比
📊
评估并决策
val_bpb 降低则保留,否则 git reset 丢弃,循环继续

三个文件,精简有力

刻意保持极简设计。整个项目只有三个核心文件,每个角色清晰明确。

🔒
prepare.py
只读 · 不可修改

固定常量、一次性数据准备(下载训练数据、训练 BPE 分词器), 以及运行时工具(数据加载器、评估函数)。 包含核心评估指标 evaluate_bpb,这是不可更改的基准。

train.py
智能体修改

完整的 GPT 模型定义、Muon + AdamW 优化器实现、训练循环。 这是智能体唯一可以编辑的文件。 模型架构、超参数、批大小、优化策略——一切皆可改。

📋
program.md
人类编写

提供给智能体的基础指令文件,类似一个超轻量的"技能脚本"。 你通过修改这个文件来调整智能体的研究方向和行为策略—— 这就是你的"研究组织代码"。

永不停歇的研究员

🔄 LOOP FOREVER
1
查看当前 git 分支和提交状态
2
修改 train.py,注入实验想法
3
git commit 记录本次改动
4
运行 uv run train.py > run.log 2>&1
5
grep "^val_bpb:" run.log 读取结果
6
崩溃则查 stack trace,尝试修复
7
记录结果到 results.tsv
8
val_bpb 降低 → 保留;否则 git reset

核心评估指标:val_bpb

val_bpb(validation bits per byte)是唯一的优化目标, 越低越好。采用字节为单位而非 token,使得架构变化(如词表大小改变) 下的实验结果依然可以公平比较。

固定 5 分钟时间预算的设计非常精妙:无论你改了什么(模型大小、批大小、架构), 训练时间始终相同,这让所有实验在同等条件下直接可比。

基线参考值
0.997900
val_bpb · H100 GPU · 5 分钟 · ~50M 参数
每晚可跑实验数
~100 次
12 次/小时 × 8 小时睡眠 ≈ 100 次实验

5 步启动自主实验

需要一张 NVIDIA GPU(H100 测试通过),Python 3.10+,以及 uv 包管理器。

1
安装 uv 包管理器
# 安装 uv(如已安装可跳过)
curl -LsSf https://astral.sh/uv/install.sh | sh
2
克隆项目并安装依赖
git clone https://github.com/karpathy/autoresearch.git
cd autoresearch
uv sync
3
准备数据(一次性,约 2 分钟)
# 下载训练数据,训练 BPE 分词器
uv run prepare.py
4
手动验证一次训练(约 5 分钟)
# 跑一次完整训练,确认环境正常
uv run train.py
5
启动 AI 智能体,开始自主研究
# 在项目目录启动 Claude/Codex(关闭所有权限限制),然后发送:
Hi, have a look at program.md and let's kick off a new experiment!
Let's do the setup first.

results.tsv 示例输出

每次实验结果自动记录到 TSV 文件,一目了然地展示研究进展。

Commit val_bpb Memory (GB) Status 描述
a1b2c3d 0.997900 44.0 keep baseline
b2c3d4e 0.993200 44.2 keep increase LR to 0.04
c3d4e5f 1.005000 44.0 discard switch to GeLU activation
d4e5f6g 0.000000 0.0 crash double model width (OOM)
e5f6g7h 0.989100 45.1 keep adjust window pattern to SSLL

三个核心设计原则

📁
单文件修改
智能体只能编辑 train.py,让实验范围可控,差异可审查。 每次 git diff 都能清晰展示智能体具体做了什么改动。
固定时间预算
每次训练严格 5 分钟(壁钟时间,不含启动/编译), 与平台无关,让不同架构的实验结果可以直接公平比较。
🎯
自包含简洁
无外部依赖(除 PyTorch 和少量小包),无分布式训练, 无复杂配置。一张 GPU,一个文件,一个指标。极致纯粹。

环境要求与社区 Fork

🖥️ 官方支持配置

  • NVIDIA GPU(H100 测试通过)
  • Python 3.10+
  • uv 包管理器
  • CUDA 12.8(torch 2.9.1)
  • Linux / WSL

📦 核心依赖

  • torch 2.9.1(CUDA 12.8)
  • kernels(Flash Attention 3)
  • tiktoken + rustbpe(分词器)
  • numpy / pandas / pyarrow
  • matplotlib(可视化进度)