autoresearch

曾经有那么一个时代,前沿 AI 研究是由"肉体计算机"在吃饭、睡觉、享受其他乐趣的间隙完成的,偶尔通过"组会"这一仪式,用声波互联的方式同步一下进展。那个时代早已一去不复返。研究现在完全是自主 AI Agent 群体的领地,它们在天空中的计算集群巨构上川流不息地运行。Agent 们声称我们现在已处于代码库的第 10,205 代,不过即便如此也没人能验证这是否属实——因为"代码"已经成为一个自我修改的二进制体,早已超出人类的理解范围。这个 repo 记录的,正是这一切的起点。——@karpathy,2026 年 3 月

这个想法是:给一个 AI Agent 配备一套小而真实的 LLM 训练环境,让它在夜间自主地进行实验。它修改代码、训练 5 分钟、检查结果是否有所改善,然后决定保留或丢弃,如此循环往复。第二天早上,你醒来就能看到一份实验日志,以及(但愿如此)一个更好的模型。这里的训练代码是 nanochat 的简化单 GPU 实现。其核心理念在于:你不会像一名普通研究员那样去直接修改任何 Python 文件,而是去编写 program.md Markdown 文件——它们为 AI Agent 提供上下文,并帮你搭建起自主研究组织。本 repo 中默认的 program.md 被有意保持为最简基线,不过如何在此之上迭代以找到能实现最快研究进展的"研究组织代码"、如何向其中加入更多 Agent,思路是显而易见的。关于这个项目的更多背景,可以参阅这条 推文这条推文

工作原理

本 repo 被刻意保持精简,真正重要的文件只有三个:

  • prepare.py — 固定常量、一次性数据准备(下载训练数据、训练 BPE tokenizer),以及运行时工具(dataloader、评估)。不会被修改。

  • train.py — Agent 编辑的唯一文件。包含完整的 GPT 模型、优化器(Muon + AdamW)以及训练循环。所有内容均可改动:架构、超参数、优化器、batch size 等。此文件由 Agent 负责编辑和迭代

  • program.md — 单个 Agent 的基线指令。将你的 Agent 指向这里,然后放手让它运行。此文件由人类负责编辑和迭代

在设计上,每次训练运行固定消耗 5 分钟的时间预算(墙钟时间,不含启动/编译时间),与你所用的具体计算平台无关。评估指标为 val_bpb(验证集 bits per byte)——越低越好,且与词表大小无关,因此对架构变更能进行公平比较。

如果你是神经网络新手,这份 "Dummy's Guide" 提供了大量背景知识,值得一读。

快速开始

环境要求: 单张 NVIDIA GPU(在 H100 上测试通过)、Python 3.10+、uv

# 1. Install uv project manager (if you don't already have it) curl -LsSf https://astral.sh/uv/install.sh | sh # 2. Install dependencies uv sync # 3. Download data and train tokenizer (one-time, ~2 min) uv run prepare.py # 4. Manually run a single training experiment (~5 min) uv run train.py

如果以上命令均正常运行,说明你的环境配置没有问题,可以进入自主研究模式了。

运行 Agent

只需在本 repo 中启动你的 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 — constants, data prep + runtime utilities (do not modify) train.py — model, optimizer, training loop (agent modifies this) program.md — agent instructions pyproject.toml — dependencies

设计决策

  • 单文件修改。 Agent 只操作 train.py。这使得修改范围可控,diff 也便于审查。

  • 固定时间预算。 无论使用何种平台,训练始终精确运行 5 分钟。这意味着每小时大约可以进行 12 次实验,你睡觉期间大约可以完成 100 次实验。这一设计决策有两个优点:其一,无论 Agent 做出什么改动(模型大小、batch size、架构等),实验结果均可直接横向比较;其二,autoresearch 能够在该时间预算内,为你的平台找到最优模型。其缺点是,你的运行结果将无法与使用其他计算平台的人进行比较。

  • 自包含。 除 PyTorch 和少数小型包之外,无任何外部依赖。无分布式训练,无复杂配置。一块 GPU、一个文件、一个指标。

平台支持

目前此代码要求你拥有单张 NVIDIA GPU。原则上支持 CPU、MPS 及其他平台是完全可行的,但这样做也会使代码变得臃肿。我目前还不能百分之百确定自己愿意亲自来做这件事。大家可以参考(或让自己的 Agent 参考)完整的父级 nanochat 仓库,那里有更广泛的平台支持,并展示了各种解决方案(例如 Flash Attention 3 内核的回退实现、通用设备支持、自动检测等)。欢迎为其他平台创建 fork 或发起讨论,我很乐意在 README 的"Notable Forks"章节中添加相关链接。

鉴于似乎有很多人希望在比 H100 小得多的计算平台上尝试 autoresearch,这里多说几句。如果你打算在较小的计算机(如 MacBook 等)上运行 autoresearch,建议参考以下 fork。此外,以下是一些针对小型模型调整默认参数的建议,供有志于创建 fork 的人参考:

  • 为了获得勉强可用的结果,建议使用熵值更低的数据集,例如 TinyStories 数据集。这些是 GPT-4 生成的短篇故事。由于数据在范围上窄得多,使用小得多的模型也能看到合理的结果(训练后对其进行采样时)。

  • 可以尝试降低 vocab_size,例如从 8192 降至 4096、2048、1024,甚至直接使用 256 个可能字节(utf-8 编码后)的字节级 tokenizer。

  • prepare.py 中,你需要大幅降低 MAX_SEQ_LEN,根据计算机性能甚至可以降至 256 等。在降低 MAX_SEQ_LEN 的同时,可以尝试适当增加 DEVICE_BATCH_SIZE 中的 train.py 来进行补偿。每次前向/反向传播的 token 数量是这两者的乘积。

  • 同样在 prepare.py 中,你需要降低 EVAL_TOKENS,以便在更少的数据上评估验证损失。

  • train.py 中,控制模型复杂度的核心旋钮是 DEPTH(默认为 8)。许多变量都是其函数,因此可以将其降低,例如降至 4。

  • 你很可能需要将 WINDOW_PATTERN 仅设为 "L",因为 "SSSL" 使用的交替带状注意力模式可能对你来说效率极低。不妨试试。

  • 你需要大幅降低 TOTAL_BATCH_SIZE,但请保持为 2 的幂次,例如降至 2**14(约 16K)甚至更低,具体难以确定。

我认为这些是值得调整的合理超参数。可以向你喜欢的 coding Agent 寻求帮助,并将本指南连同完整源代码一并复制粘贴给它。

Notable Forks

  • miolini/autoresearch-macos(MacOS)

  • trevin-creator/autoresearch-mlx(MacOS)

  • jsegov/autoresearch-win-rtx(Windows)

  • andyluo7/autoresearch(AMD)

许可证

MIT

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