Skip to content

Karpathy 的 Loop 实践 — AutoResearch 与双层循环

以 Karpathy 的 AutoResearch 项目为案例,拆解 Loop Engineering 在真实科研场景中的落地架构,以及双层循环(Bi-level Loop)如何在不更换模型的情况下将效率提升 5 倍。适合已了解 Loop Engineering 基本概念、想看具体工程实现的开发者。

目录


从 Prompt 到 Loop:视角切换

核心定义

概念 Prompt Engineering Loop Engineering
角色 「给 AI 打字的人」 「写那个替你打字的 Loop 的人」
交互模式 你问它答(单次) 设定目标 → AI 自主执行 → 验证 → 未达标则重复
你做什么 每轮手动输入 设定架构和约束,过程自动跑

Loop 成立的三大要素

                  ┌──────────────────────────┐
                  │  目标(Goal)              │
                  └──────────┬───────────────┘
                             │
              ┌──────────────▼──────────────┐
              │                             │
              ▼                             │
     ┌────────────────┐            ┌───────────────┐
     │  Validator     │◄───────────│  执行(Execute) │
     │  验证器         │            │  Agent 改代码    │
     │  能判断真假      │            │  / 跑实验       │
     └───────┬────────┘            └───────┬───────┘
             │                              │
             │     ┌────────────────┐      │
             └────►│   State 状态文件  │◄─────┘
                   │  记录已试方法    │
                   │  避免重复犯错    │
                   └───────┬────────┘
                           │
                   ┌───────▼────────┐
                   │ Stop Condition  │
                   │ 达标 / 上限   │──→ 输出结果
                   └────────────────┘

三大要素缺一不可

  • Validator(验证器):没有客观判断机制,Agent 只会盲目自我认同
  • State(状态文件):记录已尝试的方法和结果,打破「每轮犯相同错误」的死循环
  • Stop Condition(停止条件):目标达成或循环次数耗尽即停止,防止无限跑

核心洞察:「只要你有一个客观的度量指标,那个跑实验的人就不该是你。」 — Karpathy


AutoResearch:Karpathy 的三文件架构

项目规模

  • 3 个文件,约 630 行代码
  • 发布一个月内获得极大关注
  • 仓库:github.com/karpathy/autoresearch

三文件设计

autoresearch/
├── train.py        ← Agent 可以修改(实验对象)
├── prepare.py      ← Agent 禁止修改(评分器 = 验证器)
└── program.py      ← Agent 的任务说明书(探索方向 + 约束)
文件 角色 Agent 权限 设计意图
train.py 训练脚本 可修改 实验对象,Agent 在此尝试各种优化
prepare.py 评分器 不可修改 防止 AI 作弊——不能「降低考试难度」
program.py 任务说明书 只读 规定探索方向、约束条件、搜索空间

关键设计原则

✅ prepare.py 与 train.py 强制分离
   → 防止 Agent 通过降低验证标准来"通过考试"

❌ 如果让 Agent 同时控制训练和评分
   → 等于让学生既答题又改卷

实际成果

实验 结果
Karpathy 手工打磨 20 年的模型 Agent 跑了 2 天、700 次实验,发现 20 处他遗漏的优化细节(如注意力机制中缺少缩放系数)
Shopify CEO 测试 8 亿参数模型经硬件优化后,性能超越原 16 亿参数模型

双层循环(Bi-level Loop):提速 5 倍的架构突破

核心问题

既然自动研究本身也是一种研究,能不能用自动研究来优化自动研究本身?

架构对比

=== 单层 Loop ===

Agent ─→ 提改 train.py ─→ 训练 ─→ prepare.py 评分
  │                                         │
  └──────────── State 记录 ◄─────────────────┘


=== 双层 Bi-level Loop ===

内层 Loop(原逻辑):
  Agent_A ─→ 提改 train.py ─→ 训练 ─→ prepare.py 评分
    │                                              │
    └──────── State 记录 ◄───────────────────────────┘

