AutoResearch:Karpathy 的自主 AI 研究代理

AutoResearch 是 Andrej Karpathy 开发的自主 AI 研究代理,能够在单 GPU 上自动进行 LLM 训练实验。本文介绍其核心理念、工作原理和快速开始指南。

什么是 AutoResearch?

AutoResearch 是由著名 AI 研究员 Andrej Karpathy 开发的自主 AI 研究代理项目。这个项目的核心理念是:让 AI 代理在你睡觉时自动进行 LLM 训练实验

想象一下,你给 AI 代理一个小型但真实的 LLM 训练环境,然后让它自主地过夜实验。它会修改代码、训练 5 分钟、检查结果是否改进、保留或丢弃更改,然后重复这个过程。当你早上醒来时,你会看到一系列实验日志,以及(希望是)一个更好的模型。

Karpathy 的愿景:"有一天,前沿 AI 研究曾经是由'肉计算机'(人类)在吃饭、睡觉、其他娱乐之间完成的,并通过'小组会议'中的声波互联进行同步。那个时代早已过去。研究现在完全由自主的 AI 代理群在天空中的计算集群超级结构中运行。"

项目亮点:截至目前,AutoResearch 在 GitHub 上已获得超过 80,000 颗星标,Fork 数超过 11,000,是 AI 研究自动化领域最受欢迎的项目之一。

工作原理

项目刻意保持精简,只包含三个核心文件:

文件 用途 谁修改
prepare.py
  • 固定常量
  • 一次性数据准备(下载训练数据、训练 BPE 分词器)
  • 运行时工具(数据加载器、评估)
不修改
train.py
  • 完整的 GPT 模型
  • 优化器(Muon + AdamW)
  • 训练循环
AI 代理修改
program.md
  • 代理的基准指令
  • 定义实验策略和目标
人类修改

核心思想是:你不再像传统研究员那样直接修改 Python 文件。相反,你通过编写 program.md Markdown 文件来为 AI 代理提供上下文,建立你的自主研究组织。

默认的 program.md 故意保持为一个简单的基准线,但很明显,你可以随着时间推移迭代它,找到能够实现最快研究进度的"研究组织代码",添加更多代理等。

设计选择

1. 单文件修改

代理只修改 train.py。这保持了范围的可控性,使差异审查变得容易。

2. 固定时间预算

训练始终运行恰好 5 分钟(挂钟时间,不包括启动/编译),无论你的具体计算平台如何。这意味着:

  • 每小时约 12 次实验
  • 睡觉期间约 100 次实验
  • 实验直接可比较(无论代理更改了什么:模型大小、批量大小、架构等)
  • autoresearch 会为你的平台在该时间预算内找到最优模型

注意:缺点是你的运行(和结果)与其他人在不同计算平台上运行的结果不可比较。

3. 自包含

除了 PyTorch 和几个小包外,没有外部依赖。没有分布式训练,没有复杂配置。一个 GPU、一个文件、一个指标

4. 评估指标

使用 val_bpb(验证比特每字节)作为指标——越低越好,且与词汇表大小无关,因此架构变化可以公平比较。

快速开始

系统要求

  • 单个 NVIDIA GPU(在 H100 上测试)
  • Python 3.10+
  • uv(Python 项目管理器)

安装步骤

# 1. 安装 uv 项目管理器(如果还没有安装)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 2. 安装依赖
uv sync

# 3. 下载数据并训练分词器(一次性,约 2 分钟)
uv run prepare.py

# 4. 手动运行单次训练实验(约 5 分钟)
uv run train.py

如果上述命令都正常工作,说明你的设置已经就绪,可以进入自主研究模式了。

运行代理

只需在项目目录中启动 Claude/Codex 或任何你想要的代理(并禁用所有权限),然后输入类似这样的提示:

Hi have a look at program.md and let's kick off a new experiment! let's do the setup first.

program.md 文件本质上是一个超级轻量级的"技能"。

项目结构

prepare.py      — 常量、数据准备 + 运行时工具(不要修改)
train.py        — 模型、优化器、训练循环(代理修改这个)
program.md      — 代理指令
pyproject.toml  — 依赖

平台支持

当前代码需要单个 NVIDIA GPU。原则上支持 CPU、MPS 和其他平台是完全可能的,但这会使代码膨胀。

如果你想在更小的计算平台(如 MacBook)上运行 autoresearch,Karpathy 建议使用下面列出的 forks 之一。

小平台调优指南

如果你想在更小的计算机上运行 autoresearch,以下是 Karpathy 的调优建议:

  1. 使用低熵数据集:使用 TinyStories 数据集,这是 GPT-4 生成的短故事。因为数据范围更窄,你会看到更小的模型也能产生合理结果。
  2. 减小词汇表大小:从 8192 降到 4096、2048、1024,甚至使用 256 字节级分词器。
  3. 降低序列长度:在 prepare.py 中大幅降低 MAX_SEQ_LEN(甚至降到 256)。随着 MAX_SEQ_LEN 降低,可以尝试稍微增加 train.py 中的 DEVICE_BATCH_SIZE 来补偿。每次前向/后向传播的 token 数是这两个值的乘积。
  4. 减少评估 token 数:在 prepare.py 中降低 EVAL_TOKENS,使验证损失在更少的数据上评估。
  5. 降低模型深度:在 train.py 中,控制模型复杂度的主要旋钮是 DEPTH(默认为 8)。将其降到 4。
  6. 简化注意力模式:使用 WINDOW_PATTERN 为 "L",因为 "SSSL" 使用的交替带状注意力模式对你来说可能非常低效。
  7. 降低总批量大小:大幅降低 TOTAL_BATCH_SIZE,但保持为 2 的幂,例如降到 2**14(约 16K)左右。

这些是合理的超参数调整建议。让 AI 代理帮助你,并将这个指南和完整源代码复制粘贴给它。

Notable Forks

社区已经为不同平台创建了多个 forks:

相关资源

总结

AutoResearch 代表了 AI 研究自动化的一个范式转变。它不再是让人类研究员手动调整超参数和架构,而是让 AI 代理自主地进行实验、学习和改进。

这个项目的核心洞察是:通过编程 program.md 而不是 Python 文件,你可以建立一个自主的研究组织。这种"元编程"的方法可能预示着未来 AI 研究的方向。

如果你有 NVIDIA GPU 并对 AI 研究自动化感兴趣,AutoResearch 绝对值得一试。即使你没有高端 GPU,社区的 forks 也提供了在更小平台上运行的可能性。

提示:这个项目完美体现了"AI 代理 + 人类指导"的协作模式。如果你对 AI 代理和自动化研究感兴趣,可以查看我们博客中的其他相关文章。