Agentic 数据生成技术崛起

随着 LLM 架构的整合,训练数据的质量已成为创建最先进模型的关键因素。这对于预训练和后训练都适用,其中指令数据集对最终模型有着重大影响。最近出现了两种创新方法来解决为后训练 LLM 生成高质量指令数据集的挑战:AgentInstruct 和竞技场学习。这两个框架都来自微软研究院,并利用多个 LLM 来创建和完善样本。
在本文中,我将探讨这两种方法,分析它们的异同,并研究如何将它们整合到一个端到端的框架中。
🤖 AgentInstruct:一种多智能体方法
AgentInstruct 是 Mitra 等人(2024 年)提出的一种智能体框架,旨在生成大规模、多样化且高质量的合成数据。该框架采用复杂的管道,通过多个处理阶段将原始文本转换为精炼的指令。在论文中,智能体似乎基于 GPT-4,GPT-4 也用于在某些情况下评估数据质量和幻觉。
AgentInstruct 管道包含四个主要步骤:
- 种子收集:汇集各种原始种子,例如教科书章节、网络文章和代码片段。这些种子是生成新指令的基础。
- 内容转换:一个或多个专业智能体将每个种子修改为中间表示,从而简化指令创建。这些智能体旨在执行生成论证段落、辩论、对话、会议记录、诗歌、讽刺内容等任务。
- 种子指令生成:多个智能体获取转换后的种子,并根据预定义的指令类型分类法生成多样化的指令。例如,在阅读理解领域,分类法包括 43 种问题类型,从字面理解到批判性分析和推理。
- 指令优化:最后阶段涉及迭代增强生成指令的复杂性和质量。这是通过建议者-编辑智能体对实现的。建议者智能体提出增加指令复杂性的方法,而编辑智能体相应地修改指令。
为了更好地了解每个阶段的产出,我建议阅读论文中提供的示例。
AgentInstruct 管道中的每个流程都包含多个由 LLM 提供支持的智能体。这些智能体可以配备搜索 API 或代码解释器等工具,以增强其能力。这些智能体的角色在其系统消息中经过精心定义,以确保它们有效地执行其特定任务。
AgentInstruct 的作者为 17 种不同的技能实现了流程,每种技能都有多个子类别。这些技能涵盖了广泛的领域,包括阅读理解、问答、编码、检索增强生成、创意写作、工具使用和网络控制。
通过这个全面的管道,研究人员生成了大约 2200 万条指令。他们将这些合成数据与来自其他来源的 380 万条指令相结合,创建了一个包含 2580 万条配对指令的数据集。然后,该数据集用于微调 Mistral-7b 模型,从而创建了 Orca-3 模型。
⚔️ 竞技场学习:一种竞争性优化方法
Luo、Suo 等人(2024 年)提出的 竞技场学习 采用不同的方法来生成高质量的指令数据。它侧重于通过模拟的竞争环境来优化现有指令数据集。它不是一个智能体框架,因为没有向模型提供工具,但可以很容易地将其转换为一个。
竞技场学习管道的关键组成部分是:
离线成对 LLM 竞技场:竞技场学习创建一个模拟竞技场,其中多个 LLM 在大量指令数据上相互竞争。一个评判 LLM(meta-llama/Meta-Llama-3-70B-Instruct)评估竞争模型对每条指令的响应,提供排名、分数和解释。此过程有效地模拟了人类评估,但规模更大、成本更低。
数据收集和预处理:该框架从从各种开源收集的大量对话数据开始。这些数据经过过滤、清理和去重。太短、非法/有毒或与基准测试集过于相似的指令将被删除。然后,将精炼的数据集分成多个部分,用于迭代训练。
迭代战斗和模型进化:该过程涉及多轮战斗和训练:
- 初始模型 (WizardLM-β-SFT-I0) 在数据子集上进行训练。
- 该模型在另一个数据子集上与其他人最先进的 LLM 竞争。
- 收集 WizardLM-β 失败的实例,并将获胜模型的响应用作微调的目标。
- 该过程重复多次迭代,每次迭代可能使用不同的训练策略(SFT、DPO、PPO)。
训练策略:竞技场学习采用多种训练策略来改进模型:
- 监督微调 (SFT):使用战斗结果对模型表现不佳的实例进行微调。
- 直接偏好优化 (DPO):将胜/负响应视为训练的选择/拒绝对。
- 近端策略优化 (PPO):使用战斗结果训练奖励模型和语言模型。
WizardArena 评估:作者创建了一个包含多样化和困难子集的离线测试集 (WizardArena)。这用于通过成对战斗评估模型,结果用于计算 Elo 排名。该评估与基于人类的竞技场密切相关,但速度更快、成本更低。
数据选择:该管道使用各种策略来选择高质量的训练数据,例如基于阈值的过滤以控制数据大小和质量,关注模型表现不佳的实例,以及在后续迭代中逐渐转向更复杂的数据。
该框架允许多次迭代的战斗和训练,如 WizardLM-β 所示。模型的性能逐步增强,特别是在复杂任务中。该过程显著提高了 Elo 排名、MT-bench 分数和其他评估指标。
竞技场学习侧重于改进正在训练的模型目前缺乏的领域。一个很好的特点是,它不需要像 Claude 3.5 Sonnet 或 GPT-4o 这样特别强大的模型。相似级别的模型在某些任务和领域中可能更好,也更适合回答某些提示语法。这意味着整个管道可以使用开源模型部署,如果您已经拥有高质量的基础设施,这是一个很大的优势。
🪄 ArenaInstruct:AgentInstruct 与竞技场学习的结合
虽然 AgentInstruct 和竞技场学习都旨在为语言模型的后训练生成高质量数据,但它们实现此目标的方法截然不同。了解它们的异同以及各自的优缺点是考虑如何将它们结合起来的第一步。我选择了四个重点关注点:
数据生成:AgentInstruct 从原始文本开始,通过多阶段管道从头开始生成指令(无答案!)。这使得可以创建全新的内容,从而可能在生成的指令中带来更大的多样性和新颖性。另一方面,竞技场学习通过模型之间的模拟竞争来完善现有指令数据集。这种方法利用了现有数据集的质量,同时通过竞争评估对其进行了改进。
数据质量:AgentInstruct 依靠建议者-编辑智能体对来迭代优化指令。这种方法可以对生成指令的复杂性和质量进行精细控制。相比之下,竞技场学习使用 LLM 作为评判来评估模拟竞争中的响应。这意味着整个数据质量过程由单个模型处理。
多样性和复杂性:AgentInstruct 通过指令类型分类和多个转换智能体明确(即手动)设计多样性。这种结构化方法确保了广泛的技能和指令类型的覆盖。竞技场学习的多样性来自竞争模型和初始指令数据集的多样性。虽然这可能导致结构化多样性较少,但它可能捕获指令风格中更自然的变异。
灵活性:AgentInstruct 的管道允许轻松添加新的种子类型和指令类别,使其高度适应新领域和任务。竞技场学习的迭代竞争过程能够持续改进目标模型,可能使其更快地适应新挑战和竞争模型。
基于此比较,不难看出我们如何利用每个框架的优势。例如,基于分类法的数据生成更具可控性,并且可以通过竞技场学习进行改进。但我们也可以使用反馈信号在多次迭代中改进这第一步。
以下是这种混合方法可能的工作方式:
- AgentInstruct 指令生成:使用 AgentInstruct 从原始文本创建广泛而多样化的基本指令(无答案!)。这将确保我们用例相关的任务和领域的广泛覆盖。
- 竞技场学习答案生成:应用竞技场学习的竞争性竞争方法来优化和选择模型池中最高质量的答案。这将结合 AgentInstruct 生成新颖内容的能力与竞技场学习的强大质量控制机制。
- 数据质量评估:除了依赖单一的 LLM 作为评判,我们可以使用奖励模型或 LLM 作为陪审团 来改进数据选择过程。
- 多样性反馈:利用竞技场学习竞争中的见解,动态更新 AgentInstruct 的指令分类法。这将使生成过程集中于生成在实际场景中被证明最具挑战性或最有用的指令类型。
- 复杂性反馈:利用竞技场学习的性能指标来识别指令过于简单或过于困难的区域。使用此信息指导 AgentInstruct 的复杂性优化过程,确保一个平衡的数据集,在多次迭代中适当挑战模型。
通过结合这些方法,我们可以创建指令生成和评估之间强大的反馈循环。这种混合框架将受益于 AgentInstruct 生成新颖、多样化内容的能力,以及竞技场学习的竞争性质量控制和模型改进过程。结果将是一个更强大、更有效且不断改进的 LLM 后训练数据集。
结论
总之,本文探讨了合成数据生成的两种最新方法:AgentInstruct 和竞技场学习。我们提出了一种混合解决方案,结合了 AgentInstruct 的结构化、基于分类学的方法和竞技场学习使用多个 LLM 进行迭代优化的方法。这种组合利用了两种框架的优势,允许系统地生成多样化数据,同时通过 LLM 池的反馈实现底层分类法的持续改进。我感觉我们可能会通过删除建议者-编辑智能体对而损失一些质量。如果您有更好的想法,请告诉我。
尽管如此,数据质量评估是完善这种方法的一个重大挑战。目前对 GPT-4 或 Llama 3 70B Instruct 等模型作为评判的依赖并不完善,并且存在已知的局限性(请参阅我的快速评论此处)。提高质量评估阶段可以产生更高效的数据集,以更少的样本实现更好的性能。要了解有关如何创建高质量数据集的更多信息,请查看我的 GitHub 存储库 💾 LLM 数据集。