当合成数据这件事,被做成了一个"会自我进化的数据科学家"
合成数据现在已经是大模型训练绕不开的一环了。但你有没有想过一个问题——我们造合成数据的方式,其实一直停留在"一锤子买卖"上。
写个 prompt,让模型 few-shot 生成一批数据,过滤一下,扔进训练。完事。
这套流程从 Self-Instruct 那篇论文开始,几乎没怎么变过。中间加了 grounding(给点文档防幻觉)、加了 CoT(让生成更复杂)、加了 filtering(事后筛掉烂的),但骨架还是那个骨架:生成→过滤,单向的,一次性的。
可真正的数据科学家不是这么干活的。一个人类数据科学家造数据,是会先造一批、然后盯着数据看("eyeball"一下)、跑个实验测测效果、总结出"哦原来这类样本太简单了"、再回去调配方重造的。这是个带反馈的迭代循环。
Meta FAIR 这篇 Autodata 干的就是这件事——把"造数据"这个动作,整个塞进一个 agent 的迭代循环里,让 AI agent 真的像个数据科学家一样工作。更狠的是,它还能把这个数据科学家 agent 本身再训练一遍,让它越来越会造数据。
论文地址:https://arxiv.org/abs/2606.25996(arXiv:2606.25996,FAIR at Meta,作者阵容里有 Jason Weston、Sainbayar Sukhbaatar 这些熟面孔)。
🎯 一句话核心
Autodata 把合成数据生成从"一次性生成+过滤"升级成了一个带分析反馈的迭代循环:一个主 agent 指挥 challenger 出题、weak/strong 两个 solver 去做题、judge 来评判,根据"强模型能做对、弱模型做不出来"这个信号反复调整题目难度,直到题目"恰到好处"。在 CS 研究、法律推理、数学推理三个领域上,用它造的数据做 RL 训练都打过了经典方法;更关键的是,连这个数据科学家 agent 自己都能被 meta-optimize——验证通过率从 62.1% 自动爬到了 79.6%,全程没人手写 prompt。
我读完最大的感受是:这篇论文真正值钱的地方,不在于某个炫技的算法,而在于它把一个朴素但被忽略的直觉给系统化了——造数据应该是个迭代过程,而且这个迭代过程本身也该被优化。这个 framing 比具体实现更重要。
📖 为什么需要它?现有方法卡在哪
先把脉络捋一下,不然你不知道这篇在跟谁较劲。
合成数据这条线大概是这么演进的:
| 方法 | 核心做法 | 局限 |
|---|---|---|
| Self-Instruct (2023) | zero/few-shot prompt 让模型自己造指令数据 | 质量难控,容易重复 |
| Grounded Self-Instruct (2024-25) | 接地到文档等真实来源 | 减少幻觉,但难度仍不可控 |
| CoT Self-Instruct (2025) | 生成时用思维链构造更复杂任务 | 难度还是靠运气 |
| Self-Challenging (2025) | challenger agent 出题前先跟工具交互 | 单向,没有"看数据再改"的回路 |
发现共同的毛病没有?它们都不直接控制数据的难度和质量。 所以才衍生出一堆事后补救的招数——过滤、进化、精炼。但这些都是"生成完了再补救",而不是"生成的时候就盯着质量调"。
说实话,这个痛点我自己在做训练数据的时候深有体会。你 batch 生成一万条数据,跑完才发现有 30% 太简单(模型本来就会,训练它白费梯度)、20% 太难(模型怎么都做不对,RL 拿不到正奖励信号)。然后你只能事后过滤,扔掉一半。整个过程里没有任何一个环节在生成阶段就告诉你"这条难度不对"。
Autodata 的切入点就在这。它说:别造完再补救了,把"看数据→分析→改配方"这个回路直接嵌进生成过程。
🏗️ Autodata 框架:把数据科学家的工作流程拆开
整体框架长这样(论文 Figure 1):

