用专家智能体实现自动研究:开发有效且非平凡的训练配方 Auto Research with Specialist Agents Develops Effective and Non-Trivial Training Recipes
多专家Agent闭环迭代,实测改进三套公开训练配方。
前置知识
训练配方 (Training Recipe)
指训练一个神经网络所需的完整配置集合,包括架构、数据配比、优化器、学习率调度、损失函数、正则化、量化以及推理/系统实现等。配方的修改空间巨大,涉及诸多相互耦合的子模块。
本文把整个Python训练管线当作编辑对象,而不是只调几个超参数,读者必须先理解训练配方是多面、可代码化、可被外部评估的实体。
外部评估器 (External Evaluator)
由任务环境拥有、不可被编辑代码改写的打分/计时/合法性检查模块。它决定一次提交trial是否合法、得多少分、是否超时,以防止reward hacking(例如打印伪造分数或自报时间)。
本文整个闭环成立的前提就是评估器由环境持有、配方不能改写,这是与一锤子LLM生成研究代码的根本区别。
Lineage(共享血统记录)
跨多个trial积累的提案、代码diff、分数、状态、运行时长、崩溃原因等结构化日志,作为下一次提案Agent的prompt上下文。Lineage让后续Agent能够基于已观测事实而不是凭空猜测继续做研究。
论文核心消融(no-lineage)证明共享血统是把失败转成下一轮编辑的关键机制,理解Lineage是看懂实验设计的前提。
角色分工 (Specialist Roles)
把可编辑的训练配方表面按子模块划分给不同的LLM Agent,例如架构、优化、数据、调度、系统等,各角色拿到相同指标但不同的recipe-surface prompt,从而覆盖更广的提案空间。
这是论文对抗'单点反复拧同一颗螺丝'的设计,与generic多Agent对比实验直接对应。
研究动机
现有的自动机器学习研究(MLAgentBench、MLGym-Bench、AI Scientist等)大多把'Auto Research'当成一次性的LLM生成结果:Agent写一段训练代码、跑一次、报个分数、然后就停了。这种模式有三个具体痛点:第一,改进往往来自超参数微调而不是程序级修改,MLGym-Bench已经观察到这一点;第二,失败(崩溃、超时、撞规模上限、没过精度门槛)被当作废件丢弃,而不是当作下一轮编辑的反馈;第三,Agent无法在多次提交间积累可审计的轨迹,人类难以复核究竟改了什么、为什么有效。作者在Parameter Golf上看到一种典型场景:某个z-loss想法能把验证bpb从1.0810降到1.072431,但产物超过16 MB的artifact cap而被拒,这种'既有用又超规格'的反馈在单轮系统里彻底浪费。
本文的目标是把Auto Research重新定义成一个可审计的闭环实证轨迹:外部评估器负责打分与合法性检查,一组专家Agent在共享lineage的引导下反复提交trial,把成功与失败一起当成下一次代码编辑的依据,人只在setup阶段介入,搜索过程中不挑proposal、不改recipe、不override分数、不修复失败run。最终目标是在Parameter Golf、NanoChat-D12、CIFAR-10 Airbench96三个公开的、计算受限的训练任务上,用同一个闭环自动提升固定起点配方,跑出真实的、可复现的训练产物。
与已有工作不同的是,本文切入角度有三层独特性:第一,研究对象从'生成一篇论文或一个checkpoint'换成'一段可审计的proposal→diff→score→feedback轨迹',并把这条轨迹本身作为发布物;第二,反馈通道显式包含crash、size-block、budget overrun、accuracy-gate miss四类失败信号,并证明这些信号能让Agent做出程序级(而非scalar)的后续修改;第三,通过200-trial匹配窗口的role-swarm、generic-10、single generalist、no-lineage四组对照,把'谁贡献了什么'拆清楚——结论是shared lineage才是关键机制,role partitioning提供边界纪律和多样性。
核心方法
方法直觉上像把一个博士生团队扔进GPU集群:每个Agent是一个角色(架构/优化/数据/调度/系统),它们共用一块blackboard写下历史trial,任何一次trial被外部评估器打分后立刻回流成下一次提案的上下文。技术路线由四层组成:第一层是任务环境(Parameter Golf、NanoChat-D12、CIFAR-10 Airbench96),固化可编辑文件、评分字段与合法性规则;第二层是submitted-trial循环,每个trial=假设+可执行diff+外部结果+失败摘要;第三层是specialist角色+共享lineage,lineage选择性喂入当前最优行、本角色近行、相邻角色近行;第四层是并行迭代,通过$\tau_e = \tau_e^{run}+\tau_e^{eval}+\tau_e^{queue}+\tau_e^{log}$建模吞吐,在Parameter Golf上10个specialist实测18.15 trials/hour,相对理想10×有$\eta_{\parallel,PG}\approx 0.80$的效率。
核心创新点是把'自动研究'从单次生成变成审计友好的实证闭环,并显式区分两种机制——shared lineage负责把已测事实传递到下次编辑,role partitioning负责让提案流不集中。论文的no-lineage消融跑200个trial只找到3个有效改进(best 1.077413,125次撞eval预算上限),而lineage-on的role swarm在相同窗口找到16个有效改进(best 1.073142),且specialist贡献keep数从8/10跌到2/10,说明lineage是让失败反馈转成程序级修改的主动研究状态,而不是被动的log文件。
方法步骤详情
执行流分五步:(1)任务固化与校准,Parameter Golf固定FineWeb切片+16 MB cap+10 min/8×H100;NanoChat-D12校准d12到CORE 0.1618;CIFAR-10校准到26.3560 s,提前备好tokenizer和shards避免trial联网。(2)Agent会话是有tool-turn cap的LLM SDK调用,启动收到fresh lineage,可能提交多trial后终止。(3)trial执行:读lineage→提假设→改recipe→调harness提交。(4)外部评估器独立打分并分配status(valid/budget_overrun/crash/size_block/disqualified),recipe不可改写以防reward hacking。(5)结果回写lineage,下次prompt挑compact slice(最优行+本角色近行+相邻角色近行);匹配200-trial窗口实测role swarm 18.15/h、generic-10 16.79/h、single 2.26/h。
技术新颖性
技术新颖性体现在三方面:第一,把评估器-不可改写的约束显式建模为可复用的harness,而不是单点prompt,从而把reward hacking面缩到接近零;第二,lineage的selective slice机制(current-best+per-role+neighbor)兼顾前沿保留和失败可见性,比全文重放更省token也比单行best score信息更密;第三,在Parameter Golf上做了role swarm vs generic-10 vs single vs no-lineage四组匹配对照,用$\eta_{\parallel}$把组织差异和吞吐差异解耦——前者贡献提案多样性和边界纪律(generic-10只有41.1 effective clusters,role swarm有134.8),后者在匹配窗口几乎相同,说明改进主要来自lineage反馈,而不是'人多力量大'。
实验结果
主实验跑1197 headline-trial(PG 900+NC 200+CIFAR 97)再加600对照trial,全程人类不挑提案、不改recipe。Parameter Golf:角色群从公开起点1.0810降到1.07221(-0.81%);匹配200-trial窗口role swarm到1.073142(16 drops),no-lineage仅3 drops停在1.077413(125次撞eval预算)。NanoChat-D12:calibrated起点0.1618 CORE,角色群达0.2244(+38.7%);关键trial 007把SSSL注意力路径换成L并把12层搬上Flash SDPA省出wallclock,trial 020用省出预算拉token预算拿到+0.0334 CORE跳,trial 025/156锁在0.2241/0.2244。CIFAR-10 Airbench96:从26.3560 s降到25.1464 s(-4.59%),accuracy gate≥0.96始终满足;架构域严格审计识别157/1197 trial(13.1%)属于架构域改动。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| Parameter Golf (FineWeb val_bpb, 越低越好) | validation bits per byte (val_bpb) | 1.07221 (900-trial角色群完整跑) | 1.0810 (OpenAI public starting recipe) | -0.81% 相对起点;同期 single generalist 只到 1.075384 (-0.52%), no-lineage 到 1.077413 (-0.33%) |
| NanoChat-D12 (固定预算pretraining) | CORE score (DCAR-LM, 越高越好) | 0.2244 (200-trial角色群) | 0.1618 (calibrated upstream d12 at pinned commit) | +38.7% 相对校准起点 |
| CIFAR-10 Airbench96 (精度门槛≥0.96下的训练时长) | shell-measured wallclock (秒) | 25.1464 s (97-trial角色群) | 26.3560 s (calibrated upstream Airbench96, 10-seed cold-process) | -4.59% wallclock reduction, 同时精度门≥0.96 始终满足 |
| Parameter Golf 对照 (200-trial匹配窗口) | val_bpb / valid drops / effective clusters | Role swarm 1.073142, 16 drops, 134.8 eff. clusters | Generic-10: 1.074495/10 drops/41.1; Single: 1.075384/14 drops/61.9; No-lineage: 1.077413/3 drops/121.7 | Lineage feedback使valid drops从3涨到16(5.3×),parent tree从3 active heads扩到15,specialist贡献keep从2/10涨到8/10 |
局限与改进
作者明确承认的局限有两点:第一,本文的闭环最适合失败能被自动验证、per-trial成本受控、结果能即时回来的环境,不适合主观或不可自动验证的开放问题;第二,论文观察到的是'组合现有已知技术',没有产生像原始Transformer那样的范式级架构发明,架构域trial占157/1197(13.1%)是保守下限,sys/opt/loss角色也常做程序级编辑(如NanoChat attention-kernel path rewrite)。基于我自己的观察:评测集局限于Parameter Golf/NanoChat-D12/CIFAR-10三个相对受控的环境,这些环境的反馈信号已经被人为结构化成(bpb, CORE, s)这种scalar,如果换到NLP开放式benchmark或RL任务,evaluator设计本身就是开放问题;另外角色分工的taxonomy是事先固化好的,文章没有给出taxonomy自动选择或演化的机制,如果换到未知任务需要重新设计;最后整个实验依赖8×H100级别GPU与几百小时机时,即便每个trial便宜,但总开销门槛对普通研究者来说仍然显著。
独立分析的弱点
独立分析三处可改进点。第一,共享lineage目前是selective slice,但具体'挑哪几行、怎么neighbor'靠手工启发式,在trial 587→596这种size-block→keep的转化中能work,但当评估预算上限和artifact cap同时压顶时,有可能把Agent引导进局部最优;改进方向是引入lineage摘要模型或显式的'失败类型→修复模板'索引。第二,角色taxonomy是每个run预先固化的,Parameter Golf用10个角色、NanoChat用5个、CIFAR用5个,如果未来任务结构变化,需要重新设计prompt且没有自动验证机制,改进方向是让角色数量与边界通过小规模calibration自动选择。第三,论文主要指标是end-of-run分数,但缺少对轨迹稳定性的统计检验,800 trial的no-lineage和lineage对比只用一组运行,改进方向是多次随机种子下复现parent-tree breadth等指标并报告置信区间,这样对'lineage是关键机制'的因果论断会更强。
未来方向
作者提出的未来方向包括:把闭环扩展到图像、语音、强化学习等其他计算受限的recipe任务,只要trial便宜且外部可验证即可;用更长(数周连续GPU时间)的run和Eq.(1)的并行模型去研究跨角色组合是否会涌现;更强的未来Agent可能提出范式级想法,同一evaluator-driven闭环可以测量它们是否站得住;开放trace也支持追溯性的人vs Agent比较。本人可延伸的方向有四点:第一,把lineage从纯文本扩成结构化经验库(类似case-based reasoning),让Agent跨run重用;第二,把Evaluator本身变成可配置组件,研究evaluator严格程度对Agent改进幅度的影响;第三,尝试把角色taxonomy与LLM fine-tune结合,让specialist变成领域微调模型而不是prompt角色;第四,把no-lineage反例的'3 drops / 125 crash'模式与奖励欠塑形联系起来,设计一种训练阶段的'lineage-pretraining'目标。
复现评估
GitHub仓库https://github.com/cxcscmu/Auto-Research-Recipes已发布harness、prompt templates、static knowledge files、specialist taxonomy和最终recipes,所有trial记录含proposal summary、code-diff summary、measured score、status label、timing record、failure summary,不依赖私有模型状态,可独立审计。算力方面:PG用8×H100跑10 min/trial,900-trial headline run加600对照trial合计数千卡时;NC每次跑完整d12 pretraining预算可观;CIFAR-10每trial单卡26 s级别相对便宜。复现难度主要不在代码而在算力门槛,且PG的public starting recipe(1.0810)与naive reference(1.2244)是独立baseline,论文用前者作分母,复现者需对齐。
论文图表