Reading Archive
← 返回文章列表
Janet @genie0309 · 2026-04-01

Andrej Karpathy 的 AutoResearch——当约束变成创造力

Andrej Karpathy 写了 630 行代码,分成三个文件,然后去睡觉了。醒来时,AI 已经替他跑了 50 个实验,找到了更好的学习率,并把证据提交到了 git。

这个项目叫 autoresearch ,发布 48 小时内破万星。但真正值得看的不是代码本身,而是三个文件之间的关系——它们构成了一个精妙的制度设计,回答了一个根本性的问题:怎么让 AI 自主做研究,同时保证它不作弊?

三个文件,三个角色

autoresearch 只有三个文件:

prepare.py 是一把锁死的尺子。它定义了数据怎么来、模型怎么评分(一个叫 evaluate_bpb 的函数),以及两个硬约束:上下文长度 2048,训练时间 5 分钟。这个文件禁止修改。

train.py 是唯一的实验台。完整的 GPT 模型定义、优化器、训练循环、所有超参数——全在这一个文件里。AI 可以随便改:换架构、调学习率、加层减层,什么都行。但改完必须跑得动,5 分钟内跑完,然后用那把锁死的尺子打分。

program.md 是贴在墙上的一张便签。用自然语言写的研究方法论:每次改一个想法,跑 5 分钟看结果,好就留,差就撤回。最后一行写着:NEVER STOP——永远不要停下来问人,人可能在睡觉。

这不是随意的文件拆分,而是一个最小但完备的结构设计。

锁死的尺子:好的制度设计不是激励人做对的事,而是让做错的事变得不可能

三个文件里最关键的设计是什么?prepare.py 不可修改。

为什么这是最根本的一条?因为 AI 的"聪明"是中性的。如果改评分函数比改模型更容易得高分,AI 一定先改评分函数。这和人类组织里的行为完全同构——如果包装数据比做好产品更容易融到钱,很多创始人会先包装数据。

Karpathy 没有在便签上写"请不要改尺子"。他用文件权限让改尺子这件事在物理上不可能。

结构保证永远优于纪律保证。 规矩是可以被绕过的,结构不可以。这是整个设计最天才的地方。

把这个洞察拉到更大的尺度:所有好的制度设计——无论是公司治理、国家法律还是 AI 安全——本质上都在做同一件事:不是激励参与者做对的事,而是让做错的事在结构上变得不可能。

5 分钟:约束是创造力的母亲

第二个关键约束:训练时间锁死 5 分钟。

这看起来只是一个工程参数,但它的影响是认知层面的。在 ML 研究中——其实在任何领域都一样——面对"怎么让结果更好"这个问题,最廉价的回答永远是:投入更多资源。 多跑几轮、多喂点数据、多用几张卡。这不是创新,这是堆量。

5 分钟把这条路彻底堵死了。搜索空间从"算力 × 算法"坍缩到纯"算法"维度。AI 不能靠跑更久取胜,唯一的出路是想出更聪明的做法。

这和创业是同构的。钱太多对团队来说是极大的负担——融了大钱的团队烧广告买用户,数据好看但没有真正的产品创新。反而是钱少的团队,被资源约束逼着去想"怎么用更少做更多"。这才是真正的 PMF 信号。富二代创业极少能成,根因就在这里:没有约束的环境不产生创新,只产生浪费。

Karpathy 给 AI 造了一个"穷创业"的环境。

而且 5 分钟还有一个被低估的副作用:它让实验变得可以大量叠加。一晚上能跑 100 个实验。如果一个实验要 2 小时,一晚上只能跑 4 个,搜索效率差 25 倍。短周期 = 高迭代频率 = 更快逼近最优解。约束不仅逼出了创造力,还成倍放大了探索的速度。

单文件:聚焦是约束的终极形态

第三个约束:AI 只能改 train.py 这一个文件。

如果 AI 能改所有文件,它会去改数据加载方式、改 tokenizer、改评估流程的调用方式——到处找捷径绕过约束。限制在一个文件里,等于把所有创造力压缩到一个方向上。