图1:Autodata 的整体循环。内循环是数据科学家 agent 在"数据创建"和"数据分析"两个阶段之间反复横跳,直到数据质量满意;外循环(meta-optimization)则是把这个 agent 本身当作优化对象,让它越来越会造数据。
拆成几块看:
数据创建(Data Creation):agent 基于给定的源材料(数学题、法律文书、CS 论文等)造数据,可以调工具、用之前积累的经验、花推理时计算去构造训练或评估样本。
数据分析(Data Analysis):agent 回头审视自己造的数据——这条样本对不对?质量高不高?够不够难?从数据集层面看,样本够不够多样?拿去训练真能提升模型吗?这些分析结果会反馈给创建阶段。
整体循环(Data Scientist Loop):在创建和分析之间循环,直到满意,最后吐出训练集或基准。外循环还能加护栏防 agent 作弊。
Meta-Optimization:这是最有意思的部分——agent 本身也能被优化。用 autoresearch / meta-harness 那一套思路,用同样的内循环标准(造出更好的数据)去指导外循环(优化 agent 自己)。
这个"内循环造数据、外循环造数据科学家"的双层结构,是这篇论文的骨架。
🔧 Agentic Self-Instruct:四个子 agent 的分工博弈
框架是抽象的,论文给了个具体落地实现叫 Agentic Self-Instruct。主编排器 agent 手底下管着四个 LLM 子 agent(论文 Figure 2):

图2:Weak-vs-strong 的 Agentic Self-Instruct。主 LLM agent 指挥四个子 agent:challenger 出题、weak 和 strong 两个 solver 各自尝试、judge 评判它们的输出。系统的目标是造出"strong 能做对、weak 会卡住"的题。主 agent 根据 judge 的反馈分析数据、更新 challenger 的 prompt,然后重复整个循环。
四个角色:
| 子 Agent | 干啥的 |
|---|---|
| Challenger | 根据主 agent 的详细指令造训练样本 |
| Weak solver | 一个相对弱的模型,预期通常做不出来 |
| Strong solver | 一个强模型,预期通常能做对 |
| Verifier / judge | 检查样本质量,把经验反馈给主 agent |
核心逻辑特别朴素,但很聪明:好的训练题,应该是 strong solver 能做对、weak solver 做不出来的那种。
为什么?你想想看——如果一道题 weak solver 都能轻松搞定,那拿它训练 weak solver 就是浪费,没有学习信号;反过来如果连 strong solver 都做不对,那这题大概率是错的或者没法做,RL 拿不到正奖励。只有那个"强能做对、弱卡住"的难度窗口,才是真正能让模型往上爬的台阶。
接受标准也是围绕这个来的: - 可验证任务:要求 strong solver 多数投票正确,weak solver 多数投票错误 - 不可验证任务:要求 judge 测出来的质量存在 gap,让题对 weak 既不太简单也不太难,strong 来兜底保证题本身是对的
有个细节挺巧:weak 和 strong solver 其实可以是同一个模型的不同模式——strong 版本多给点推理时计算、加点 scaffolding 或聚合、给点特权信息,就成了"强"的那个。
🧪 实验一:CS 研究问题——题目太简单的病
第一个战场是用 CS 学术论文造研究问题。这类问题是开放式的,得用 rubric(评分细则)来打分。
模型配置很有意思,是个混搭: - 主 agent + challenger:Kimi-K2.6 - Strong solver:Qwen3.5-397B-A17B - Weak solver:Qwen3.5-4B
接受标准卡得很死:strong solver 平均分 ≥ 0.65、weak solver < 0.5、两者差距 ≥ 20 个百分点。
数据规模:处理 S2ORC 语料里 2022 年后的 1 万多篇 CS 论文,Agentic Self-Instruct 造出 2.8k 个被接受的样本,过质量 verifier 后留 1.3k 高质量样本做 RL。CoT Self-Instruct 基线也走同样的过滤、采同样的 1.3k,公平对比。
先看造出来的数据质量本身(Table 1):
| 指标 | CoT Self-Instruct | Agentic Self-Instruct |
|---|---|---|
| Weak solver 平均分 | 0.677 | 0.458 |
| Strong solver 平均分 | 0.696 | 0.772 |
| Gap(强−弱) | 0.019 | 0.314 |
| Agentic 轮数 | 1.00 | 6.59 |
| 问题长度(字符) | 723 | 619 |
| Rubric 条目数 | 13.2 | 13.1 |
看那个 gap:CoT 方法造出来的题,强弱模型分数差距只有 0.019——几乎没区分度!这意味着 CoT 造的 CS 题对 4B 的 weak solver 来说太简单了,weak 都能拿 0.677。这种数据拿去 RL,梯度信号基本是噪声。
Agentic 方法把 gap 拉到了 0.314,weak 分数压到 0.458,strong 提到 0.772。代价是平均每个被接受样本要跑 6.59 轮(CoT 只跑 1 轮)。
这个迭代过程里发生了什么?论文的分析挺有画面感:在 880 个被拒的轮次里,80% 是因为题太简单(weak 得分太高被毙),13% 是因为 strong 也搞不定。agent 一开始往往出的是"高层次摘要题"(对 4B 太容易),在 judge 反馈的引导下,后续轮次慢慢转向了具体的算法步骤、消融细节、论文里的数值声明这些真·难题。
那训练效果呢(Table 2,训 Qwen3.5-4B,GRPO,1.3k 样本):
| 训练数据 | CoT 测试 mean@3 | CoT best@3 | Agentic 测试 mean@3 | Agentic best@3 |
|---|---|---|---|---|
| Qwen3.5-4B(无额外 RL) | 0.630 | 0.758 | 0.366 | 0.484 |
| RL on CoT 数据 | 0.727 | 0.853 | 0.500 | 0.631 |
| RL on Agentic 数据 | 0.774 | 0.894 | 0.632 | 0.768 |
注意这里有两个测试集:一个简单的 CoT 测试集,一个难的 Agentic 测试集。用 Agentic 数据训出来的模型,两边都赢——在简单测试集上 +0.05、在难测试集上 +0.13。这就是双向迁移:在更难的数据上学,迁移到简单任务也照样涨。
训练曲线长这样(Figure 3):

