DataDreamer:用于合成数据生成和可复现 LLM 工作流的工具

24年2月UPenn的论文“DataDreamer: A Tool for Synthetic Data Generation and Reproducible LLM Workflows”。

DataDreamer是一个开源 Python 库,允许研究人员编写简单的代码来实现强大的 LLM 工作流程。 该库和文档位于:

​github.com/datadreamer-dev/DataDreamer

虽然大语言模型 (LLM) 通过提示和预测范式开创了 NLP 研究的新纪元,该范式已被证明对各种任务有效,但这些模型的使用也存在重大缺陷(Liu, 2023)。 许多流行的模型,如 GPT-4(OpenAI,2023)都是闭源的,并且位于远程 API 后面,而本地运行模型由于其规模而在技术上可能很复杂且昂贵。 此外,现在完善的提示范式可能很脆弱,不同模型、配置和环境之间的结果差异很大(Sclar,2023;Jaiswal,2023)。 这些挑战使得研究人员难以共享、复制、扩展和比较工作,阻碍研究进展。

在这样背景下,推出DataDreamer,一个开源 Python 包:

  • DataDreamer 帮助研究人员实施涉及LLM的工作流程,例如合成数据生成、微调、指令调整和对齐。它通过为其中许多任务提供具有标准化接口的单个库来简化实现,同时降低模型之间切换、缓存、可恢复性、日志记录、多 GPU 推理和训练、使用适配器和量化的优化,以及发布开放数据集和模型。
  • DataDreamer 使任务之间的数据链接(一种日益常见的做法)变得简单。 例如,用户可以使用合成数据工作流程生成数据,然后在该合成数据上进行模型微调。
  • DataDreamer 帮助研究人员实施工作流程,同时通过自动缓存、可复现指纹和更多最佳实践以最小的努力生成输出。

添加图片注释,不超过 140 字(可选)

最近的工作探索了使用LLM为任务创建合成数据或扩充现有数据集以提高任务性能(Yu et al., 2023; Kumar et al., 2020; Yoo et al., 2021; Han,2021;Ye,2022;Honovich,2022)。 合成数据生成涉及在多阶段工作流程中一次或多次使用 LLM 来处理数据,有时称为“链接”(Rush,2023)。 当提示LLM生成或扩充数据集时,可复现的挑战是“提示敏感性”,即使提示中的微小变化也可能导致显着不同的结果(Sclar ,2023)。 此外,由于模型退化问题,必须对合成法生成的数据集进行标记(Shumailov,2023)。

另一个日益常见的工作流程是使用 LLM 作为裁判或自动指标来评估模型在任务上的表现(Zheng,2023;Fu,2023;Dubois,2023;Chiang & Lee,2023)。 许多适用于合成数据的再现性挑战也出现在这里。

还有一个常见的工作流程是,使用较大模型中的知识,创建特定于任务的专家模型,通过微调和蒸馏,创建更小、更高效的模型(Han,2021b;Liu,2022;Hsieh2023)。 指令调优是微调,允许基础预训练模型更好地遵循自然语言人类指令并提高其广义任务性能(Ouyang, 2022; Wei, 2021; Sanh, 2021; Mishra,2021)。 密切相关的是,对齐技术引导模型对那些比人类更喜欢的人做出反应(Stiennon, 2020; Bai, 2022; Rafailov, 2023)。 实施可复现性和高效的训练技术是经常面临的实际挑战。 可复现性挑战包括共享精确数据和超参数。
通过一个自反馈训练循环来自我改进LLM,是一个日益活跃的研究领域(Huang, 2022; Wang, 2022; Li, 2023; Chen, 2024; Yuan,2024;Gunasekar,2023)。 由于需要多轮操作将合成数据生成、自动评估和模型重训练链接在一起,这些工作流程的实施和重现都非常复杂。 DataDreamer 支持所有这些工作流程,并使它们之间的数据链接变得简单。

DataDreamer 是一个开源 Python 包,允许研究人员使用单个库实现以上所有 LLM 工作流程。 DataDreamer 提供了一个用于提示和训练模型的标准化界面,抽象出特定于供应商的库和工具。 这使得研究代码更易于实现、修改、试验以及与他人共享。 DataDreamer 与其他开源 LLM 库集成,如 Transformer (Wolf,2019) 和 trl (von Werra,2020),以及商业模型 API,如用于商业 LLM 的 OpenAI 和 Anthropic (Brown,2020) )。 此外,DataDreamer 自动实施复现性。

下表比较当今研究人员针对类似工作流程的其他流行库和解决方案之间的功能覆盖范围。 DataDreamer 将这些功能集成到具有标准化接口的单个库中,使实验和任务之间的数据链接变得简单 (✗= 否;✓= 是;O = 部分支持)。

添加图片注释,不超过 140 字(可选)

虽然实验工作流程通常对模型选择敏感,并且提示的可迁移性可能不可靠(Liu et al., 2023),但出于可复现性目的和易于实验,工作流程的实现代码,应尝试最大程度地减少对特定模型的依赖,并且应该允许其他研究人员轻松地用一个LLM替代另一个。 如果其他研究人员无法访问模型或模型过时,这也很有用。 DataDreamer 的 API 和模型抽象使模型替换变得简单。

应共享所使用的确切提示,因为即使很小的变化也会严重影响性能(Sclar,2023)。 DataDreamer 可以轻松共享整个工作流程和会话输出文件夹。 DataDreamer 还可以通过比较各个步骤或整个工作流程的可重复性指纹,帮助确保两个实验设置之间的重新实施完全相同。

在多阶段工作流程中,应共享中间输出以供其他研究人员检查和分析以及出于可扩展目的。 DataDreamer 以易于检查的 Hugging Face 数据集格式自动保存多阶段工作流程中每个步骤的结果,使这一过程变得简单(Lhoest,2021)。 当使用基于 API 的LLM时,复现性的风险更大。 即使远程 API 不再可用,DataDreamer 也允许从会话输出文件夹中的缓存中准确地再现工作流程。

合成数据和模型卡可以帮助其他研究人员了解合成数据源、可能适用的许可限制、可能适用的引用以及其他属性。 重要的是,这些卡和其他类似元数据的标签可以帮助防止预训练数据的污染(Shumailov,2023)。 最后,这些卡带有再现性信息,可用于验证两个实验设置是否相同。

量化优化会对生成产生影响(Jaiswal et al., 2023)。 DataDreamer 的再现性指纹考虑了这些配置,并且凭借其易于共享的工作流程,DataDreamer 可以轻松再现精确的工作流程以及配置的优化。

为了实现可复现性,代码应尽量减少对本地环境、作业调度程序、shell 脚本等的依赖。在 Python 中完成,DataDreamer 通过提供工作流编排工具(步骤、并行化、用于多 GPU 训练的托管分布式流程)来帮助简化这一过程。 DataDreamer 还自动将结果和输出组织到会话输出文件夹中,最大限度地减少对本地文件路径的依赖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值