AutoResearch:AI 自主科研智能体完全指南
posts posts 2026-03-31T15:05:00+08:00全面解析 AutoResearch:62.1k Stars 的 AI 自主科研项目,让 AI 智能体自主进行 LLM 训练实验,5分钟/次实验,12次/小时,基于 nanochat 单GPU训练实现。技术笔记AutoResearch, AI Agent, LLM训练, 自主研究, Karpathy, nanochat, PyTorchAutoResearch:AI 自主科研智能体完全指南
目标读者:AI 研究工程师、机器学习研究员、对 AI 自动化实验感兴趣的开发者 前置知识:Python 基础、深度学习训练概念、PyTorch 入门 预计阅读时间:20 分钟 核心价值:让 AI 自主跑实验,你睡觉时它在工作
一句话理解 AutoResearch
AutoResearch(karpathy/autoresearch,62.1k Stars)是 Andrej Karpathy 的实验性项目,核心理念是:
让 AI 智能体像人类研究员一样自主进行 LLM 训练实验
它的使用场景很简单:你睡前启动它,早起看结果。
你:启动 AutoResearch,去睡觉
AI 智能体:修改代码 → 训练 5 分钟 → 检查 val_bpb → 保留或丢弃 → 重复
你:起床看到一整晚的实验日志,和(希望)一个更好的模型为什么关注这个项目
62.1k Stars 但只有 36 次提交,这个数字反差本身就是项目定位的最好说明:
- 它不是一个成熟的 ML 框架,而是一个概念验证
- Stars 反映的是 Karpathy 的影响力和"AI 自主科研"愿景的吸引力
- 代码故意保持极简,三个文件,一目了然
- 适合研究者和 Hacker 在此基础上探索
核心数据
| 指标 | 数值 |
|---|---|
| GitHub Stars | 62.1k |
| Forks | 8.7k |
| 贡献者 | 9 人 |
| 提交数 | 36 次(master 分支) |
| 最新提交 | 228791f (2026-03-26) |
| 许可证 | MIT |
| 主要语言 | Python 83.4%, Jupyter Notebook 16.6% |
工作原理
核心循环
给 AI 一个小型 LLM 训练环境
↓
AI 修改 train.py(改变模型架构/超参数/优化器)
↓
训练 5 分钟
↓
检查 val_bpb 是否改进
↓
保留改进或回滚
↓
重复(每小时约 12 次实验)三核心文件设计
AutoResearch 故意保持极简,只有三个文件:
| 文件 | 谁修改 | 作用 |
|---|---|---|
prepare.py | 不修改 | 常量定义、数据下载、Tokenizer 训练、运行时工具 |
train.py | AI 智能体 | GPT 模型、优化器、训练循环 |
program.md | 人类 | AI 智能体的基线指令 |
关键设计:AI 智能体只修改 train.py,确保 Diff 可审查、范围可控。
固定时间预算
训练总是精确运行 5 分钟(wall clock,不包括启动/编译时间),这是有意设计:
- 可比较性:无论 AI 改变了什么(模型大小、批量大小、架构),5 分钟内的产出可以直接比较
- 平台适配:AutoResearch 会在你的特定硬件上找到最优配置
- 代价:结果与其他平台不可比较
评估指标:val_bpb
val_bpb = Validation Bits Per Byte
- 验证集上每个字节的比特数
- 越低越好
- 与词表大小无关,便于公平比较架构变化
安装与快速开始
环境要求
| 要求 | 说明 |
|---|---|
| GPU | 单 NVIDIA GPU(官方测试于 H100) |
| Python | 3.10+ |
| 包管理器 | uv |
安装步骤
# 1. 安装 uv(如未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. 克隆仓库
git clone https://github.com/karpathy/autoresearch.git
cd autoresearch
# 3. 安装依赖
uv sync
# 4. 下载数据并训练 Tokenizer(一次性,约 2 分钟)
uv run prepare.py
# 5. 手动运行单次训练实验(约 5 分钟)
uv run train.py如果以上命令都能正常运行,说明环境配置成功。
启动 AI 智能体
- 在仓库中启动你偏爱的 AI 智能体(Claude Code、Codex 等)
- 禁用所有权限(让 AI 只读写代码,不执行危险操作)
- 发送提示启动实验:
Hi have a look at program.md and let's kick off a new experiment! let's do the setup first.项目结构
autoresearch/
├── .gitignore
├── .python-version
├── README.md
├── analysis.ipynb # 分析笔记本(便捷工具)
├── prepare.py # 数据准备(不修改)
├── program.md # 智能体指令(人类修改)
├── progress.png # 进度图
├── pyproject.toml # 依赖配置
├── train.py # 训练代码(AI 修改)
└── uv.lockprepare.py:常量与数据
# 关键常量
MAX_SEQ_LEN = 2048 # 最大序列长度
VOCAB_SIZE = 8192 # 词表大小
DEVICE_BATCH_SIZE = 16 # 设备批量大小
EVAL_TOKENS = 1048576 # 评估 token 数这个文件还负责下载训练数据和训练 BPE Tokenizer。
train.py:模型与训练
核心超参数(DEPTH 是主要复杂度控制旋钮):
| 超参数 | 默认值 | 说明 |
|---|---|---|
DEPTH | 8 | 模型层数 |
DIM | 512 | 模型维度 |
HEADS | 8 | 注意力头数 |
WINDOW_PATTERN | “SSSL” | 注意力模式 |
program.md:智能体指令
本质上是一个超轻量级的"技能"(Skill)。人类通过迭代修改这个文件来引导 AI 智能体的研究方向。
技术实现
GPT 模型架构
AutoResearch 使用标准 Transformer 解码器架构:
class GPT(nn.Module):
def __init__(self, depth=8, dim=512, heads=8, vocab_size=8192):
self.transformer = nn.ModuleList([
TransformerBlock(dim, heads)
for _ in range(depth)
])
self.lm_head = nn.Linear(dim, vocab_size)Muon 优化器
Muon 是一个牛顿形式的优化器,使用 Newton-Schulz 迭代求矩阵平方根。在某些任务上比标准 Adam 表现更好。
BPE Tokenizer
字节对编码(Byte Pair Encoding)从训练数据中学习词表。vocab_size 控制词表大小,影响模型可表示的 token 序列长度。
平台支持与调优
官方与社区移植
| 平台 | 支持情况 | 仓库 |
|---|---|---|
| NVIDIA GPU | ✅ 官方支持 | 原仓库 |
| MacOS | ✅ 社区 | miolini/autoresearch-macos |
| MacOS + MLX | ✅ 社区 | trevin-creator/autoresearch-mlx |
| Windows RTX | ✅ 社区 | jsegov/autoresearch-win-rtx |
| AMD GPU | ✅ 社区 | andyluo7/autoresearch |
小显存平台调优
如果想在 MacBook 等小显存平台上运行,建议:
1. 减小模型规模
DEPTH = 4 # 从默认的 8 降到 42. 使用更小的词表
vocab_size = 4096 # 从 8192 减小
# 或更激进地:2048、1024
# 甚至纯字节级:256 个 token3. 减小序列长度
MAX_SEQ_LEN = 256 # 从 2048 大幅降低
DEVICE_BATCH_SIZE = 32 # 增加批量大小补偿
EVAL_TOKENS = 65536 # 大幅减少评估 token 数4. 使用低熵数据集
推荐 TinyStories 数据集,GPT-4 生成的短篇故事,语法简单,适合小模型学习。
运行实验的工作流
设置 AI 智能体
- 在
autoresearch目录启动 Claude Code 或你偏爱的 AI 工具 - 禁用所有权限(只允许读写文件,不允许执行危险命令)
- 发送启动提示
实验流程
1. 智能体阅读 program.md,理解基线指令
2. 智能体修改 train.py(如调整 DEPTH、换优化器、改架构)
3. 运行 5 分钟训练
4. 评估 val_bpb
5. 比较结果:改进则保留,退步则回滚
6. 重复步骤 2-5(约 12 次/小时,100 次/晚)查看结果
实验日志保存在本地 results.tsv(不提交到 git)。
设计哲学
1. 单一修改文件
AI 智能体只修改 train.py,确保:
- 范围可控
- Diff 可审查
- 人类能理解每次改变
2. 固定时间预算
5 分钟固定时长确保:
- 结果可直接比较(无论架构变化)
- 在你的特定硬件上找到最优配置
- 适合"通宵实验"场景
3. 自包含设计
无外部依赖,只有 PyTorch 和几个小包。无分布式训练、无复杂配置。适合研究和快速原型。
常见问题
Q1:AutoResearch 和 nanochat 是什么关系?
AutoResearch 基于 nanochat(Karpathy 的另一个简化版单 GPU LLM 训练实现)。nanochat 提供训练框架,AutoResearch 在此基础上添加了 AI 智能体自主实验的循环。
Q2:为什么只有 36 次提交却有 62k Stars?
62.1k Stars 主要反映 Andrej Karpathy 的影响力和"AI 自主科研"愿景的吸引力。AutoResearch 本质上是一个概念验证项目,代码故意保持极简,不需要频繁提交。
Q3:val_bpb 越低越好,什么算"足够好"?
这取决于你的基线。建议记录多次实验的 val_bpb 趋势,观察是否有持续下降。绝对数值因数据集和硬件而异,重点是相对改进。
Q4:AI 智能体修改什么?
只修改 train.py。GPT 模型架构、Muon + AdamW 优化器、训练循环、DEPTH/DIM/HEADS 等超参数都可以被改变。
Q5:如何引导 AI 的研究方向?
修改 program.md。这个文件定义 AI 智能体的基线指令和研究上下文。人类通过迭代修改这个文件来引导 AI。
Q6:结果和其他人能比较吗?
不能。因为训练时间固定为 5 分钟,不同硬件(H100 vs MacBook M3)产出的模型不可比较。这是有意设计,重点是在你的特定平台上找到最优配置。
总结
核心价值
| 价值 | 说明 |
|---|---|
| AI 自主科研 | 让 AI 智能体自主进行 LLM 训练实验 |
| 极简设计 | 三个文件,一目了然 |
| 公平比较 | 固定 5 分钟时间预算 |
| 平台适配 | 在你的硬件上找到最优配置 |
| 可扩展 | 易于移植到不同平台 |
适用场景
| 场景 | 说明 |
|---|---|
| 深夜实验 | 让 AI 自主运行,你睡觉时它工作 |
| 架构探索 | 快速测试不同模型架构 |
| 超参数搜索 | 系统性搜索最优超参数 |
| 平台优化 | 找到特定硬件上的最优配置 |
相关资源
文档版本 1.1 | 更新日期:2026-03-31 | Stars: 62.1k ⭐ | 基于 commit 228791f