什么是 AutoResearch?
AutoResearch 是由著名 AI 研究员 Andrej Karpathy 开发的自主 AI 研究代理项目。这个项目的核心理念是:让 AI 代理在你睡觉时自动进行 LLM 训练实验。
想象一下,你给 AI 代理一个小型但真实的 LLM 训练环境,然后让它自主地过夜实验。它会修改代码、训练 5 分钟、检查结果是否改进、保留或丢弃更改,然后重复这个过程。当你早上醒来时,你会看到一系列实验日志,以及(希望是)一个更好的模型。
Karpathy 的愿景:"有一天,前沿 AI 研究曾经是由'肉计算机'(人类)在吃饭、睡觉、其他娱乐之间完成的,并通过'小组会议'中的声波互联进行同步。那个时代早已过去。研究现在完全由自主的 AI 代理群在天空中的计算集群超级结构中运行。"
项目亮点:截至目前,AutoResearch 在 GitHub 上已获得超过 80,000 颗星标,Fork 数超过 11,000,是 AI 研究自动化领域最受欢迎的项目之一。
工作原理
项目刻意保持精简,只包含三个核心文件:
| 文件 | 用途 | 谁修改 |
|---|---|---|
prepare.py |
|
不修改 |
train.py |
|
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 的调优建议:
- 使用低熵数据集:使用 TinyStories 数据集,这是 GPT-4 生成的短故事。因为数据范围更窄,你会看到更小的模型也能产生合理结果。
- 减小词汇表大小:从 8192 降到 4096、2048、1024,甚至使用 256 字节级分词器。
-
降低序列长度:在
prepare.py中大幅降低MAX_SEQ_LEN(甚至降到 256)。随着MAX_SEQ_LEN降低,可以尝试稍微增加train.py中的DEVICE_BATCH_SIZE来补偿。每次前向/后向传播的 token 数是这两个值的乘积。 -
减少评估 token 数:在
prepare.py中降低EVAL_TOKENS,使验证损失在更少的数据上评估。 -
降低模型深度:在
train.py中,控制模型复杂度的主要旋钮是DEPTH(默认为 8)。将其降到 4。 -
简化注意力模式:使用
WINDOW_PATTERN为 "L",因为 "SSSL" 使用的交替带状注意力模式对你来说可能非常低效。 -
降低总批量大小:大幅降低
TOTAL_BATCH_SIZE,但保持为 2 的幂,例如降到2**14(约 16K)左右。
这些是合理的超参数调整建议。让 AI 代理帮助你,并将这个指南和完整源代码复制粘贴给它。
Notable Forks
社区已经为不同平台创建了多个 forks:
- miolini/autoresearch-macos(macOS)
- trevin-creator/autoresearch-mlx(macOS MLX)
- jsegov/autoresearch-win-rtx(Windows)
- andyluo7/autoresearch(AMD)
相关资源
- GitHub 仓库:https://github.com/karpathy/autoresearch
- Karpathy 的推文:
- 父项目:nanochat(完整实现)
- 新手指南:神经网络入门指南
总结
AutoResearch 代表了 AI 研究自动化的一个范式转变。它不再是让人类研究员手动调整超参数和架构,而是让 AI 代理自主地进行实验、学习和改进。
这个项目的核心洞察是:通过编程 program.md 而不是 Python 文件,你可以建立一个自主的研究组织。这种"元编程"的方法可能预示着未来 AI 研究的方向。
如果你有 NVIDIA GPU 并对 AI 研究自动化感兴趣,AutoResearch 绝对值得一试。即使你没有高端 GPU,社区的 forks 也提供了在更小平台上运行的可能性。
提示:这个项目完美体现了"AI 代理 + 人类指导"的协作模式。如果你对 AI 代理和自动化研究感兴趣,可以查看我们博客中的其他相关文章。