AutoSFT:面向监督微调的自动化数据研究智能体系统 AutoSFT: An Agentic System for Automated Data Research in Supervised Fine-Tuning
多智能体分工让自动化SFT数据研究覆盖六类数据操作,IFEval较单智能体提升6.5分
前置知识
SFT(Supervised Fine-Tuning,监督微调)
在固定基座模型上用「指令-回答」成对数据继续训练的过程,训练目标是最小化负对数似然损失 $\mathcal{L} = -\sum_{i} \log p(y_i | x_i)$,即让模型模仿数据中的回答方式。与 RLHF 等偏好优化不同,SFT 只依赖显式数据集,「用什么数据训练」直接决定模型学到什么能力。
本文整个自动化研究环路搜索的唯一对象就是 SFT 数据配方,理解数据对 SFT 的决定性作用是读懂动机和实验设计的基石。
LLM 智能体与上下文压缩(compaction)
LLM 智能体通过「思考-行动-观察」循环执行长任务,所有推理历史和工具输出都要放入有限的上下文窗口(本文为 258,400 token)。窗口填满时系统会压缩早期历史,导致研究记忆丢失,这一过程称为 compaction。长任务中上下文管理质量直接决定智能体能否维持连贯的搜索策略。
论文的核心诊断之一就是单智能体上下文被执行日志填满、十轮搜索中被压缩 10 次,这直接催生了执行器子智能体的设计。
可验证指令遵循基准(IFEval / IFBench)
评估模型是否遵守显式指令约束的基准,如「逐字重复指令」「不使用逗号」「分三段回答」等,每条约束都有程序化判分器自动验证,打分客观可重复。本文实验以 IFEval 达到 80、IFBench 达到 50 为环路停止目标,并以 avg@10(重复评测十次取均值)压制评测噪声。
所有实验指标和合成数据的验证门都建立在可程序化验证的能力目标上,是理解结果分析和合成子智能体工作机制的前提。
数据配方与六族数据动作空间
数据配方 $R_t$ 定义本轮从候选池 $D_t$ 中选哪些样本、各占多大采样权重参与训练。本文把人类数据工程师的操作形式化为六族动作:调整配比、剪枝、修复、重标注(替换回答)、合成新样本、排序。动作类别可从配方 diff 事后客观标注,无需读智能体的自我陈述。
全文衡量「自动化系统覆盖了多宽的数据操作范围」都依赖这套六分类,它是评价单智能体塌缩现象和各组件贡献的统一标尺。
从头重训的消融归因协议
对比不同系统配置时,固定基座模型 $M_0$、初始池 $D_0$、token 预算、训练脚本和评测协议,且每轮训练都满足 $\mathrm{train}(M_0, R_t) \to C_t$——从基座重新开始。这样任意两轮的差异只能来自数据配方本身,新增组件的增益可被单独归因,不会混入累积训练的影响。
这是本文实验结论可信的关键设计,也是它与既有自动化数据工作(不重训或累积训练)的本质区别,读懂它才能判断各组件增益数字的含义。
研究动机
LLM 智能体已能自动化后训练流程,但 PostTrainBench 审计的 84 次智能体运行显示:给定完整训练栈的控制权后,几乎所有智能体都收敛到监督微调(SFT),并把剩余精力花在修改训练数据上。然而现有自动化数据系统只给智能体一种控制手段——要么从固定池中选行(如 TREX、AutoSelection),要么调用生成器合成(如 Autodata、ANDES),而人类数据工程师实际会做六类操作:调比例、剪枝、修复、重标注、合成、排序。作者先用单智能体(Codex 运行 GPT-5.5,Qwen3-1.7B-Base,IFEval/IFBench 目标 80/50)复现完整环路做试点:33 轮提交中每一轮都只做配比调整这一族动作,第 9 轮达到最佳后连续 23 轮无改进;10 小时时钟预算下每轮训练数据从峰值 264k 行缩水到 69k 行(仅为峰值的 26%);258,400 token 的上下文窗口被填满并压缩了 10 次,其中轮询任务状态被调用 371 次却只占累计字节的 1.7%,真正的空间被训练输出(13.4%)、重复读取运行记录(11.8%)、应用数据动作(9.7%)、评测输出(8.9%)等大块载荷占据。问题不是智能体不会做数据工程,而是单一会话的结构让它既做不出多样的动作、也留不住研究历史。
本文的目标是目标是构建一个能让自动化智能体行使完整数据动作空间(六族操作全部可达)的系统,并让每个组件的贡献可被单独归因。具体可量化:在指令跟随域,以 Qwen3-1.7B-Base 为固定基座、argilla/ifeval-like-data 为初始池,每轮最多 10M token、训练 3 个 epoch,使 IFEval 达到 80、IFBench 达到 50 的目标分数;在代码域,用 742,842 条 Python 指令-代码对(来自 OPC-SFT-Stage2、KodCode-v1-SFT-R1、Magicoder-OSS-Instruct-75K)在无现成能力分类的情况下让 MBPP+ 逼近 70。同时作者要求所有对比都在「每轮从基座重训」的协议下逐个添加组件(执行器、分析、合成),从而精确回答两个问题:自动化系统能否做出全部六类数据变更?做到这一点需要什么样的系统结构?
与已有工作不同的是,已有自动化数据优化工作分裂为两派:选择派(TREX 用 MCTS 搜索配方、AutoSelection 在固定池上做算子-程序搜索、DataChef 用代理奖励训练策略)与合成派(Autodata 依求解器反馈修订生成策略、ANDES 把合成封装为可调用技能、BigBang 规模化自进化合成),两者各只给智能体一种控制。本文抓住两个被忽视的点:其一,真正限制单智能体的不是任何单一动作不够强,而是结构缺陷——执行与分析争夺上下文、单一提案流不断强化近期选择,这从试点中 33 轮全部落入配比一族、22 种不同措辞表达同一动作的证据中得出;其二,现有系统的增益难以归因,因为缺少每轮从基座重训的对照协议。AutoSFT 因此同时统一选择与合成两类控制,并用逐个加组件的消融把增益分别钉到具体组件上(分析 +6.5 IFEval、合成 +3.4 IFEval / +2.9 IFBench、代码域分析 +3.7 MBPP+)。
核心方法
直觉上,AutoSFT 把一个手忙脚乱的单兵研究员改造成分工明确的研究小组:主智能体(meta agent)是把握方向的 PI,执行器子智能体是跑实验的工程助理,四个分析子智能体是各看一份证据的评审,合成子智能体是能为缺失能力补写教材的作者。技术上,整个系统实现为一个研究策略 $\pi$:固定基座 $M_0$ 与初始池 $D_0$,第 $t$ 轮的数据配方 $R_t$ 给池中每个样本一个采样权重(可为零),训练满足 $\mathrm{train}(M_0, R_t) \to C_t$,评测在固定协议下返回分数、逐样本失败、训练动态与历史对比构成的反馈 $F_t$;随后策略产出数据动作 $a_t = \pi(D_t, R_t, F_t, H_{<t})$,满足 $R_{t+1} = a_t(R_t)$,其中 $H_{<t}$ 保存此前所有轮次的配方、反馈与动作,池与配方是仅有的跨轮携带研究历史的量。每轮 token 预算固定、每轮都从基座重训,因此任意两轮只差在训练了哪些行,六族数据动作可从配方 diff 事后客观标注,不依赖智能体的自我报告。
核心创新是「结构决定覆盖面」这一论断及其实现。试点研究证明单智能体并不缺少表达能力(它用 22 种措辞反复说同一件事),而是两个结构性缺陷:执行与数据分析共用一个上下文,训练输出等大块载荷挤占决策信息、历史被压缩 10 次;单一提案流让模型不断强化最近的选择,33 轮全部陷入配比一族。AutoSFT 的对症设计有三点。第一,执行器子智能体把提交、监控、检查点转换、评测的整个生命周期搬进独立会话,原始日志留在本地,只向主智能体返回工件路径与简报,使上下文压缩从 10 次降到 5 次。第二,四个分析子智能体分别从训练数据、失败案例、学习动态、研究历史四个互补角度各提一条可执行提案,把动作分布从 100% 配比拓宽到修复+重标注合计占 55%。第三,合成子智能体针对池中供给不足的能力目标(单个可程序验证的约束或其组合)生成新样本,经验证器、语义审查、n-gram 去污三道门后入池。这与既有系统「只给一种控制」的本质区别在于:智能体第一次可以同时做出人类数据工程师的全套六类变更。
方法步骤详情
每轮流程如下。第一步,主智能体接收池 $D_t$、配方 $R_t$、反馈 $F_t$ 与历史 $H_{<t}$,把 $D_t$ 和 $R_t$ 交给执行器。第二步,执行器在独立会话中运行「提交-监控-收集」循环:先跑训练任务(3 个 epoch、固定 token 预算、序列长 32,768、学习率 $10^{-4}$、全局批 16)得到本轮模型 $C_t$,再做检查点转换,然后对 $K$ 个基准逐个评测;原始日志与中间输出留在自己上下文中,最后把反馈工件和结构化执行报告存盘,只返回路径与简报。第三步,四个分析子智能体按需读取文件:数据子智能体评估所选数据的质量、难度、覆盖与冗余并在预算内提议内容或构成变更;失败案例子智能体对比成败样本找出重复出现的失败模式并提议针对性监督;学习动态子智能体分析训练损失等信号与所用数据的关系,寻找学习停滞的证据;历史子智能体区分已证伪的干预和未充分测试的想法,各返回一条带证据的可执行提案。第四步,合成子智能体读取评测结果,导出供给不足的能力目标,为每个目标生成通过程序验证器、独立语义审查和与评测集 n-gram 去重三道检查的样本,合格者进入 $D_{t+1}$,是否用于训练仍由主智能体决定。第五步,主智能体权衡各提案与自己阅读的证据,定出动作 $a_t$ 并构造 $R_{t+1}$,如此往复直至达标,全程共享技能库与记忆。
技术新颖性
与最近邻工作的区别体现在三个层面。范围上,TREX、AutoSelection、DataChef 只做池内选择,Autodata、ANDES、BigBang 只做合成,AutoSFT 首次把六族数据动作(含修复、重标注这类「编辑已有行」的操作)统一交给智能体,且配方以自由形式书写、无字段模式与算子列表约束,动作类别由配方 diff 事后标注。组织上,Anthropic 自动化研究员用多样初始方向保持并行智能体的多样性,本文继承这一思想但把多样性用在「同一轮的多视角证据」而非不同起点的假设树上。协议上,本文要求每轮从基座重训、重复评测(avg@10/avg@3)压制噪声、合成数据过验证门并与评测集做 n-gram 去污,这使每个组件的增益(分析 +6.5 IFEval、合成 +3.4 IFEval/+2.9 IFBench)可单独归因;而 Luo 等人的纯数据迭代在 8-15 轮后即平台化,且无此类对照。此外,代码域实验表明当没有现成能力分类时,系统能仅凭基准与池自建能力结构,验证了框架不依赖领域先验。
实验结果
四个消融实验逐一定量确认了各组件价值。执行器消融:在相同的 11.5 小时窗口内,基线单智能体上下文压缩 10 次,加执行器后降为 5 次;主智能体记录事件中 shell 命令占比从 58% 降到 29%(剩余约三分之一是对执行器的委派),基线还发出 268 次任务状态查询、占其命令的 23.0%。分析子智能体消融(3M token 预算、IFEval avg@10):分析配置第 6 轮即达 63.33,超过基线 50 轮内的最佳 62.35,第 30 轮达 67.10,而基线前 30 轮最佳仅 60.60——等轮次领先 6.50 分,让基线多跑 20 轮仍领先 4.75 分;动作分布上修复+重标注合计占 55%,基线仍 100% 停在配比族;按验证集选数据的动作有 41.7% 的使用创下新最佳,同时编辑指令与回答的 14 次使用中 6 次创新最佳。合成子智能体消融(100M token 预算):最佳 IFEval 81.58 对基线 78.15(+3.43),IFBench 51.95 对 49.02(+2.93),并首次越过 80/50 的停止目标;能力级分析显示 repeat_prompt 前 8 轮卡在约 40%,第 9 轮补数据后当轮升至 75.6%,但 odd_even_syllables 连续 3 轮被定向补数据仍每轮 0 分,说明数据供给不能替代模型尚不具备的能力。代码域迁移(MBPP+,64 小时,742,842 行池):单智能体基线无持续改进,加分析后第 13 轮达 64.81%,再加合成在第 6 轮即达 65.78%,分析组件带来 +3.7 MBPP+,证明该结构可迁移到无现成能力分类的领域。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 指令跟随(分析子智能体消融,前 30 轮对比) | IFEval (avg@10) | 67.10(Base+Analysis,第 30 轮;第 6 轮已达 63.33) | 60.60(Base 前 30 轮最佳)/ 62.35(Base 50 轮最佳) | +6.50(等轮次)/ +4.75(基线多跑 20 轮后仍领先) |
| 指令跟随(合成子智能体消融) | IFEval 最佳值 (avg@10) | 81.58(Base+Synthesis) | 78.15(Base) | +3.43 |
| 指令跟随(合成子智能体消融) | IFBench 最佳值 | 51.95(Base+Synthesis) | 49.02(Base) | +2.93 |
| 代码生成(域迁移实验,64 小时) | MBPP+ (avg@3) | 65.78%(Base+Analysis+Synthesis,第 6 轮即达);64.81%(Base+Analysis,第 13 轮) | 61.11%(Base 单智能体,无持续改进) | 分析组件 +3.7;加合成后以更少轮数超越 |
局限与改进
作者承认的局限:合成增益不均匀,odd_even_syllables 连续三轮定向补数据仍为 0 分,说明对模型尚不具备的约束仅靠增加供给无效;排序动作因 SFT 固定了 shuffle 种子而从未被真正行使,六族动作中实际覆盖仍不全;以基准分数为优化目标可能过拟合排行榜(他们用 off-target 基准与 n-gram 去污缓解并保持透明);附录 D 报告的算力与 API 成本可观。我自己的观察:所有结论建立在 Qwen3-1.7B-Base 这一小基座上,上下文管理策略与多智能体开销的收益是否随模型规模和上下文长度变化未知;单智能体基线使用 medium 推理档,未提供「显式列出六族动作菜单」的强提示基线,无法完全排除更好的提示工程即可缓解动作塌缩的可能;代码域中加合成的配置只完成 6 轮(对比基线的 15 轮),轮数不等使峰值比较对评测噪声更敏感;策略依赖 GPT-5.5 这类闭源 API,其非确定性与版本漂移也给结果复现带来额外方差。
独立分析的弱点
第一,归因协议依赖闭源 API 的跨轮一致性:GPT-5.5 的采样非确定性意味着同一配置重跑可能得到不同的动作分布,单次运行的组件增益(如 +6.5 IFEval)缺少方差估计,改进方向是每配置重复多次或改用开源模型做策略并报告置信区间。第二,合成子智能体的能力目标必须是可程序化验证的约束,这在指令跟随和代码中成立,但对开放式对话、安全性、文风等缺乏判分器的领域失效,改进方向是引入基于评分细则的 LLM 评审或多判分器投票作为软验证门。第三,每轮从基座重训的计算代价随预算线性增长(代码域 100M token、64 小时),对资源受限团队不友好,改进方向是用代理小模型做配方初筛、只在候选配方上全量重训,或从早期检查点分支以复用前段训练。第四,主智能体与子智能体之间只靠文件路径传递信息,分析质量受限于子智能体读文件的主动性,可能出现关键失败模式无人认领,改进方向是加入主智能体对证据覆盖完整性的核查清单。第五,试点中时间预算导致每轮数据缩水到峰值的 26%,说明目标函数设计对行为影响巨大,而本文只在两种目标间切换,缺少对目标函数本身(如引入效率惩罚、轮间预算约束)的系统性消融。
未来方向
作者提出或暗示的方向:将发布完整实现(训练/评测脚本与智能体脚手架)与逐轮运行台账;把同一环路推广到更多域,代码域已验证无现成分类时可自建能力结构;持续报告 off-target 与 held-out 基准以监测目标过拟合。基于成果可延伸的方向:把六族动作空间映射到偏好数据(RLHF/DPO)的整理上,覆盖偏好对筛选、响应重写、成对合成等对应操作;在策略中引入显式的探索-利用调度,减少历史子智能体之外仍可能出现的重复尝试;把从基座重训替换为低秩适配或早期分支训练,在保留归因性的同时把每轮成本降低一个量级;研究动作覆盖度与最终分数的相关性,把「六族覆盖率」发展成自动化数据研究的通用评估指标;以及扩展到多目标场景(多个基准同时达标),检验主智能体提案加权机制的可扩展性。
复现评估
复现条件中等偏上。代码方面,作者承诺随论文发布匿名补充材料(含训练/评测脚本与智能体脚手架),给出 GitHub 链接 Thinking-Space/AutoSFT,角色定义、提示词与技能文件在附录 B 有完整描述。数据全部公开:argilla/ifeval-like-data、MBPP+、OPC-SFT-Stage2、KodCode-v1-SFT-R1、Magicoder-OSS-Instruct-75K 均可在 HuggingFace 获取。算力方面需要单张 H100:指令跟随域一次运行约 11.5 小时(33 轮),代码域约 64 小时(15 轮);策略模型依赖 GPT-5.5(medium 推理档)的 API 调用,附录 D 给出了成本估算,这是持续开销且带非确定性。训练协议已完全固定并写入正文:3 个 epoch、序列长 32,768(代码域 8,192)、学习率 $10^{-4}$、全局批 16、每轮 token 预算与停止目标(IFEval 80 / IFBench 50 / MBPP+ 70),每轮配方与原始评测输出记录在运行台账中。主要风险在闭源 API 行为漂移和数十小时任务监控,建议先在小预算(3M token)下复现分析消融以验证整条流水线。
论文图表
左图画出试点研究中单智能体 32 轮的 IFEval 与 IFBench 分数(第 9 轮最佳后持续平庸),右图用词云展示智能体描述动作的 22 种不同措辞(如 reweight、raise、concentrate),尺寸按使用频率。
这是「单智能体塌缩」诊断的核心证据:措辞多样但动作单一,直观证明问题不在表达能力而在结构,是论文动机部分最关键的一张图。
展示 10 小时时钟预算下单智能体每轮提交的训练数据量:前 4 轮扩张至峰值 264k 行(R4),之后逐轮缩减至 69k 行(峰值的 26%),而轮次提交并未停止。
揭示了时钟预算目标函数的扭曲效应——智能体通过缩水数据省出时间换更多尝试次数,论证了本文改用基准分数目标的必要性,是试点三个失败模式之一。
按时间展示单智能体 258,400 token 上下文的占用曲线,虚线标出 10 次压缩发生的轮次(首次在第 2 轮,之后每 3-4 轮一次),上下文反复填满至 94.7%。
直观呈现「研究历史被丢弃重建十次」的失败模式,并配合正文的空间分解(推理 16.3%、训练输出 13.4% 等)说明执行载荷挤占分析空间,直接导出执行器分离的设计要求。