安德烈·卡帕西提出的一个自主人工智能研究框架,它允许AI代理(Claude/Codex)在单个GPU上迭代修改、训练和评估一个小型LLM,一夜之间运行约100个实验。
autoresearch — 自动化人工智能代理 LLM 研究框架
概述
autoresearch 是 Andrej Karpathy 开发的一个实验性框架,用于自动化人工智能/机器学习研究迭代过程。核心思想非常简单:给一个人工智能代理(如 Claude 或 Codex)一个真实、可用的 LLM 训练代码库,让它自主地提出更改、运行 5 分钟的训练实验、评估结果并进行迭代——所有这些都无需人工干预。
将其想象成一个最小化、自包含的人工智能研究实验室,可以在单块 GPU 上通宵运行,产生约 100 个实验的日志,并(希望)在早晨得到一个逐步改进的语言模型。
背景与动机
Karpathy 在 README 的开头描绘了一个对未来的讽刺性愿景——一个人工智能研究不再由人类完成,而是由“运行在计算集群巨型结构上的自主人工智能代理群”完成的世界。他写道,这个仓库是“这一切的开端”。
实际动机更为实际:研究迭代缓慢,因为人类需要吃饭、睡觉和参加会议。该项目用一个可以 24/7 运行实验的人工智能代理取代了循环中的人类,从而使机器学习研究的速度大大加快并更加自动化。
工作原理
工作流程是一个紧密的 编辑 → 训练 → 评估 → 保留/丢弃 循环:
- 代理读取
program.md— 一个 Markdown 文件,包含由人类研究员编写和维护的研究说明和上下文。 - 代理修改
train.py— 包含 GPT 模型架构、优化器(Muon + AdamW)和训练循环的单个 Python 文件。代理可以更改任何内容:架构、超参数、优化器设置、批次大小等。 - 训练运行正好 5 分钟(实际时间,不包括启动/编译)。
- 计算指标
val_bpb(验证每字节比特数) — 值越低越好。它与词汇表大小无关,因此可以公平地比较架构更改。 - 代理决定是保留更改还是丢弃它,然后重复。
这大约产生 12 个实验/小时 和约 100 个实验/通宵。
仓库结构
autoresearch/
├── prepare.py # 固定:一次性数据准备、BPE 分词器训练、数据加载器、评估工具
├── train.py # 由代理编辑:GPT 模型、优化器、训练循环
├── program.md # 由人类编辑:代理说明和研究上下文
├── analysis.ipynb # 用于分析实验结果的笔记本
├── pyproject.toml # 依赖项(通过 uv 管理)
└── progress.png # 展示训练进度的预告图
关键文件说明
| 文件 | 所有者 | 用途 |
|---|---|---|
prepare.py |
人类(固定) | 下载数据分片,训练 BPE 分词器,提供数据加载器和评估工具 |
train.py |
人工智能代理 | 完整的 GPT 实现 + 训练循环 — 代理的沙盒 |
program.md |
人类(可迭代) | 研究“技能”/代理的说明 |
设计理念
1. 单个可修改文件
代理只修改 train.py。这使得范围易于管理且 diff 易于审查。它还将代理的操作空间限制在有意义的机器学习更改上,而不是基础设施/工具更改。
2. 固定时间预算
每次实验运行正好 5 分钟的实际训练时间(不包括启动)。这确保了:
- 所有实验都直接可比,无论架构如何变化(模型大小、批次大小等)
- 代理找到针对您特定硬件的最佳模型配置
- 可预测的吞吐量:约 12 个实验/小时
权衡:结果在不同计算平台之间不可移植(H100 的运行结果不能与 A100 的运行结果进行比较)。
3. 自包含
没有分布式训练,没有复杂的配置文件,没有外部研究基础设施。只有 PyTorch + 一些小型软件包,一个 GPU,一个文件,一个指标。这使得项目易于理解、分叉和扩展。
4. program.md 作为人类接口
Karpathy 没有从头开始编写研究代理,而是使用 program.md 作为一种轻量级的“技能”——一个 Markdown 文件,为人工智能代理提供上下文、目标和约束。人类会随着时间的推移迭代 program.md 来改进“研究组织代码”。
技术细节
模型与训练
- 基于 nanochat 的简化单 GPU 版本
- 默认使用 Muon + AdamW 优化器(尽管代理可以更改此设置)
- 在下载的文本数据分片上从头开始训练 GPT 类型模型
- 通过
prepare.py在数据本身上训练 BPE 分词器 - 评估指标:val_bpb(验证每字节比特数)
要求
- GPU: 单块 NVIDIA GPU(已在 H100 上测试)
- Python: 3.10+
- 包管理器: uv
快速入门
# 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 或任何有能力的编码代理(具有文件写入权限),然后提示:
请查看 program.md,让我们开始一个新的实验!我们先进行设置。
代理将读取 program.md,提出对 train.py 的更改,运行训练,评估结果并进行迭代。
重要性与影响
autoresearch 是自动化机器学习研究在微观尺度上的概念验证。虽然存在大型 AutoML 系统,但该项目因以下几点而引人注目:
- 简洁性: 整个有意义的代码库约 3 个文件
- 透明度: 每个代理的决策都会被记录并可供审查
- 可访问性: 可在单个消费级/研究级 GPU 上运行
- 愿景: 它展示了人工智能代理自主进行真正机器学习研究的可行性
它还充当了“通过 Markdown 编程您的人工智能研究组织”的模板——随着人工智能编码代理能力的增强,这种范式可能会成为标准。
值得关注的分叉
- miolini/autoresearch-macos — macOS/MPS 支持
摘要
| 属性 | 值 |
|---|---|
| 类型 | 自主人工智能研究代理框架 |
| 主要用途 | 通宵自动化 LLM 训练实验 |
| 代理接口 | program.md(Markdown 说明) |
| 代理操作空间 | train.py(GPT 模型 + 训练循环) |
| 实验时长 | 5 分钟(固定) |
| 吞吐量 | 约 12 个实验/小时,约 100 个/通宵 |
| 指标 | val_bpb(验证每字节比特数) |
| 硬件 | 单块 NVIDIA GPU(已测试 H100) |
| 许可证 | MIT |