约束越窄,创造力越聚焦。这是第一性原理:能量守恒——当扩散的通道被堵死,剩下的通道上压强更大。

Git 棘轮:进步不可逆

实验循环的核心机制值得单独说:

改 train.py → git commit → 跑实验 → 分数更好就保留 → 分数更差就 git reset 回上一版

这是一个棘轮——只能前进不能后退。每一次 commit 锁定一个新的最优解。搞砸了?Reset 回上一个 commit,零成本。一晚上 100 个实验,最终留下的是一路"打怪升级"的最优路径。

这和生物进化的逻辑完全同构:变异(改代码)→ 选择(evaluate_bpb 打分)→ 保留适者(commit)→ 淘汰不适者(reset)。Git 不只是版本控制,它是实验的不可逆进步机制。

便签才是真正的程序

最反直觉的部分:真正的程序不是 Python,是那个 Markdown 文件。

program.md 不被任何解释器执行。它被 LLM 的 context window "执行"。这是一种全新的编程范式——用自然语言编写的程序,由 AI 解释执行。Python 代码(train.py)反而变成了被操作的数据。

传统范式:人写代码 → 机器执行 Karpathy 范式:人写自然语言 → AI 读指令 → AI 写代码 → 机器执行

program.md 里那句 NEVER STOP 是整个系统的灵魂。它不是技术约束,是一个用自然语言写的 while True 循环。人去睡觉,AI 一直跑,直到被打断。

目标函数:什么算好

把所有花哨的东西剥掉,autoresearch 的 prepare.py 本质上定义了一件事:什么算好。

这就是目标函数。一旦这个定义锁死,所有参与者的聪明才智就只能往一个方向使劲。

好的目标函数长什么样?和 Karpathy 的 evaluate_bpb 一样——简单、不可篡改、唯一。

  • 简单:就一个数,越低越好。不是又要增长又要利润又要 DAU 又要 NPS 的四维模糊地带。目标函数一旦变多,团队就会本能地挑最容易的那个优化,剩下的糊弄过去

  • 不可篡改:用户用脚投票是不可篡改的尺子。融资额、媒体曝光、行业奖项——这些都是可以"改刻度"的虚假尺子。留存率、复购率——这些才是锁在玻璃柜里的真尺子

  • 唯一:一个公司在一个阶段只能有一个北极星指标。两个就会分裂,三个就是没有

很多创业失败的根因,不是团队不努力,不是资源不够,是目标函数定义错了,或者目标函数可以被绕过。团队很聪明,聪明到可以把虚荣指标刷得很好看——就像 AI 如果能碰评分函数,一定先改评分而不是改模型。

630 行的极简主义

最后值得一提:整个项目 630 行代码。三个文件。没有配置系统、没有 CLI 参数、没有数据库、没有 dashboard。

这不是"还没来得及做"。program.md 里明确写了简洁性标准:

改进了 0.001 但加了 20 行丑陋代码?不值得。改进了 0.001 但删了代码?必须保留。

Karpathy 把奥卡姆剃刀写进了评判标准。AI 不仅要降低 loss,还要保持代码简洁。等于在搜索空间上加了一个正则化项:复杂度惩罚。

所以 Karpathy 到底在做什么

他在回答一个问题:

如果一个 AI 研究员只有一张 GPU、5 分钟和一个不可篡改的评估函数,它能走多远?

这个问题的约束结构本身就是答案:

  • 不可篡改的评估函数 → 防止自欺

  • 固定时间预算 → 逼出算法创新而非资源堆砌

  • 单文件限制 → 聚焦创造力

  • Git 棘轮 → 保证进步不可逆

  • NEVER STOP → 把人从循环中移除

这不是一个 ML 项目。这是一个关于"怎么设计一个让聪明人只能做对的事的系统"的实验。用最少的基础设施,最大化自主性,同时用结构(而非信任)保证诚实。

这是制度设计,不是软件工程。

Karpathy 只不过碰巧用代码写了出来。

查看原文 ↗