在大规模语言模型(LLM)迅速发展的今天,高质量、异构的数据成为了它们进化的关键“养料”。然而,现有开源工具大多针对特定数据配方,对探索新的数据源显得捉襟见肘。为了应对这一挑战,阿里巴巴集团的研究人员提出了Data-Juicer系统,它犹如一位数据魔法师,能够高效生成数据配方,探索不同数据的组合可能性,并评估其对LLM性能的影响。
论文地址:
https://arxiv.org/abs/2309.02033
添加图片注释,不超过 140 字(可选)
代码地址:
添加图片注释,不超过 140 字(可选)
以下内容主要来自论文《Data-Juicer: A One-Stop Data Processing System for Large Language Models 》
1、概述
Data-Juicer系统采用细粒度的数据处理流程抽象,内置了50多个可自由组合和扩展的运算符。它通过集成可视化和自动评估功能,形成了数据处理和LLM训练的闭环。此外,Data-Juicer还与LLM训练、评估和分布式计算生态系统无缝集成,为LLM的数据中心研究提供了强大支持。
添加图片注释,不超过 140 字(可选)
2、背景知识(BACKGROUND AND RELATED WORKS)
2.1 大语言模型(LLM)数据(Large Language Model (LLM) Data)
大语言模型(LLM):
大语言模型(LLM)在最近几年取得了显著的发展,其应用领域包括自然语言处理(NLP)任务、人工智能通用智能、对话助手等。LLM通常需要经过预训练和微调两个阶段。在预训练阶段,LLM在大量通用语料库上进行训练,获得基本的语言理解和生成能力。在微调阶段,LLM在特定任务的数据上进行进一步训练,以适应具体的应用需求。
预训练数据
预训练数据是LLM智能的基础。LLM在预训练阶段通常需要大量的高质量数据,数据来源包括网页爬取、对话或社交媒体、书籍、学术论文、代码库等。这些数据帮助LLM获得广泛的知识储备和强大的适用性。预训练数据的质量、多样性和数据量对LLM的性能具有重要影响。
微调数据
微调数据在LLM的微调阶段起着关键作用。微调数据不仅进一步精炼LLM,还使其行为与人类价值观保持一致。微调数据通常比预训练数据量小得多,但其格式更为多样。微调数据通常包含用户查询、任务特定指令和响应等信息。微调数据的质量、多样性和数据量同样对LLM的性能具有重要影响。
2.2 现有的LLM数据处理解决方案
现有工作的局限性
现有的开源LLM数据处理解决方案存在一些局限性。首先,现有工作通常针对特定数据源和用例,缺乏对异构数据的系统化处理能力。其次,现有工作缺乏对数据洞察力的支持,用户难以替代数据处理目标或进行数据分析。最后,现有工作关注功能而非系统性能,导致在效率、空间管理和可扩展性方面存在不足。
Data-Juicer的优化
Data-Juicer在模块解耦、提供抽象和广泛的函数、提供易用性等方面进行了优化。Data-Juicer通过解耦传统上紧密耦合的组件,实现了更高级别的抽象和模块化。它提供了50多个内置运算符和专用工具,以满足LLM预训练和微调的多样化需求。此外,Data-Juicer还提供了丰富的内置工具,支持扩展和定制。交互式教程进一步降低了使用门槛。
3、标准化运算符池(STANDARDIZED OPERATOR POOL)
Data-Juicer提供了一个统一的中间数据表示,支持多种文本输入格式。它包含了格式化、映射、过滤和去重等运算符,能够满足LLM的各种数据处理需求。设计原则是解耦和可组合,这大大提高了系统的灵活性和可复用性。
添加图片注释,不超过 140 字(可选)
3.1 Unified Data Representation
Data-Juicer采用Huggingface-datasets库作为统一的数据表示,支持多种文本输入格式,如txt、JSON、parquet等,并将它们统一成包含“text”、“meta”和“stats”三部分的结构化格式。其中,“text”部分存储原始文本数据,“meta”部分存储元信息(如日期和版本),“stats”部分存储可以由Data-Juicer的其他运算符和工具生成和消费的统计信息。这种接口在文本样本或数据集级别工作,独立于底层的内存或磁盘数据布局,为运算符开发者消除了对异构数据格式的潜在担忧。
3.2 Versatile Data Processing
Data-Juicer的运算符池包括格式化器(Formatters)、映射器(Mappers)、过滤器(Filters)和去重器(Deduplicators)。格式化器负责统一数据格式;映射器用于原地文本编辑;过滤器用于条件过滤文本;去重器用于去除重复样本。这些运算符为LLM数据处理提供了全面的功能。
3.3 Composability
Data-Juicer的运算符具有高度的可组合性。每个运算符可以处理不同的文本字段,并具有可配置的参数。用户可以轻松组合使用不同的运算符来处理各种数据类型,每个运算符可以处理不同的文本字段,具有可配置的参数,为用户提供了强大的数据处理能力。
4、反馈驱动的数据处理(FEEDBACK-DRIVEN DATA PROCESSING)
Data-Juicer提供了可视化、自动评估等功能,形成了数据处理和LLM训练的闭环。它还引入了超参数优化,加速了数据处理的迭代。此外,Data-Juicer与LLM训练和评估生态系统无缝集成,支持自动评估。
添加图片注释,不超过 140 字(可选)
4.1 HPO for Data Processing
Data-Juicer 将超参数优化(HPO)概念应用于数据处理,将数据处理的超参数与各种反馈信号绑定,支持贝叶斯优化等先进的 HPO 算法。具体而言,用户可以为数据处理的超参数定义搜索空间,然后利用 HPO 工具自动探索不同超参数组合,以最大化目标指标。例如,在混合不同数据集时,可以优化每个数据集的采样权重。此外,Data-Juicer 提供了检查点和缓存机制,以加速数据处理迭代。具体来说,Data-Juicer 在每个运算符后自动保存检查点和缓存,以便在系统故障时快速恢复到最近的处理状态。这减少了处理的冗余性,并增加了反馈频率。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
4.2 Interactive Visualization
Data-Juicer 提供了交互式可视化功能,用户可以跟踪每个运算符处理后的数据样本,并进行统计分析和可视化,以增强对数据处理的控制。具体来说,Data-Juicer 的内置跟踪器(tracer)可以记录每个运算符处理后样本的变化,如过滤器的丢弃样本、映射器的编辑前后差异、去重器的近重复样本对等。结合内置的采样和可视化工具,Data-Juicer 增强了用户对数据处理的控制。
4.3 Feedback with Integrated LLM Libraries
Data-Juicer 与 LLM 训练和评估生态系统(如 Megatron-LM 和 HELM)无缝集成,支持 LLM 的快速评估。用户可以轻松地在 Data-Juicer 生成数据集上训练 LLM,并使用预构建的工具和脚本来评估其性能,而无需深入复杂的 LLM 训练和评估细节。Data-Juicer 的评估器支持多个 SOTA LLM 基准测试,如 HELM、LM-harness 和 GPT-API 基准测试。此外,Data-Juicer 还支持自定义评估基准测试和任务,并提供了参考模型,这些模型与可追踪的训练数据绑定,便于进一步研究不同数据食谱对 LLM 的效果。
4.4 Feedback Loop Showcase
Data-Juicer 提供了一个示例来展示其数据处理的反馈循环。首先,用户对原始数据集进行分析,获取数据探针。然后,根据数据探针,用户调整数据食谱的参数。接着,使用调整后的数据食谱处理原始数据集,并获取精炼数据集。再次分析精炼数据集,评估数据质量,若不满意,则返回调整数据食谱的参数。然后,使用精炼数据集训练或微调 LLM,并使用自动评估工具进行多维度评估。最后,Data-Juicer 自动汇总评估结果,与参考模型进行对比,提供清晰的数据处理效果展示。
添加图片注释,不超过 140 字(可选)
5、提高可用性的内置功能( BOOSTING USABILITY WITH BUILT-INS)
Data-Juicer提供了易用的配置范式,支持零代码和低代码自定义。它还提供了丰富的内置工具,支持扩展。此外,Data-Juicer还提供了交互式教程,降低了使用门槛。
5.1 Configuring Your Data Recipe
Data-Juicer 提供了灵活的配置能力,支持用户轻松构建数据食谱。它基于 Jsonargparse 提供统一的、灵活的配置能力,并支持多种配置源,如命令行输入、yaml/jsonnet 文件、环境变量、默认硬编码值以及它们的组合。用户可以通过“减法”或“加法”两种方式构建配置文件。减法方式使用预设的包含所有可用运算符和工具以及默认参数的配置文件,用户只需移除或重新排序这些运算符并调整参数即可。加法方式允许用户从零开始构建配置文件,利用 Data-Juicer 提供的丰富预构建数据处理食谱示例。
5.2 Dedicated Pluggable Tools
Data-Juicer 包含一系列可扩展的强大专用工具,可以方便地插入到 LLM 数据处理的各个阶段。这些工具包括质量分类器、增强的 LLM 数据采样器和评估器等。质量分类器基于 GPT-3 质量评分器,并扩展了中文文本和多种代码类型的适用性。增强的采样器专门为 LLM 数据处理设计,支持按文档长度、令牌计数、布尔谓词频率等动态标准进行分层采样。此外,Data-Juicer 还提供了其他工具,如跟踪器和分析器等。
5.3 User-Friendly Experiences in Data-Juicer
Data-Juicer 旨在为不同背景和技能水平的用户提供友好的用户体验。对于新手用户,Data-Juicer 提供了一系列开箱即用的数据食谱和插件工具,无需了解高级系统架构或运算符。对于中级用户,可以轻松修改内置数据食谱、重新组织运算符和工具的顺序,调整超参数值以满足特定需求。对于高级用户,Data-Juicer 的解耦设计允许轻松扩展和注册新的运算符和工具,以快速参与二次开发。此外,Data-Juicer 还提供了交互式教程,以帮助用户熟悉和使用 Data-Juicer
6、系统优化
Data-Juicer优化了运算符融合和重排序,提高了计算效率。它还优化了缓存和压缩,提高了空间利用率。此外,Data-Juicer与分布式计算集成,提高了可扩展性。
6.1 Optimized Computation
Data-Juicer 提供了上下文管理、运算符融合和重新排序等技术,以提高 LLM 数据处理的计算效率。
上下文管理器精心处理运算符之间的共享中间变量,如分段词、分行的文本等,以便在不同运算符之间无缝重用这些上下文变量,减少重复计算。
运算符融合方法将共享相同上下文或计算子过程的可融合运算符合并成一个融合运算符,从而更快地执行。运算符融合后的上下文在每次融合运算符后都会被清除,因此几乎不需要额外的内存开销。
运算符重新排序策略基于运算符的交换性,例如,延迟运行耗时的融合运算符,并优先执行其他不太耗时的运算符。这样,耗时的运算符只需要处理较少的样本,因为前面的运算符已经过滤掉了一些样本,从而提高了整体计算效率。
6.2 Optimized Space Utilization
Data-Juicer 专门设计了一个哈希方法来绕过某些运算符中的不可序列化的第三方模型和函数的序列化过程,确保每个运算符的缓存成功,并利用最优的缓存管理。
此外,Data-Juicer 集成了压缩技术,如 Zstandard 和 LZ4,可以自动在每次运算符后压缩缓存文件,并在重新运行同一配置的运算符时解压缩这些压缩文件。与处理时间相比,压缩/解压缩时间可以忽略不计,因此可以显著减少缓存数据存储量,支持处理更大规模的数据集而不会影响速度或稳定性。
6.3 Optimized Scalability
Data-Juicer 与分布式处理框架(如 Ray、Apache Beam 和 Apache Flink)集成,将单节点上的数据处理流水线无缝转换为多节点集群。这利用了集群计算资源,加速了数据处理和生成。
添加图片注释,不超过 140 字(可选)
具体来说,Data-Juicer 适配了 HuggingFace-datasets 库的底层接口,以便与 Ray-datasets 一起使用,使得所有 Data-Juicer 的运算符(即使是作为单机 Python 函数编写的)都可以在分布式模式下使用 Ray 的自动数据分区功能执行。此外,用户还可以用其他分布式处理后端(如 Flink)替换 Data-Juicer 的默认 Ray 运行器,通过预翻译 Data-Juicer 的处理流水线到 Beam 兼容的流水线。因此,Data-Juicer 中的大多数运算符(映射器、过滤器和去重器)都可以在多节点集群上加速,有效地缓解了单节点上的内存容量和 IO 吞吐量瓶颈。
7、评估 ( EVALUATION OF DATA-JUICER)
Data-Juicer生成了高质量的数据配方,提升了LLM的性能。实验结果表明,使用Data-Juicer数据配方的LLM在16个HELM核心任务上平均得分提高了7.45%。此外,与SOTA LLM相比,Data-Juicer数据配方的LLM在GPT-4评估中获得了更高的胜利率。系统性能实验显示,Data-Juicer的端到端处理时间比基准降低了50.6%,内存使用减少了55.1%。
7.1 Making Better Data Recipes
7.1.1 Refined Pre-training Data Recipes
Data-Juicer 优化了两个广泛使用的 LLM 数据集 RedPajama 和 Pile,通过数据分析、合并和质量增强等手段,使用数十种运算符及其配置。经过评估,使用 Data-Juicer 的数据食谱训练的 LLM 在 16 个 HELM 核心任务上的平均得分提升了 7.45%。与仅使用 RedPajama 或 RedPajama+Pile 的模型相比,Data-Juicer 模型表现更优,证明了 Data-Juicer 的高效性。此外,在仅使用 43% 的数据量下,Data-Juicer 模型优于 Falcon 1.3B 等最先进的 LLM。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
7.1.2 Refined Fine-tuning Data Recipes
Data-Juicer 对 Alpaca-CoT 集合进行了标注和过滤,生成了两个新的等大小的数据集,一个使用随机采样,另一个使用 Data-Juicer 设计的食谱。在 GPT-4 评估中,与竞争的微调开放数据集相比,Data-Juicer 数据集提高了 10.3% 的平均胜率,同时使用了 56.8% 的更少数据量。这证明了 Data-Juicer 数据食谱对 LLM 的有效性。
添加图片注释,不超过 140 字(可选)
7.2 Processing Data Efficiently and Effectively
7.2.1 End-to-End System Performance
Data-Juicer 在处理时间上比 RedPajama 和 Dolma 基准降低了 50.6%,在内存使用上降低了 55.1%,在 arXiv 数据集上最高降低了 88.7% 的处理时间,在 Books 数据集上最高减少了 22.9% 的内存使用。
添加图片注释,不超过 140 字(可选)
7.2.2 Effect of Context Management, OP Fusion, and Reordering
通过上下文管理、运算符融合和重新排序,Data-Juicer 优化策略可以节省高达 24.91% 的总时间,对可融合运算符可节省高达 42.04% 的时间。
添加图片注释,不超过 140 字(可选)
7.2.3 Effect of Quality Classifiers
Data-Juicer 提供的内置质量分类器在 CommonCrawl 上的保留率与原始 GPT-3 分类器基本一致,中文扩展版本保留了与英文版本相当的比例。
添加图片注释,不超过 140 字(可选)
7.2.4 System Scalability
在分布式模式下,Data-Juicer 在 Ray 上加速了 87.4% 和 84.6% 的 StackExchange 和 arXiv 数据集处理时间。然而,Data-Juicer 在 Beam 上的扩展性受限于 Beam 的数据加载组件,需要进一步开发和性能优化。
添加图片注释,不超过 140 字(可选)
7.3 Empowering Real-world Products
Data-Juicer 已被多个基于 LLM 的产品采用,并不断通过实际需求的反馈进行进化。例如,Data-Juicer 为阿里巴巴云的通义系列 LLM(如用于金融分析的 Dianjin、阅读助手 Zhiwen 和 AI 角色定制 Xingchen)的开发做出了贡献,并将数据处理能力集成到了阿里巴巴云的 PAI 平台,以支持更多实际应用。
8、结论
Data-Juicer有效解决了现有工具的局限性。通过用户友好的设计,Data-Juicer使LLM数据处理更加普及。代码、数据配方和教程都已公开,有助于推进LLM的数据中心研究。
Tags:yaml格式化