外层 Loop(元优化):
  Agent_B ─→ 不碰模型
    │         读内层代码 + 运行轨迹
    │         发现内层搜索卡在哪
    │         动态注入新 Python 代码
    │         改变内层搜索策略
    │                    │
    └────────────────────┘

关键发现

维度 单层 Loop 双层 Loop
相同基础 LLM 基准 效率提升 5 倍
提升来源 架构优化(非更强的模型)
外层作用 打破内层陷入的搜索套路

核心结论

效率飞跃来自架构设计,而非更大的模型。 外层 Loop 的作用是打破内层容易陷入的既定搜索本能——当内层在某个方向反复试探无效时,外层从更高维度注入新的搜索策略。

决策树:何时考虑双层循环?

有客观度量指标?
  ├── 否 ──→ 不适合 Loop
  └── 是
       单层效果遇到瓶颈?
         ├── 否 ──→ 单层足够
         └── 是
              LLM 算力预算充足?
                ├── 否 ──→ 优化单层 prompt/state
                └── 是 ──→ 尝试双层 Loop

日常四步提示词:简化版 Loop

即使不使用 Agent 工具,在日常对话中也能通过四步提示词模板体验 Loop 机制。

四步模板

1. 計畫(Plan)    → 說明下一步要做什麼
2. 執行(Execute) → 動手產出內容
3. 反思(Reflect)  → 對照標準打分,誠實列出差距
4. 迭代(Iterate)  → 各項 8 分以上才過關,未達標優先修最弱項

Prompt 示例

你是一个 [角色]。

目标:[明确的完成标准]

请按以下四步执行:

1. 先列出你的计划
2. 执行计划,产出内容
3. 对产出的内容按以下标准打分(1-10):
   - [标准 A]
   - [标准 B]
   - [标准 C]
4. 如果任何一项低于 8 分,优先修补最低分项,然后重复步骤 2-4

最多迭代 3 轮。

适用边界

✅ 非常适合(验证可自动化)
   ├── 修复测试错误
   ├── 提高基准测试速度
   ├── 清理类型错误
   └── 有明确通过/失败判断的任务

❌ 不适合(验证依赖人工判断)
   ├── 设计新介面
   ├── 搭建新网页
   ├── 需求模糊的任务
   └── 没有客观度量标准的工作

适用边界与认知风险

认知投降(Cognitive Surrender)

当 Loop 交付代码的速度远超人类理解速度时,人会倾向停止判断、照单全收。

风险示意:

时间 ─────────────────────────────►

人类理解速度  ─────────────────────  (线性增长)
Loop 产出速度 ─────────────────────  (指数增长)
                              │
                              └── 差距不断扩大
                                 "仓库里的代码" vs "脑子里的理解"

工具的双刃剑

使用者 行为 结果
厉害的人 用 Loop 在深耕领域跑实验更快 效率倍增,认知同步加深
不想思考的人 用 Loop 规避搞懂底层逻辑 产出不可维护的黑盒代码

防御策略:强制自己定期审查 Loop 的输出,保持对核心决策的理解。Loop 是你的研究助手,不是你的代理决策者。


行动建议

1. 验证先行

在让 AI 自行跑任务前,先花精力把 Validator 立起来,确保评分指标客观不可作弊。

❌ 先让 Loop 跑,再想怎么评判结果
✅ 先把 prepare.py(评分器)写好、锁死,再启动 Loop

这是 AutoResearch 最核心的设计纪律——prepare.py 对 Agent 不可修改,否则等于让学生出题又改卷。

2. 謹防認知投降

对 AI 通过 Loop 自动生成的代码或结果,仍须保持主动审查与理解,切勿将思考权完全让渡给工具。认知投降的后果:仓库里的代码与脑子里的理解之间的差距不断扩大,最终你无法判断 AI 的输出是否正确,也无法在出问题时排查。

3. 從簡單閉環開始

在日常工作中(Code Review、单元测试、文案修正),尝试用四步结构引导 LLM,体会自主优化的威力:

計畫 → 執行 → 打分 → 迭代

不需要复杂的 Agent 框架,一个结构化的 prompt 就能在有明确验证标准的任务中看到 Loop 的效果。


参考资料

相关笔记