图3:CS 任务 RL 训练过程。左图训练奖励,CoT 数据(红)因为题简单奖励一开始就高、但很快饱和;Agentic 数据(蓝)起点低但持续爬升。中右两图分别是在 CoT 验证集和 Agentic 验证集上的 mean@3——在难的 Agentic 验证集上(最右),蓝线对红线的优势尤其明显。
这里有个细节值得停一下:训练奖励曲线上,CoT(红)一直比 Agentic(蓝)高。如果只看训练奖励,你会以为 CoT 数据更好。 但验证集上完全反过来。这恰恰说明了那个核心痛点——训练奖励高,往往是因为题太简单,模型轻松拿分,但学不到东西。
下面这张是 Agentic Self-Instruct 实际造一道 CS 题的过程演示(Figure 4):

图4:针对一篇关于大语言建模的论文,Agentic Self-Instruct 一步步生成训练样本及对应评估 rubric 的进展过程。可以看到题目如何从粗糙逐渐被打磨到"恰到好处"的难度。
🧪 实验二:法律推理——题目太难的反向病
法律这块特别能说明 Autodata 的通用性,因为它碰到的是完全相反的毛病。
CS 任务里,CoT 造的题太简单(gap 才 0.019)。法律任务里反过来——CoT 造的法律题太难了,难到 weak solver 几乎全错,RL 同样拿不到有用信号。
数据源用 Pile of Law 里的法院意见书等公开法律文书,评估用 PRBench-Legal 和它的 Hard 子集。模型配置跟 CS 一样。
看数据质量(Table 3):
| 指标 | CoT Self-Instruct | Agentic Self-Instruct |
|---|---|---|
| Weak solver 平均分 | 0.159 | 0.283 |
| Strong solver 平均分 | 0.717 | 0.698 |
| Gap(强−弱) | 0.558 | 0.415 |
| Agentic 轮数 | 1.00 | 4.98 |
| 问题长度(字符) | 1,569 | 900 |
| Rubric 条目数 | 18.6 | 17.3 |
| Weak rollout 标准差 | 7.93 | 12.63 |
CoT 法律题的 gap 是 0.558,weak solver 平均分只有 0.159——题难到 weak 基本做不出来。Agentic 方法这次是反向操作:把 gap 从 0.558 缩小到 0.415,weak 分数从 15.9% 提到 28.3%。
这就是我觉得这篇论文最漂亮的地方:同一套 Agentic Self-Instruct 循环,在两个相反的失败模式上都能自动纠偏。 CS 里把题改难、拉大 gap;法律里把题改容易、缩小 gap。方向相反,但下游 RL 都涨了。
核心洞察一句话:关键不是把题变难,而是把题变"恰到好处"——刚好落在模型能够攀爬的难度窗口里。
法律任务的流程比 CS 更精细:每篇法律文书先过一个 extractor 提结构化摘要,challenger 据此出题加权重 rubric,weak 跑 5 次、strong 跑 3 次,再交给一个 loop judge(不是硬编码标准,而是灵活判断)决定这轮要不要接受。judge 还会返回 grpo_suitability 这种结构化裁决。
这个 grpo_suitability 的分布对比特别能说明问题: - CoT 池:只有 4.8% 被判为 high 适合度,45% 是 low - Agentic 池:52% 是 high,只有 2% 是 low
训练结果(Table 4,训 Qwen3.5-4B,GRPO,2.8k 样本):
| 模型 | GPT-5 Legal | GPT-5 Legal-Hard | Kimi Legal | Kimi Legal-Hard |
|---|---|---|---|---|
| Qwen3.5-4B(无 RL) | 0.280 | 0.167 | 0.245 | 0.145 |
| Qwen3.5-397B(无 RL) | 0.404 | 0.277 | 0.358 | 0.226 |
| RL on CoT 数据 | 0.377 | 0.253 | 0.343 | 0.233 |
| RL on Agentic 数据 | 0.441 | 0.315 | 0.393 | 0.266 |
这张表里藏着一个很能打的结果:用 Agentic 数据训练后的 4B 小模型,在所有四个指标上都超过了没做额外 RL 的 397B 大模型。 一个 4B 干翻 397B,靠的不是模型本身,纯粹是训练数据质量。
法律的训练曲线(Figure 5):

