小白也能看懂,autoresearch 到底是什么

这两天,Karpathy 放出来的 autoresearch 被很多人反复提起。
它会被讨论起来,主要因为它展示了这样一件事:
以前要靠人反复去做的训练实验,现在 agent 可以自己改代码、自
己跑实验、自己看结果,再决定这次改动留不留下来。

我第一次看到的时候,脑子里先出来的是这几个问题:
它在研究什么?它训练的是提示词,还是模型?
Claude、Codex 这种大模型在这里做什么?
它跑一段时间之后,我最后拿到的到底是什么?
这篇就用尽量通俗的问答形式,把 autoresearch 讲明白。

先讲这个 repo 里最重要的 3 个文件

如果不先把这 3 个文件分开,后面很多地方会混。

1. prepare.py

这个文件负责固定常量、准备数据、训练 tokenizer,还有运行时要用
到的数据加载和评估工具。
在默认设计里,它是只读的,agent 不应该改它。

2. train.py

这是 agent 唯一会去改的文件。
模型结构、优化器、超参数、训练循环、batch size,这些都在这里。
autoresearch 的实验,核心就是不断改这个文件。

3. program.md

这是写给 agent 的说明文件。
它不会直接训练模型,但它会决定这轮自治实验怎么跑。

autoresearch 到底是什么

一句话说,autoresearch 是一个让 AI agent 自动做训练实验的小系统。
它更像一个自动实验流程,不是一个现成聊天产品,也不是一个下载完
就能直接对话的本地模型。
agent 在里面做的事情很简单:
train.py
跑一次训练
看指标有没有变好
变好就保留
变差就撤回
所以它最直接的作用,就是帮你持续试不同训练方案,然后留下当前表
现更好的那一版。

它在研究什么

它研究的不是一个抽象题目。
它研究的是:在固定的机器、固定的时间预算、固定的数据和评估方式
下,train.py 怎么改,才能让结果更好。
这里的“结果更好”,在这个 repo 里说得很具体,就是 val_bpb 更低。

这里面有哪些角色

可以先把 3 个角色分开:
你:设定目标的人
AI agent:负责做实验的人
小模型:真正被训练的对象
Claude、Codex 这种大模型,在这里扮演的是 agent。
它们负责读规则、改代码、跑实验、看日志、决定保留还是回退。
真正被训练的,是仓库里的那个小模型。
所以这件事更像是:你让一个很会写代码、很会做实验的助手,去帮你
训练另一个更小的模型。

它训练的是提示词吗

不是。
这个系统里有一个很重要的文件,叫 program.md
它更像工作手册。
它告诉 agent:
哪些文件能看
哪些文件能改
实验怎么跑
结果怎么记
什么情况保留
什么情况撤回
你改 program.md,影响的是 agent 做实验的方式。
真正会在训练里被更新的,是小模型的权重。

checkpoint权重train.py 分别是什么

这几个词很容易混。
可以这样看:
train.py:训练配方
权重:模型真正学到的内容
checkpoint:训练过程中的存档包
它们的顺序是:
先按 train.py 去训练模型
训练过程中产生权重变化
再把某个阶段的结果保存成 checkpoint

为什么它每次只跑 5 分钟

因为这个 repo 的设计目标不是一次把模型训完。
它想做的是短实验、多轮比较。
在官方默认流程里,每次训练的 wall clock 时间预算是 5 分钟,不算启动
和编译开销。
这样做的直接好处是:
一晚上可以跑很多轮
不同改法更容易比较
不会在一个明显不行的方向上卡太久
所以它真正做的是:在这台机器上,给你 5 分钟训练时间,看什么方法更
好。

它的评估标准是什么

这个 repo 看的核心指标是 val_bpb
README 和 program.md 里都写了,目标很简单:让 val_bpb 更低。
agent 每跑完一轮实验,会去日志里读这个值,再决定这次改动是保留还是
丢弃。

它能在我的电脑上直接跑吗

主仓库当前的前提比较明确:
需要单张 NVIDIA GPU。
官方测试环境是 H100。
所以如果你问“主仓库默认状态能不能直接在 Mac 上跑”,
答案通常不是“直接就行”。
README 里提到了几个 fork,像 MacOS 的 fork、Windows 的 fork。
所以更准确的说法是:autoresearch 这个思路可以往别的平台走,
但 Karpathy 这个主仓库当前默认瞄准的,还是单张 NVIDIA GPU。

它跑一晚上之后,我最后会拿到什么

很多人会以为,跑一晚上之后,直接就会得到一个能聊天的本地模型。
更准确的说法是,你通常会拿到几类东西:
一串实验记录
每轮实验的日志
results.tsv 里的结果表
保留下来的 commit
推进后的分支状态
可能更好的一版 train.py
如果这些实验里确实跑出了更好的方案,那最后留下来的 train.py
比 baseline 更强一些。
所以它直接给你的,通常是更好的训练方案,加上一整晚试验留下来的记
录,不是成品聊天模型。

如果我想把它做成一个小模型,接下来怎么走

可以,但 autoresearch 本身更多是在帮你找训练方法,不是在一晚上里直接
交付成品模型。
更顺的理解是:
先用 autoresearch 找到一版更好的 train.py
再用这版方案继续正式训练
训练过程中保存 checkpoint
最后再写加载和生成代码,把模型真正跑起来
走到这一步,你才更接近一个可以实际使用的小模型。
如果机器比较小,也不能直接照抄主仓库默认设置。
README 里也提到了一些方向,比如:
换更小、范围更窄的数据集
把模型做小
把 sequence length 调低
把评估和 batch 的设置一起往下调
所以 autoresearch 更像是第一步。
它先帮你把“怎么训更合适”这件事试出来,后面你再把这套方案变成真正能
用的小模型。

results.tsv 是干什么的

这个文件是实验记录表。
官方默认会把每一轮结果记进去,包括:
commit
val_bpb
显存占用
状态
这轮实验改了什么
这样第二天回头看时,你看到的是完整的实验轨迹。

最简单的使用流程是什么

如果按 repo 里的默认流程来理解,可以先压成这几步:

  1. 准备数据,确认 ~/.cache/autoresearch/ 里有数据和 tokenizer
  2. 建一个新的 autoresearch/<tag> 分支
  3. 初始化 results.tsv
  4. 先跑 baseline
  5. 让 agent 只改 train.py
  6. 每轮跑完读取 val_bpb 和显存
  7. 变好就保留,变差就回退
  8. 一直循环

最后

如果只用一句话来记 autoresearch:
它是一个让 AI agent 自动改 train.py、自动跑短实验、自动按 val_bpb
下好结果的小系统。
你最后拿到的,通常是一套更好的训练方案,以及一整套实验记录。

0
0
0
0
评论
未登录
暂无评论