让 AI 在你睡觉时做研究:autoresearch 的设计哲学
Andrej Karpathy 最近发布的 autoresearch 仓库在机器学习社区引发了关注。表面上看,这是一个自动搜索 Transformer 最优超参和架构的工具,但从系统设计视角来看,它更像是一个关于"如何设计真正自主的 Agent 系统"的完整示范。 大多数 AI Agent 开发者仍受困于"如何让 LLM 稳定执行复杂任务"的泥潭,而 autoresearch 通过极其克制的代码结构,回答了 Agent 自主性的三个核心问题:目标如何定义、边界如何划定、反馈如何保证客观。 这个系统仅由三个核心文件支撑:prepare.py、train.py 和 program.md。这种三层分离的架构,而非复杂的框架嵌套,才是其设计哲学的精髓。 三文件架构:冻结层、可变层与元层 在 autoresearch 中,Agent 的操作空间被严格限定。 prepare.py(冻结层):定义评估标准、数据集和强制性的时间预算,Agent 无权修改。这确保了实验的基座稳固,Agent 无法通过修改数据或放宽测试标准来"作弊"。 train.py(可变层):这是 Agent 唯一的操作对象。Agent 通过读取、修改并运行这个文件来验证自己的猜想。 program.md(元层):人类写给 Agent 的"系统宪法"。它不包含具体的编程步骤,而是规定了运行逻辑、错误处理策略、结果记录格式以及"永不停止"的指令。 这种三层设计让 Agent 拥有了在受控环境下的完全自主权。它不需要询问用户"下一步做什么",因为它在宪法约束下,在冻结层基准上,不断迭代可变层。 固定预算:从限制到设计 autoresearch 强制要求每个实验只能运行 5 分钟。在追求极致性能的 ML 领域,这看起来像是妥协,实则是高明的设计。 固定时间预算提供了绝对公平的比较前提。无论 Agent 把模型改得更深还是更宽,引入了怎样的优化算法,性能提升必须在 5 分钟内体现。这迫使 Agent 寻找的是"计算效率最优解",而非堆砌算力的暴力解。 系统采用 val_bpb(验证集每字节位数)作为评价指标,与词表大小和分词方式无关。这保证了评估函数不可被 Agent 通过架构选择来"游戏化"。有了客观且难以作弊的反馈,Agent 的 keep/discard 决策才具备可信赖的意义。 Agent 发现了什么:时间约束下的帕累托最优 MLX 社区(Apple Silicon 移植版)的公开实验结果很能说明问题。Agent 将默认的 8 层深度砍到 4 层,val_bpb 从 2.667 降到了 1.808,单次实验降幅接近 28%。 ...