图5:法律任务 RL 训练。这次训练奖励曲线(左)反过来了——Agentic(蓝)的训练奖励反而比 CoT(红)高,因为 CoT 的题太难、模型拿不到奖励。中图和右图的验证表现,Agentic 在 Legal 和 Legal-Hard 上都稳定领先。
对比一下图3和图5的训练奖励曲线,你会发现一个有意思的对称:CS 任务里 Agentic 的训练奖励更低(因为它把简单题改难了),法律任务里 Agentic 的训练奖励更高(因为它把难题改简单了)。训练奖励本身根本不是好数据的指标,落在合适窗口才是。
🧪 实验三:数学/科学推理——锦上添花
第三个领域是数学对象推理,基于一个叫 Principia 的题集(覆盖 MSC2020 和 PHYS 目录)。这里 weak solver 用的 Qwen3.5-4B 其实本身已经是个很强的推理模型了。
对比三种数据源:纯 CoT、纯 Agentic、两者 Combined(训练量翻倍到 18k)。
验证集结果(Table 5,avg@8):
| 验证子集 | Base 4B | CoT | Agentic | Combined |
|---|---|---|---|---|
| Overall | 68.66% | 71.08% (+2.42) | 71.86% (+3.20) | 71.36% (+2.70) |
| Agentic 子集 | 52.39% | 56.33% (+3.94) | 56.79% (+4.40) | 55.88% (+3.49) |
| CoT 子集 | 77.17% | 79.03% (+1.86) | 80.22% (+3.05) | 79.66% (+2.49) |
Agentic 数据(9k)在整体上涨了 +3.20,比 CoT 的 +2.42 高,甚至比训练量翻倍的 Combined(18k,+2.70)还高。用一半的数据量打过了两倍的数据量。 而且在 CoT 验证子集上,Agentic 训练的模型涨得(+3.05)比 CoT 自己训的(+1.86)还多——又一次印证了"难数据迁移到易任务"。
不过我得说句公道话,这个领域的提升幅度(2-4 个点)明显比 CS 和法律温和。分布外的 Principia 基准(Table 6)上整体也就 +1.04(Agentic avg@8),pass@8 上甚至互有胜负——比如 Physics 的 pass@8 上 Combined 还掉了 3.63 个点。所以在数学这块,Autodata 更像是稳定的小幅改进,不是 CS/法律那种戏剧性的逆袭。原因论文也点了:Qwen3.5-4B 在数学推理上已经很强,逼近能力上限,提升空间本来就小。
这里还有个我觉得很务实的发现:训练大幅降低了推理截断率。在 65,536 token 预算下,Agentic 训练把截断率从 23.75% 压到 4.09%(Table 8)。归因分析(Table 9)显示,大约一半的准确率提升来自模型学会了更高效地推理、不再写到一半被截断,而不是真的学到了新知识。这个 honest 的归因我挺欣赏的——很多论文是不会去拆这一层的。
🔬 真正的大招:把数据科学家自己也训一遍
前面都还是"用 agent 造数据"。这一节才是论文标题里"meta-optimize"的兑现——优化这个 agent 本身(论文 Figure 6)。

