title: Karpathy autoresearch:AI 自动跑单卡 nanochat 训练 cover: /root/.openclaw/workspace/shared/cover.png
Karpathy 的 autoresearch:让 AI 自己跑实验,单卡 nanochat 训练全自动
Andrej Karpathy 最近放出了一个叫 autoresearch 的小项目,思路极其简单又极其狠:把「单机 nanochat 训练」这件事的代码结构拆干净,然后让一个 coding agent 循环地读 README、改训练脚本、跑训练、看结果、改回去——整套流程完全无人值守。单张 GPU,几小时甚至几十分钟就能迭代出一个新的实验。
它不是一个聊天机器人框架,也不是 agent 工具箱。它专门解决一个非常具体的问题:小规模 LLM 训练实验的自动化。
背景:Karpathy 的 nanochat 与「单人 GPU 就能跑」路线

如果你跟过 Karpathy 的 YouTube 频道,应该不陌生「Let me just retrain nanoGPT from scratch」这种系列。他这一两年的主线之一,就是把「大模型预训练这件事,压缩到一张消费级 GPU 能跑的范围」。
nanochat 是这条线的最新成果:一个单文件、端到端的 ChatGPT 复刻,能跑通 pretrain → SFT → RLHF → inference 全部流程。代价就是——只在参数规模和训练时长上妥协。
而 autoresearch 是 nanochat 的实验自动化层:
- 你启动一个 agent(Claude Code / Codex / Cursor / OpenCode 都行)
- agent 拿到一份固定的实验规范(README + 任务清单)
- agent 自己改
train.py,自己跑,自己根据结果决定下一步改什么 - 你打开电脑就能看到一长串「我想到了 N 个假设,已经验证掉 M 个」
它不是一个「AI 科研机器人」那么宏大的东西,而是把 Karpathy 自己平时手动改 nanochat 训练脚本的那一小段工作流固化成 agent loop。
能做什么

- 自动改训练超参:batch size、learning rate、warmup schedule、序列长度、模型宽度/深度——agent 会按它对 nanochat 当前瓶颈的理解去调整。
- 自动跑短训:默认每次只跑几分钟到一个小时的训练,得到一个可对比的指标(val loss、benchmark 分数)。
- 自动对比并保留最优:内置一个简单 leaderboard / log 机制,agent 能看到历史最佳,自动倾向于「在当前最佳附近继续探索」。
- 完全本地运行:只需要一张 GPU(README 推荐 8×H100,但单卡也能跑小规模),不需要任何云端 API。
可以把它理解为:nanochat 的「AutoML」实验台,但搜索策略是 LLM 而不是贝叶斯优化。
为什么值得看
这件事的价值不在于「又有一个 agent 项目」,而在于它示范了一种很值得抄的范式:
1. Agent + 极简任务的复利效应。nanochat 已经把训练流程压缩到 ~千行 Python,agent 才能在这个尺度上做出有意义的修改。如果项目本身有几万行,agent 改一改就跑飞的概率太大。
2. 把「想法→实验」的循环从几小时压缩到几分钟。以前 Karpathy 自己调试一次训练要:改 → 跑 → 看 → 想 → 再改。一个 agent loop 跑通之后,这一整圈可以 24 小时不停。
3. 复现门槛极低。README 写得非常 Karpathy 风格——清晰、诚实、不兜售。整个项目的代码量可以一晚上读完。
而且,autoresearch 不是一个「实验做完就丢」的一次性脚本,它的 log 文件本身就是一份「AI 自己摸索出来的训练小诀窍」——看 git log 等于看一份教学材料。
快速上手
环境假设:你有一张 Linux + NVIDIA GPU(显存建议 ≥ 24GB,README 推荐 H100 但 4090/3090 也能跑小规模),并且已经装了 Python 3.11+ 和 uv。
# 1. 克隆仓库
git clone https://github.com/karpathy/autoresearch.git
cd autoresearch
2. 安装依赖(用 uv 管理,会自动拉 nanochat 等依赖)
uv sync
3. 启动 agent 循环(这里用 Claude Code,也可以换成 Codex / Cursor CLI)
uv run claude-code --task "Run autoresearch on a single GPU, optimize val loss on nanochat."
更典型的用法是把 agent 的任务写成一个 markdown 文件塞进去,例如 TASK.md:
# Goal
Minimize val loss on a single-GPU nanochat run under a 30-minute budget.
Constraints
- Must stay within 24GB VRAM.
- Cannot change the dataset or tokenizer.
- Each experiment must log final val loss to runs/last.json.
Loop
For each experiment:
1. Modify train.py.
2. Run uv run python train.py.
3. Append result to runs/history.jsonl.
4. Briefly state hypothesis for next change.
agent 看到这份规范之后,就会自己开始改、跑、改、跑。几个小时后 runs/history.jsonl 里就是一长串 val loss 曲线,你直接 cat 就能看。
如果只是想先体验一下、不真的训练:
uv run python train.py --dry-run --max-steps 5
这样只会跑 5 个 step,让你确认环境 OK。
适合谁
- 想动手玩小模型训练的开发者:单卡可跑,比从头搭 HuggingFace + DeepSpeed 简单 100 倍。
- 做 LLM infra / 训练优化的研究者:agent 跑出来的 log 本身就是一份「AI 视角的训练调参策略」,可以拿来对比你自己的经验。
- Agent 工具作者:autoresearch 是「agent 在真实、有反馈、可量化任务上循环」的范例,比那些玩具 demo 强得多。
- 不是给你看的:纯应用开发者、纯前端、纯移动端——这个项目的价值在训练管线,离业务逻辑很远。
几个值得记住的小细节
- 训练默认纯 bf16,不引入混合精度之外的奇技淫巧,方便复现。
- agent 修改范围只限 train.py 和少量 config,模型结构本身是固定的(这点非常 Karpathy)。
- README 里有「expected baseline val loss」数字,方便你判断 agent 到底有没有真的进步,还是在乱跑。
链接
- 仓库:https://github.com/karpathy/autoresearch
- 配套 nanochat 仓库:https://github.com/karpathy/nanochat
- Karpathy 介绍视频(YouTube 搜「Andrej Karpathy autoresearch」即可)
如果你之前被「训练一个大模型要 8 卡 A100 起步」劝退过,autoresearch + nanochat 这套组合值得花一个周末试试。它不会让你训出 GPT-4,但会让你真正理解一次完整训练发生了什么——而这件事,大多数 LLM 用户其实从未亲眼见过。
默认评论
Halo系统提供的评论