karpathy/autoresearch

GitHub: karpathy/autoresearch

让AI智能体在单GPU上自动进行LLM训练实验的轻量级框架,通过迭代修改代码实现无人值守的模型优化。

Stars: 4532 | Forks: 564

# autoresearch ![teaser](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/4493ab14ec173453.png) *有一天,前沿 AI 研究曾由肉身计算机完成,它们在进食、睡眠、寻找其他乐趣之余,偶尔通过“组会”仪式中的声波互连进行同步。那个时代早已过去。现在,研究完全是运行在天空中计算集群巨型结构上的自主 AI 智能体群落的领域。智能体声称我们的代码库现在已经是第 10,205 代了,反正也没人能分辨这是对是错,因为“代码”现在是一个自我修改的二进制文件,其复杂程度已超出人类的理解范畴。这个仓库讲述了这一切是如何开始的故事。-@karpathy,2026 年 3 月*。 核心想法:给 AI 智能体一个小型但真实的 LLM 训练设置,让它 overnight 自主实验。它修改代码,训练 5 分钟,检查结果是否改进,保留或丢弃,然后重复。早上醒来时,你会看到一份实验日志和( hopefully )一个更好的模型。这里的训练代码是 [nanochat](https://github.com/karpathy/nanochat) 的简化单 GPU 实现。核心思想是你不再像平时作为研究员那样去触碰任何 Python 文件。相反,你通过编写 `program.md` Markdown 文件来为 AI 智能体提供上下文,并搭建你的自主研究组织。本仓库中默认的 `program.md` 故意保持为极简基线,尽管显然可以看出人们会如何随着时间迭代它,以找到能实现最快研究进度的“研究组织代码”,以及如何向其中添加更多智能体等。关于这个项目的更多背景信息在这个 [tweet](https://x.com/karpathy/status/2029701092347630069) 中。 ## 工作原理 该仓库故意保持精简,实际上只有三个重要文件: - **`prepare.py`** — 固定常量,一次性数据准备(下载训练数据,训练 BPE tokenizer),以及运行时工具(dataloader, 评估)。不被修改。 - **`train.py`** — 智能体编辑的唯一文件。包含完整的 GPT 模型、优化器 (Muon + AdamW) 和训练循环。一切皆可调整:架构、超参数、优化器、batch size 等。**该文件由智能体编辑和迭代**。 - **`program.md`** — 单个智能体的基线指令。将你的智能体指向这里,然后让它运行。**该文件由人类编辑和迭代**。 按照设计,训练运行具有**固定的 5 分钟时间预算**(墙上时钟,不包括启动/编译),无论你的计算细节如何。评估指标是 **val_bpb**(validation bits per byte)——越低越好,并且独立于词表大小,因此可以公平地比较架构变化。 ## 快速开始 **要求:** 单个 NVIDIA GPU(在 H100 上测试),Python 3.10+,[uv](https://docs.astral.sh/uv/)。 ``` # 1. 安装 uv 项目管理器(如果尚未安装) curl -LsSf https://astral.sh/uv/install.sh | sh # 2. 安装依赖项 uv sync # 3. 下载数据并训练 tokenizer(一次性,约 2 分钟) uv run prepare.py # 4. 手动运行单个训练实验(约 5 分钟) uv run train.py ``` 如果以上命令都能正常运行,说明你的设置已经就绪,可以进入自主研究模式了。 **平台支持**。此代码目前要求你拥有单个 NVIDIA GPU。原则上,支持 CPU、MPS 和其他平台是完全可能的,但这也会使代码变得臃肿。我不确定我现在是否想亲自承担这项工作。这段代码只是一个演示,我不知道未来我会提供多少支持。大家可以参考(或者让他们的智能体参考)具有更广泛平台支持的完整/父级 nanochat 仓库,那里展示了各种解决方案(例如 Flash Attention 3 kernels 后备实现、通用设备支持、自动检测等),随时可以为其他平台创建 forks 或讨论,我很乐意在这里的 README 中某个新的 notable forks 章节链接到它们。 ## 运行智能体 只需在这个仓库中启动你的 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 ``` ## 设计选择 - **单文件修改。** 智能体只触碰 `train.py`。这保持了范围可控且 diffs 易于审查。 - **固定时间预算。** 无论你的具体平台如何,训练始终精确运行 5 分钟。这意味着你可以预期大约 12 次实验/小时,以及在你睡觉时进行大约 100 次实验。这个设计决定有两个好处。首先,无论智能体更改什么(模型大小、batch size、架构等),实验都可直接比较。其次,这意味着 autoresearch 将在该时间预算内为你的平台找到最优模型。缺点是你的运行(和结果)变得无法与其他在其他计算平台上运行的人进行比较。 - **自包含。** 除了 PyTorch 和几个小包之外,没有外部依赖。没有分布式训练,没有复杂的配置。一个 GPU,一个文件,一个指标。 ## 值得关注的分支 - [miolini/autoresearch-macos](https://github.com/miolini/autoresearch-macos) ## 许可证 MIT
标签:AutoML, HTTP工具, Karpathy, LLM, Nanochat, Python, Unmanaged PE, 人工智能, 元编程, 凭据扫描, 单GPU训练, 大语言模型训练, 实验自动化, 无后门, 无监督学习, 用户模式Hook绕过, 科学研究自动化, 算法优化, 网络安全审计, 自主实验, 自修改代码, 自动机器学习, 自动调参, 迭代优化, 逆向工具