Autoresearch 入门指南

我们离AGI还有多远?还没到,但我们正在接近...

这个代码的思路是:与其手动调整模型代码和超参数,不如让人类在一个markdown文件中编写高级指令,然后由AI代理接手底层工作——编辑训练脚本、运行实验、只保留改进成果。

Karpathy将其描述为单GPU、单文件版本的早期nanochat训练核心,设计目的是让代理可以无限迭代,而人类退居监督角色。

我尝试过这个项目,并将一步步指导你如何使用这个仓库,以及这个仓库的用例。

1、"autoresearch"到底是什么

Autoresearch是一个开源的实验框架,它将一个真正的LLM训练循环交给AI代理,让它自主改进设置。

基本上,人类编写指令,LLM在后台自动改进并自主进行研究,可以在单个GPU上运行。

人类不再orchestrating每一个变化,而是用Markdown编写一个高级"程序",描述代理应该尝试什么,代理反复编辑一个Python训练脚本,运行固定时间的训练,然后根据验证指标决定是否保留自己的更改。

Karpathy明确表示这是他早期"代理工程"思想的扩展,在这种思想中,人类越来越多地orchestrating代理,而不是自己编写每一行代码。

Autoresearch不是一个玩具模拟,代理连接到一个真正的GPT风格训练脚本,源自Karpathy的nanochat工作,在真实数据上运行,使用真正的优化器和模型架构。

2、三个核心文件

仓库围绕三个核心文件组织:

prepare.py - train.py - program.md

prepare.py负责下载训练数据并拟合字节对编码(BPE)分词器;这个文件被认为是固定环境的一部分,代理不应该修改它。

train.py是一个大约630行的训练脚本,定义了一个紧凑的GPT风格模型及其优化器(据报道是Muon和AdamW的组合),以及完整的训练循环——这是代理唯一允许编辑的文件,因此所有架构和超参数更改都通过它进行。

program.md是一个由人类编写和迭代的Markdown文件,作为代理的指令表,实际上是一个元程序,告诉代理在编辑train.py和评估实验时如何行为。

设计有意保持最小化,这样人类可以在喝杯咖啡的时间内读完整个训练脚本并理解各个部分,这呼应了Karpathy长期以来对小型自包含仓库(如minGPT和nanoGPT)的偏好。

3、实验循环如何工作

Autoresearch围绕一个严格的实验循环设计,旨在保证公平和完全自动化。

AI代理读取program.md,打开train.py,提出对模型架构或训练超参数的修改建议,然后启动一个训练运行,时钟时间硬性限制在约五分钟。

在每次运行结束时,代理检查验证指标,特别是每字节比特数(val_bpb)这一衡量语言模型质量的指标,并决定是否保留最新更改或丢弃。

Karpathy将这种固定时间设计与更传统的超参数调优进行对比,在传统超参数调优中,更快的模型可能只是因为在给定时间预算内更早收敛就显得更好;通过固定时间窗口并比较最终验证损失,autoresearch标准化了硬件差异,专注于配置的质量。

如果验证损失改善而不明显增加运行时间,代理会记录一个包含新版本train.py的git commit;否则它会回退到之前的最佳版本并尝试不同的修改,实际上是在模型配置景观中攀登,同时留下完全可审计的轨迹。

4、硬件和软件要求

关于autoresearch的报道强调,它专为单NVIDIA GPU设置而非分布式训练而设计,降低了运营复杂性,同时仍需要相当不错的加速器。

Karpathy和次要报道提到,系统已在高端NVIDIA硬件(如H100)上测试,但固定五分钟的时间预算意味着即使用户在较小GPU上尝试,运行也具有可比性;较慢的GPU只是会在每个五分钟窗口内完成更少的优化步骤。

项目针对Python 3.10或更高版本,使用现代深度学习栈(PyTorch和CUDA)适配所选GPU,符合NVIDIA和社区设置指南中描述的典型单GPU研究环境。

来自这些指南的通用GPU设置说明——安装最新NVIDIA驱动、匹配CUDA工具包和cuDNN版本、创建专用Python 3.10环境——在准备autoresearch机器时直接适用。

5、如何设置

设置autoresearch的方式与Karpathy的大多数仓库相同:从克隆GitHub仓库开始,准备一个干净的Python环境。

git init
git remote add origin https://github.com/karpathy/autoresearch
git pull origin master

执行上述命令后,你将拥有仓库可以继续。

接下来你需要python工具astral。使用以下命令继续。

curl -LsSf https://astral.sh/uv/install.sh | sh

下一步是安装仓库中列出的其余Python依赖,代码库紧凑避免了重型框架抽象,因此与大型生产系统相比,额外包列表很小。

uv sync

安装依赖后,你可以继续开始分词器并运行一个简单实验

uv run prepare.py
uv run train.py

如果上述所有命令都成功,意味着你的依赖都已准备好,可以继续进行简单实验。

根据你访问的codex或claude或任何其他代理,在终端中启动LLM并让LLM读取program.md文件开始实验。

LLM将使用Program.md作为简单的低权重技能来继续研究。

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

6、选择和连接AI编程代理

Autoresearch没有自带专有代理实现;相反,它假设可以访问一个能读取文件、编辑train.py并在受控环境中运行shell命令的AI编程助手。

7、让Autoresearch通宵运行

一旦代理连接好且program.md看起来合理,最令人满意的步骤就是让autoresearch运行。

使用现代GPU,每个实验固定五分钟训练窗口意味着八小时的通宵运行可以容纳数十次完整训练尝试;高端硬件可能会将其推高到大约一百次左右,具体取决于实现细节和模型大小。

Autoresearch是一个紧凑但雄心勃勃的实验,探讨当真正的训练循环交给AI代理时会发生什么,赋予它一个简单的使命:在固定时间预算内让事物变得更好并记录一切。

通过将人类的角色转变为编写和完善Markdown"程序",同时将低层迭代委托给自主循环,它重新诠释了单个GPU如何作为一个微型、持续运行的研究实验室使用。

早期博客文章、社交片段和动手实验的生态系统表明,这种代理编辑代码、运行实验并管理自己git历史的模式可能会扩展到语言模型预训练之外的领域,如检索管道、领域适配等等。


原文链接: Getting Started with Andrej Karpathy's "autoresearch" — Full Guide

汇智网翻译整理,详见标明出处