






















分析日期:2026-06-15
项目地址:https://github.com/karpathy/autoresearch
autoresearch 是由 Andrej Karpathy(前 OpenAI 创始成员、前 Tesla AI 总监)于 2026 年 3 月 6 日发布的一个极简自主化 ML 实验框架,核心代码仅约 630 行 Python。
项目的核心思想是:给 AI Agent 配备一套小型但真实的 LLM 训练环境,让它整夜自主运行实验。Agent 修改代码 → 训练 5 分钟 → 检查结果是否改善 → 保留或丢弃改动 → 重复循环。人类早晨醒来,面前是一串实验日志和一个更好的模型。
Karpathy 在 README 中以科幻风格写道:
"有一天,前沿 AI 研究曾经由'肉体计算机'在吃饭、睡觉、娱乐的间隙完成……那个时代早已远去。研究现在完全是自主 AI Agent 集群的领域……这个仓库就是一切开始的故事。"
项目被称为 "The Karpathy Loop",X 平台发布两天内获得 860 万次浏览。
| 项目 | 链接 |
|---|---|
| GitHub 仓库 | https://github.com/karpathy/autoresearch |
| 作者 | Andrej Karpathy |
| 首次发布 | 2026-03-06 |
| 许可证 | MIT |
| 语言 | Python 83.4%,Jupyter Notebook 16.6% |
README 中包含一张 progress.png 示意图,展示 val_bpb 随实验次数的逐步下降曲线。该图通过 analysis.ipynb 从 results.tsv 自动生成:
| 特性 | 说明 |
|---|---|
| 极简设计 | 仅 3 个核心文件,总计约 630 行 Python |
| 全自主实验循环 | AI Agent 从提出假设、修改代码、执行训练、评估结果到保留/回滚,全程自主,无需人类干预 |
| "冻结指标"信任边界 | prepare.py 中的评估函数 evaluate_bpb 不可被 Agent 修改,保证评估的诚实性和跨实验可比性 |
| 棘轮机制(Ratchet Loop) | 使用 git commit/reset 实现"只能前进不能倒退"的实验迭代,保留改进,回滚退化 |
| vocab-size 无关的评估 | 使用 val_bpb(validation bits per byte)而非 val_loss 或 perplexity,确保即使 Agent 改变了 vocab_size 或架构,评估依然公平可比 |
| 三层编程范式 | 人类写 program.md → LLM Agent 读写 train.py → Python 训练神经网络。人类不再直接改模型代码,而是改写"改代码的规则" |
| 固定时间预算(5分钟) | 每次实验精确运行 5 分钟(排除启动/编译时间),每小时约 12 次实验,一夜可完成约 100 次 |
Agent 发现的关键优化包括:减半 total_batch_size、增加 warmdown 比例到 0.7、添加 5% warmup、调整模型深度、优化 x0_lambda 初始化、调整 unembedding 学习率、切换窗口模式为 SSSSL、缩小滑动窗口、将 RoPE 基频从 10000 调至 200000 等。值得注意的是,Agent 发现了 Karpathy 本人 20 年经验都未发现的问题(注意力缩放乘数缺失、正则化配置缺失)。
| 要求 | 说明 |
|---|---|
| GPU | 单张 NVIDIA GPU(官方在 H100 上测试),推荐 H100 / A100 / RTX 系列 |
| Python | 3.10+ |
| 包管理器 | uv(Astral 开发的 Python 包管理工具) |
| 操作系统 | Linux(官方验证)。社区已有 MacOS、Windows、AMD fork |
pyproject.toml)dependencies = [
"kernels>=0.11.7", # Flash Attention 3 内核加载器
"matplotlib>=3.10.8", # 用于 analysis.ipynb 可视化
"numpy>=2.2.6",
"pandas>=2.3.3", # 用于 analysis.ipynb 数据处理
"pyarrow>=21.0.0", # Parquet 数据格式读写
"requests>=2.32.0", # 下载数据集
"rustbpe>=0.1.0", # Rust 实现的 BPE tokenizer 训练
"tiktoken>=0.11.0", # OpenAI tokenizer 格式
"torch==2.9.1", # CUDA 12.8 版本
]
使用 PyTorch CUDA 12.8 wheel,Flash Attention 3 通过 kernels 包加载,自动检测是否为 Hopper 架构 GPU(非 Hopper 使用 kernels-community/flash-attn3 fallback)。
| Fork | 平台 |
|---|---|
| miolini/autoresearch-macos | MacOS |
| trevin-creator/autoresearch-mlx | MacOS(MLX 替代 PyTorch) |
| jsegov/autoresearch-win-rtx | Windows |
| andyluo7/autoresearch | AMD |
autoresearch/
├── .gitignore # 忽略 results.tsv 等
├── .python-version # Python 版本声明
├── README.md # 项目说明
├── pyproject.toml # 依赖与项目配置
├── uv.lock # 依赖锁定文件
├── prepare.py # ~389行:数据准备 + Tokenizer + 评估(只读)
├── train.py # ~630行:GPT模型 + MuonAdamW优化器 + 训练循环(Agent可修改)
├── program.md # ~114行:Agent的研究指令与约束
├── analysis.ipynb # 结果分析 Notebook
└── progress.png # 实验结果图表
┌─────────────────────────────────────────┐
│ program.md(人类指令) │
│ 研究目标 · 规则约束 · 评价标准 │
├─────────────────────────────────────────┤
│ Agent(Claude / Codex) │
│ 读取代码 → 提出修改 → 执行 → 评估 │
├─────────────────────────────────────────┤
│ train.py(实验场) │
│ GPT 模型 · Optimizer · 训练循环 │
├─────────────────────────────────────────┤
│ prepare.py(不动区/信任边界) │
│ 数据处理 · 常量 · 工具函数 │
└─────────────────────────────────────────┘
prepare.py — 固定不可修改(信任边界)MAX_SEQ_LEN=2048、TIME_BUDGET=300(5分钟)、EVAL_TOKENS=40*524288karpathy/climbmix-400b-shuffle 数据(Parquet 格式),默认 10 个分片,最大 6542 个分片,支持多线程下载rustbpe 训练 BPE tokenizer(vocab_size=8192),GPT-4 风格分词模式,保存为 tiktoken 兼容格式evaluate_bpb() 函数——基于固定 MAX_SEQ_LEN 计算 bits-per-byte,vocab_size 无关,特殊 token 自动排除(byte length=0)train.py — Agent 唯一可修改文件F.relu(x).square())torch.compile 融合优化)program.md — 人类编写的研究指令train.py 任何内容)prepare.py、不能装新包、不能改评估函数)results.tsv(commit / val_bpb / memory_gb / status / description)1. Agent 读取 train.py 和历史实验记录
2. Agent 提出修改假设并修改 train.py
3. git commit
4. 运行 uv run train.py > run.log 2>&1
5. 提取 val_bpb 和 peak_vram_mb
6. 若 val_bpb 下降(改善)→ 保留 commit
若 val_bpb 上升(退化)→ git reset 回滚
7. 记录到 results.tsv
8. 回到 1,永远循环
# 核心评估常量(Agent 不可修改)
MAX_SEQ_LEN = 2048 # 固定最大序列长度
TIME_BUDGET = 300 # 固定时间预算(5分钟)
EVAL_TOKENS = 40 * 524288 # 评估 token 数
# evaluate_bpb() 使用固定 MAX_SEQ_LEN 计算
# 使用 bits-per-byte 而非 perplexity
# 确保 vocab_size / 架构变化下评估依然公平
# 混合优化器:二维矩阵用 Muon,一维参数用 AdamW
class MuonAdamW:
def step(self):
for name, param in model.named_parameters():
if param.dim() >= 2:
# Muon: Polar Express 正交化 + Nesterov 动量
muon_step(param)
else:
# AdamW: torch.compile 融合优化
adamw_step(param)
人类写 program.md → 定义"改代码的规则"
LLM Agent 读写 train.py → 执行修改
Python 训练神经网络 → 验证修改效果
人类从"实验者"转变为"实验设计者",核心价值从写代码转为设计约束。
| 层级 | 场景 | 说明 |
|---|---|---|
| Tier 1(非常适合) | LLM 训练调优、交易策略回测、代码性能基准测试、编译器优化 | 快速循环 + 客观指标 |
| Tier 2(有条件适用) | 冷邮件优化、广告文案、产品描述 | 较慢循环 + 真实数据 |
| Tier 3(不适用) | SEO 优化、定价策略、品牌设计、UX 设计 | 核心条件不满足 |
具体应用方向:
| 优点 | 说明 |
|---|---|
| 极简主义 | 630 行代码即完成完整的自主研究循环,降低理解和修改门槛 |
| 冻结指标设计 | Agent 无法修改评估标准,保证实验公平性——被视为 AI Alignment 的微缩模型 |
| 固定时间预算 | 跨实验可比,跨平台仅同平台内部比较,避免不公平对比 |
| Git 原生版本控制 | 利用 git commit/reset 实现棘轮机制,简单可靠 |
| vocab_size 无关 | val_bpb 指标使架构变化(包括 vocab_size 改变)下依然可比 |
| 人类角色升级 | 从"实验者"转变为"实验设计者",核心价值从写代码转为设计约束 |
| 可迁移性 | 小模型上发现的优化可迁移到大模型 |
| 社区生态丰富 | 已有 MacOS/Windows/AMD/MLX 等多个平台 fork |
| 不足 | 说明 |
|---|---|
| 棘轮盲区 | 阻止了"先退步再大幅前进"的多步探索(如切换注意力机制),Agent 只能在局部最优附近爬坡 |
| 单文件修改约束 | Agent 只能修改 train.py,无法重构涉及多文件的系统性改动 |
| 无持久记忆 | Agent 的上下文窗口即为状态机,重启后无历史感知 |
| 平台依赖 | 官方仅支持 NVIDIA GPU,跨平台结果不可比较 |
| 规模限制 | 真实前沿模型代码数十万行,autoresearch 的 630 行仅是简化版 |
| 创造性天花板 | Agent 只能在 LLM 训练数据中的 ML 文献知识边界内探索,无法真正发明新架构 |
| 验证集过拟合风险 | 大量实验可能"污染"验证集 |
| 复现不稳定 | Agent 行为随 LLM 版本变化,实验结果可能无法精确复现 |
| LLM 探索偏差 | Agent 可能受限于自身训练数据和认知,在特定方向上反复打转 |
| 安全性风险 | Agent 不受限制地修改代码并执行(需沙箱隔离) |
| 工具 | 定位 | 核心差异 |
|---|---|---|
| AutoML(NAS/HPO) | 预定义超参数搜索 | 搜索空间封闭(仅数值),autoresearch 开放(任意代码) |
| AI Scientist (Sakana) | 端到端科研系统 | 完整流程但难以验证,autoresearch 仅做可量化小闭环 |
| GPT Researcher | 知识检索+报告生成 | 面向搜索,不写代码/不跑实验,与 autoresearch 互补 |
Karpathy 的产品演进路线展现了人类在编程中角色的逐步减少:
Vibe Coding (2025.2) → Agentic Engineering (2026.2) → Autoresearch (2026.3)
每一步都在减少人类的执行角色。Karpathy 的下一步愿景是"从模拟一个博士生到模拟一个博士生社区"——SETI@home 风格的分布式 Agent 协作网络,社区已有 autoresearch-at-home 等分布式 fork 在探索。
autoresearch 代表了 AI 辅助研究的一个重要范式转变:将研究的一个子阶段约束到极致,然后交给 Agent 自主运转。它不试图自动化整个科研流程,而是选择了一个可量化、可验证、可重复的最小闭环——并在其中把自动化做到极致。
其设计哲学(极简、冻结指标、棘轮循环、三层编程范式)已被广泛讨论,被称为 "Karpathy Loop" 模式。项目仅有 630 行 Python 代码,却引发了 AI 研究自动化的范式讨论,并被超过 66,000 人关注、9,600 人 fork。
对于希望理解 AI Agent 自主研究的边界、探索"人类作为实验设计者而非执行者"新范式的开发者,这是一个必读项目。对于想在夜间用 AI 自动优化模型的实践者,它是一个可立即跑起来的实验框架。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。