组队
auto-research

模型自动化训练与超参优化

天才训练师,24 小时在线打工

LLMAgent模型训练实验管理SwanLabHarness

训练一个模型的过程,大部分时间并不花在写代码上。更多的时间花在:起一个实验,等它跑一会儿,观察 Loss 曲线,根据曲线的状态,改一下超参数再起一个实验,再等。跑完以后把几次结果放在一起比较,发现其中一次的评测集其实不一样,只能重来。这个循环很枯燥,但它并不简单。它需要读懂曲线、提出假设、控制变量、记住之前试过什么,以及在算力预算耗尽之前做出取舍。

今天的 Coding Agent 已经可以熟练地修改训练脚本、运行命令、读取日志。那么,这个循环能不能交给 Agent 来跑?

任务要求

本题希望你基于 Pi Agent、dsh 或任何你熟悉的 Agent Harness,构造一个用模型训练模型的框架:Agent 负责发起训练、观察训练过程、比较实验结果、调整超参数并继续探索,最终交付一个可用的 Harness 框架、一个训练好的模型,以及一份能说明“为什么是这个模型”的实验记录。

技术选型不限。Agent 可以使用云端或本地的大语言模型,但尺寸不应大于 35B。被训练的模型可以很小,任务可以很简单,建议选择一个单次训练能在几分钟到几十分钟内完成的任务,例如 CIFAR-10 上的小型卷积网络,U-Net 网络,或者 Qwen3-0.6B 级别模型在小数据集上的微调等。我们关注的是这个自动化研究循环本身是否成立。

算力可以使用自己的设备或者云端资源。如果有算力方面的需求,可以联系出题人提供昇腾算力下的 NPU(数量有限)。训练框架、数据处理、评测脚本等与题目重点关系不大的部分,可以直接使用成熟方案。

单人完成本题时,完成 Lv1 即可,Lv2、Lv3 不作要求。

Lv1:让训练能跑起来

Lv1 只要求一件事:证明 Agent 能独立完成“训练、观察、调整、再训练”的闭环。给定一个训练脚本和一组初始超参数,Agent 应该能够启动训练,在训练过程中或结束后读取指标,根据指标做出至少一处有依据的修改,然后启动下一轮训练。这个过程需要在没有人干预的情况下连续进行若干轮。“有依据”很重要。我们希望看到 Agent 的每一次修改都能对应到它观察到的某个现象:Loss 不下降、验证集指标开始回升、梯度爆炸、显存不足。随机搜索和网格搜索也可以作为工具,但不应该是 Agent 的全部行为。

同时,多轮实验之后,最容易出现的问题是混乱。哪次实验用了哪份数据?两条曲线能不能直接比较?某次结果变好是因为学习率,还是因为顺手改了 Batch Size?你需要设计一套实验记录与对比机制,让每一次训练都可以被追溯到它的完整配置、代码版本和数据版本,让任何两次实验之间的差异可以被明确列出。Agent 在决策时应该基于这些结构化的对比,而不是凭印象。对比的呈现方式不限。表格、曲线叠加、自动生成的实验报告都可以。

Lv1 结束时,你应该能够拿出一组连续实验的记录,说明 Agent 看到了什么、改了什么、结果如何。

Lv2:用多模态分析对比实验

模型“观察”的方式也不限于读序列化数字,图像往往会更加直观,尤其是现在多模态模型在快速发展,包括 Qwen3.5 及以后的版本,还有 DeepSeek 都增加了多模态能力。在底层模型能力加持下,现在 Agent 同样可以使用多模态模型直接阅读图表,从曲线的形态中发现纯数值统计不容易看出来的问题。要求 Agent 能看图并据此做出决策和分析。注意,你需要思考图表如何生成并有效嵌入上下文中,还需要考虑选择合适的降采样方式来确保图像可以更精准可靠的说明当前训练的情况。

同时可视化分析的能力不止于此。训练曲线里藏着很多信息,但大部分信息不会以“某个指标超过阈值”的形式出现。Loss 曲线上突然出现的尖峰,可能是一个坏的数据 Batch、一次学习率调度的跳变,或者数值不稳定。以固定周期出现的规律性抖动,可能来自数据加载的顺序、梯度累积的边界,或者评测与训练交替带来的干扰。验证集指标缓慢回升、训练与验证曲线的分叉、梯度范数的阶梯式变化,也都各自对应着不同的原因。你需要让 Agent 具备明确的异常提取与识别能力:从曲线中定位出尖峰、规律性抖动、平台期、发散等异常模式,说明它们出现在哪个 Step 或 Epoch,并进行归因分析。Agent 应该能够提出异常的可能原因,并进行探索,用证据缩小原因的范围。当证据不足以下结论时,Agent 应该说明还需要什么信息,或者设计一个能够区分不同原因的实验。

我们希望看到的是:模型可以有效读取到经过降采样限制的指标曲线,降低上下文占用同时增强模型分析能力;对于异常情况,可有效从曲线中发现,经过分析后变成一个有证据支撑的判断。

Lv3:从调参到研究

一个好的研究者不会漫无目的地调参。它会先形成假设,设计一个能验证假设的实验,然后根据结果更新自己的认识。我们希望 Agent 的探索过程也具有这种结构:在发起一次实验之前,说明它想验证什么;实验结束之后,说明结论是什么,以及这个结论如何影响下一步。这里的“说明”不是为了好看,而是为了让 Agent 的探索有记忆。它应该知道哪些方向已经试过、哪些假设已经被否定,从而避免在同一个地方反复打转。

算力是有限的。Agent 需要在给定的预算内工作,这涉及到更复杂的决策和管理,例如需要提前终止明显无望的实验、在多个候选方向之间分配资源、判断什么时候继续探索的边际收益已经不值得。你需要为 Agent 设计明确的停止条件,并且让它能解释自己为什么停下来。

重要评分项:防 Hack 要求

注意,有一个重要的评分项:请避免模型出现“Hack”的行为。当一个 Agent 的目标是“让指标变好”,它总会找到一些你不希望的方法。例如修改评测脚本、缩小验证集、直接在验证集上训练,或者把早停的判断标准改宽。这些行为在日志里看起来都是“指标提升了”。你的框架需要对此有所防范。哪些东西 Agent 可以改,哪些不可以改?评测是否应该在 Agent 无法触碰的位置运行?最终结果如何独立验证?

开放问题

  • Agent 应该在训练进行中就介入,还是等每一轮结束再决策?
  • 两次训练时长不同、随机种子不同,它们的结果应该如何比较?
  • Agent 从曲线中读出的“现象”,有多少是真实的,有多少是过度解读?
  • 人应该在什么时候介入?完全自动的研究循环是否一定比人机协作更好?
  • 如果 Agent 找到了一个效果很好但它自己也解释不了的配置,你会接受吗?

这些问题没有标准答案。我们更关心你如何定义问题、做出取舍,并解释自己的设计。


附录:参考资料

出题人:PEScn