按「编排 LLM 调用有多顺手」来挑合成数据框架,你会挑错,因为这四个都把那件事做得不错,差别只是手感。决定你的数据集值不值得拿去训练的那个阶段是核验——而多数教程里的默认配置,是一个与生成器同门的 LLM 评判器:它滤掉你一半的行,抬高你的质量指标,并且恰好没有增加任何信息。四者之中只有一个把可执行的校验器当成一级流水线阶段,而如果你在生成工具调用或多步智能体数据,那就是全部的选择标准。
一眼概览
四个仍在活跃使用的开源框架,四个不同的重心。请先读最后一栏。
| 框架 | 维护方 / 许可证 | 形状 | 正确性从哪里来 |
|---|---|---|---|
| Distilabel | Argilla(Hugging Face)· Apache-2.0 | 带类型的 Step / Task / Pipeline 图;生成器与评判器都是可组合的节点。 |
AI 反馈。评判器与偏好打分是内置原语;可执行的检查要你自己加。 |
| Bespoke Curator | Bespoke Labs · Apache-2.0 | 一个 curator.LLM 类,带 prompt() 与 parse();其余全是 Python。 |
没有内置的。parse() 是你放校验的地方,而它跑在你自己的进程里。 |
| NeMo Data Designer | NVIDIA · Apache-2.0 | 声明式配置:统计采样器加上 LLM 列,并带有依赖感知的生成顺序。 | Python、SQL 与自定义校验器作为声明出来的阶段,旁边还并排放着 LLM 评判打分。 |
| Augmentoolkit | 社区 · MIT | 七条有明确主张的端到端流水线(事实、RAG、分类器自举、纠错、GRPO),你配置它们而不是组合它们。 | 烤进了每条流水线里。你继承它对「什么是好行」的定义,而且不容易改。 |
有一条维护事实属于这张表却放不进去:Distilabel 的 README 现在写明,原作者们已经离开,一群社区成员加入成为协作者,最新的修复在 develop 分支上。它没有被弃置,而且使用广泛;但如果你是在为一个以两年计的后训练项目选基础设施,这句话与「缺一项功能」是同等分量的一条数据。
所有人都在优化的那个阶段,和真正起决定作用的那个
这些工具中的每一个被造出来,都是因为第二阶段烦人:速率限制、重试、批量 API、结构化输出解析,以及在第 380,000 行挂掉的一次 400,000 行运行的恢复。Curator 的整个卖点就是它在任何规模上都处理好缓存、异步与故障恢复;Distilabel 的卖点是流水线是一张你能推理的带类型的图;NeMo Data Designer 的卖点是你声明一份配置,它替你处理执行、批处理与令牌指标。这三个说法都成立,而它们没有一个碰到「这些行对不对」这个问题。
第三阶段之所以设定上限,原因是算术而不是哲学。拒绝采样——生成 n 条,留下通过的,其余重试——是让合成后训练数据真正管用起来的那项技术,而它的产出率完全是「过滤器辨别力有多强」的函数。一个没有辨别力的过滤器不会产出一个更小更好的数据集;它产出的是一个更小的数据集,错误率不变,而所有者更自信了。
基准真相从哪里来
请把三栏合起来看,因为要紧的是这个对照。一个同门评判器给它兄弟的输出打分,测的是与它自己先验的一致程度——它会稳定地拒掉那些不寻常的行、接受那些流畅的行,而这两件事与正确性的相关性都很弱,与文风的相关性都很强。一个跨家族的评判器,或一小份人工标注的样本,是一个确有独立性、且有可测量分歧率的信号,这让它适合做校准,而按行计价很贵。一个可执行的核验器——把生成的代码跑起来、把 SQL 对着一张真表执行、把工具调用发出去并比对结果状态——是三者中唯一回答「这一行是不是真的」而不是「它看起来像不像评判器见过的那些行」的。
对智能体数据来说,这道差距不是程度问题。一条合成的工具调用轨迹,要么是一串到达目标状态的调用,要么不是;而任何评分标准的阅读都告诉不了你是哪一种,因为那个看起来很像样的错调用和那个正确的调用,差的是一个参数。这与支配测试时计算的那处不对称是同一处:核验比生成更便宜、更可靠——前提是你有个能核验的东西。这意味着这个领域真正的成本不是令牌,而是核验器所需要的那个环境。
横向对比
可执行校验
NeMo Data Designer 是唯一把这件事当成声明阶段来处理的:Python 或 SQL 里的校验,加上自定义校验器,就摆在配置里 LLM 列的旁边、评判打分的旁边,于是一条没通过的行对生成顺序是可见的,并且可以被重新生成。Augmentoolkit 有正确性检查,但它们内在于它各自的流水线——事实流水线知道一对好的回忆样本长什么样,而你继承那个定义。Distilabel 和 Curator 都允许你用 Python 写任何你想要的检查,作为一个 step 或者写在 parse() 里;区别在于,你自己写的检查就跑在你放它的地方,而如果它需要一个容器、一个数据库或一个浏览器,它就不再位于这个框架的重试与缓存循环之内了。
规模与恢复
Curator 在这里最强,而这正是人们伸手去拿它的原因:OpenAI 原生与 LiteLLM 后端、面向本地模型的 vLLM 与 Ollama、四家厂商的批量 API、把缓存与故障恢复当成设计目标而非附加功能,还有一个可以看着数据流进来的查看器。Distilabel 的扩展性够用,而它带类型的图让长流水线可读。NeMo Data Designer 把扩展这条故事线靠在 NeMo Curator 上,如果你已经在那套技术栈里这是连贯的,如果不在那就是一项额外依赖。Augmentoolkit 明确是为「在你自己的硬件上、不需要外部 API key 就能跑」而造的,那是一次刻意用吞吐换独立性的交易。
拿到第一个可用数据集要多久
把顺序倒过来。Augmentoolkit 今天就能拿一个文档目录给你一份微调集,因为它已经把每个决定都替你做了;Curator 要一个下午,然后精确产出你指定的东西;Distilabel 带着配方坐在两者之间;NeMo Data Designer 要求你先把数据表达成一个 schema,那是最慢的起步,也是「数据集需要改一列然后重新生成」时回本的那一种。
当你需要的是 RL 而不是 SFT 时会怎样
这是这个领域正在移动的方向,也是四者分岔最大的地方。基于可核验奖励的强化学习需要的是一个环境,不是一个数据集——核验器必须在训练期间可调用,而不只是在生成期间。Augmentoolkit 交付了一条实验性的 GRPO 流水线,Curator 也加了训练器集成,可以从整理好的数据走到一个 LoRA 微调;但四者都不是环境框架,而把一个合成数据工具当成环境框架,是这个领域里最常见的架构错误。
什么时候选哪个
| 情形 | 选 | 因为 |
|---|---|---|
| 工具调用或多步智能体数据 | NeMo Data Designer | 声明出来的 Python/SQL 校验器把检查留在重新生成的循环里,而那是拒绝采样保持便宜的唯一方式。 |
| 对着托管 API 生成数百万行 | Bespoke Curator | 缓存、批量 API 与故障恢复就是它的产品。把你的核验器写在 parse() 里,并接受它跑在进程内。 |
| 偏好对与 AI 反馈数据集 | Distilabel | 评判器与成对打分是一级公民,而通往 Argilla 人工复核的路很短。请先读那条维护说明。 |
| 本周就要把领域文档变成一次微调 | Augmentoolkit | 有明确主张的端到端流水线,并可用本地模型运行。你用控制权换今天就能用的数据集。 |
| 你没有核验器,也没办法造一个 | 暂时都不选 | 把这周花在核验器上。这些框架中的每一个都会把你带来的辨别力放大,包括零。 |
常见问题
LLM 评判器有没有可能是对的过滤器?
有——在那些不存在可执行检查的主观轴上,比如语气、有用性或指令遵循;并且前提是这个评判器与生成器来自不同家族,而且已经对着一份人工标注样本校准过、并报出了一致率。站不住脚的做法,是在「本来程序就能判定」的数据上,把一个同门评判器当作主要的正确性过滤器。
我能把其中两个组合起来吗?
很常见,而自然的切分是用 Curator 做生成以获得吞吐,把核验放在它外面。代价是你的拒绝采样循环变成了两个系统加一个中间队列,所以在投入之前先测产出率——如果你的通过率很高,那条更简单的单框架路线通常总体上更便宜。
「Apache-2.0」是不是意味着我可以在这些输出上训练?
框架的许可证管的是框架。你能拿生成出来的行做什么,由产出它们的那个模型的条款决定,那是另一份文件,而且往往更严。请按运行、而不是按框架去核对模型条款。
我到底需要多少合成数据?
比教程暗示的更少,而约束几乎总是多样性而不是体量。一条从单一种子模板生成 100,000 行的流水线,产出的是同一行被生成了十万次;第一阶段的播种策略,比第二阶段的生成吞吐更值得你的注意力。
考虑到维护方变动,Distilabel 还适合在上面构建吗?
对以月计的项目来说适合——它是 Apache-2.0、部署广泛,而且有活跃的社区协作者。对以多年计的项目,请像对待任何一个经历了维护方交接的依赖那样:钉住它、把你依赖的那些 step 内化进来,并搞清楚换掉它要花多少代价。
延伸阅读
本站相关:
- 合成数据——它是为什么用的,以及它在哪里就不管用了。
- RLVR 与面向智能体的 GRPO——为什么可核验奖励改变了这个问题的形状。
- SFT、拒绝采样与蒸馏——这些数据喂的那个循环。
- 面向 RL 的环境工程——第三栏背后真正的成本中心。
- 奖励设计与奖励作弊——一个弱核验器会教给模型什么。
- 生成器—核验器差距——整套技术所依赖的那处不对称。
- 评判器校准与元评测——怎么知道你的评判器到底在测什么。
- 标注与打标运维——用来校准其余一切的那份人类样本。