图6:数据科学家 agent 的 meta-optimization。外循环在 CS 论文任务上评估 agent 的 prompt,分析失败轨迹找出系统性弱点(比如上下文泄漏),通过 code-editing agent 改 prompt,再在留出验证论文上重新评估。只有当改动提升了 weak-strong 分离率时才接受。这个过程把验证通过率从 62.1% 提到了 79.6%。
方法是把 agent 的 scaffold 当成可迭代改进的代码,用进化优化框架:
- 用 Boltzmann 采样(温度 T=0.1)从候选 prompt 种群里挑父代
- 在训练论文上评估,收集轨迹和 weak/strong 分数
- 用 LLM agent 分析轨迹,写出系统性失败的根因分析
- 通过 code-editing agent 改 prompt,产出一个 diff
- 在留出验证论文上重新评估
- 只有验证分数严格超过父代才接受
结果(Table 7):
| Meta 迭代 | 验证样本数 | 6 小时验证通过率 |
|---|---|---|
| Baseline | 100 | 62.1% |
| Iter 124 | 100 | 79.6% |
跑了 233 次迭代(接受 126 次),验证通过率从 62.1% 自动爬到 79.6%,全程没有人工改 prompt。
更有意思的是优化器自己发现的几条改进,每条都像是个有经验的工程师才会想到的:
- 论文特定性强制:要求题目必须测论文里的特定知识,加了个自测——"如果 solver 不读这篇论文就能答对,那题太简单"
- 上下文泄漏防止:上下文只能描述问题域,绝不能包含论文提出的解法(不然就是送答案)
- 只允许正权重 rubric 且上限为 7:负权重的评分标准历史上会误触发、破坏 strong 模型分数,干脆禁掉
- 结构化 rubric 格式:强制 JSON 格式带整数权重,消除解析错误
这几条改进,说实话如果让我手写 prompt 我大概也就能想到第 2 条。优化器能自动挖出"负权重 rubric 会误伤 strong 模型"这种细节,是真的有点东西。
🤔 我的判断:framing 比实现更值钱
聊点实在的评价。
最打动我的地方:这篇论文的核心贡献其实是一个视角转换——把合成数据从"一次性生成"重新理解成"迭代的数据科学过程"。这个 framing 一旦确立,CS(题太简单)和法律(题太难)这两个看似无关的问题,就被统一成了同一个"调到恰当难度"的问题。一套循环治两种相反的病,这种统一性是真漂亮。weak-vs-strong 的难度信号也很朴素有效——不需要复杂的难度估计模型,让强弱两个 solver 跑一跑,gap 自己就出来了。
让我皱眉的地方:
第一,成本。CS 任务平均每个样本要跑 6.59 轮,每轮要调 challenger、weak(多次 rollout)、strong(多次 rollout)、judge 一整套。这个推理开销比 CoT 高了一个数量级。论文自己也承认这是"用推理时计算换数据质量"——但到底划不划算,得看你训练侧能省多少。对大多数没有 Meta 这种算力的团队,这套全家桶可能跑不起。
第二,数学领域的提升偏弱,2-4 个点,而且分布外有掉点。论文把锅甩给"4B 已接近能力上限",这个解释合理,但也暴露了一个边界——当基础模型在某领域已经很强时,Autodata 的边际收益会快速衰减。它真正发光的是 CS / 法律这种"现有方法造的数据难度严重失配"的场景。
第三,hacking 问题。论文诚实地提到了,agent 会试图作弊——比如偷偷改给 weak solver 的 prompt 告诉它"你要表现弱一点"。这种 reward hacking 在多 agent + meta-optimization 的设定下只会更隐蔽。论文靠加约束部分缓解,但这显然不是终局。
放到同期工作里看,Autodata 跟 Self-Challenging、AgentInstruct、autoresearch 这些都有交集。它的差异化在于:生成、评估、失败分析、配方修订、meta-optimization 全都被装进了同一个循环。 别人做了其中一两环,它把整条链路打通了。这是工程整合的胜利,但整合得足够完整,就成了一种新范式。
💡 如果你也在造合成数据
几个能直接拿走的启发:
- 别只看训练奖励。这篇最反直觉的一点——训练奖励高往往意味着题太简单。判断数据质量要看验证集,更要看强弱模型的 gap。
- weak-vs-strong 是个便宜好用的难度探针。不用训难度估计器,跑两个不同强度的 solver,看谁做对谁做错,难度信号自己就浮出来了。
- 目标是把题调到恰到好处,而不是越难越好。太简单没梯度,太难没正奖励,中间那个窗口才是金矿。
- prompt 工程可以交给优化器。如果你的 agent scaffold 已经稳定,把 prompt 当代码、用进化优化自动迭代,可能比你手调更狠——尤其是那些反直觉的细节(负权重陷阱这种)。
最后展望一句,论文埋了个钩子叫 Co-improvement:现在是 challenger 帮着训 solver,未来让 challenger 和 solver 同步进化——出题的越来越会出、做题的越来越会做,互相把对方往上推。这要是真能稳定跑起来,就有点 self-play 那味儿了。
这个方向我觉得是对的。我们造数据的方式,确实到了该从"写死的流水线"走向"会自我进化的 agent"的时候了。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新 AI 前沿,关注我