data-juicer篇-01、认识一站式数据处理系统 data-juicer

前言

相关平台算子广场

公司内部将要做多模态数据中台,其参考了火山引擎中的数据湖设计,其中引入了算子:

1)火山引擎

访问地址:https://console.volcengine.com/las/region:las+cn-beijing/next/plaza/operator/list?currentVersion=0.5.21

算子库文档:https://www.volcengine.com/docs/6492/1798370#%E6%96%87%E6%A1%A3%E5%A4%84%E7%90%86

img

开源库广场:

img

2)阿里dai 人工智能平台

平台地址:https://pai.console.aliyun.com/?regionId=cn-shanghai&spm=5176.pai-console-inland.console-base_product-drawer-right.dlearn.77a62b6e1YZC8Z#/workspace/welcome?callback=%23%2Fquick-start

img

Data-juicer与其他平台的算子区别

Data-Juicer 和 火山引擎算子广场 的“算子”虽然名称相同,但它们是两个不同层面、不同用途的概念。您的观察非常敏锐。

简单来说,它们的核心区别在于:

  • Data-Juicer 的算子是 “数据清洗和准备的微操作”,专注于处理已经提取出来的原始文本或多媒体数据。
  • 火山引擎 的算子是 “封装好的云服务API”,提供从原始非结构化数据(如PDF、图片)到结构化信息的端到端解决方案。

两种“算子”的定位不同与对比关系如下图:

img

如何结合使用?

一个非常强大和现代的架构是将两者结合使用,构建一个从原始数据到高质量训练数据的完整流水线:

  1. 第一步(解析提取):使用火山引擎的PDF解析算子(或其他类似的云服务或本地库如 pdfplumber),将成千上万的PDF文件批量处理,提取出原始的文本内容(Markdown格式)。这一步负责“从0到1”。
  2. 第二步(清洗优化):将第一步提取出的文本数据(可能仍然包含一些噪声、无关信息或格式问题)导入 Data-Juicer。然后,通过精心配置的算子流程(如clean_links_mapper, text_length_filter, document_deduplicator等)对其进行深度清洗、去重和质量过滤。这一步负责“从1到100”,确保数据是模型训练的最佳“食粮”。

这不是“不一样”,而是“分工不同”。

  • 如果您的问题是 “如何把一堆PDF文件里的文字弄出来并整理好?”,那么您需要的是火山引擎PDF解析算子这类工具。
  • 如果您的问题是 “我已经有了一大堆文本数据,如何把它们清洗得更干净,以便更好地训练AI模型?”,那么您需要的正是 Data-Juicer。

这个跟langchain4j中的Transformer基本一致:当解析拿到文本后,我们对文本来进行处理

img

这个处理过程应该是:

img

初步认识data-juicer

Data-Juicer 是一个专门为大型语言模型(LLM)和多模态模型准备训练数据的一站式数据处理系统。它并非一个Java库,而主要基于Python构建。不过,其核心思想在Java生态中也有类似的实现。

下面这个表格可以帮助你快速了解Data-Juicer的核心概况。

特性 描述
核心目标 为LLM及多模态模型提供高质量、易“消化”的训练数据
技术特点 提供80+可自由组合的数据处理算子(OPs),涵盖清洗、过滤、转换、增强等
独特价值 提供“沙盒实验室”,支持在迷你数据集上快速试验不同数据配方(Data Recipe)
应用场景 大模型预训练/微调数据准备、多源异构数据统一处理、数据质量分析与可视化
所属领域 Python,人工智能/机器学习,数据预处理

💡 数据处理的核心思想

虽然Data-Juicer是Python项目,但其解决问题的思路是相通的。它的核心在于将复杂的数据处理流程模块化、配置化。你可以通过像搭乐高一样组合不同的“算子”(如文本去重、图像质量过滤、视频片段裁剪等),来构建一条完整的数据处理流水线。这种通过配置文件来定义复杂流程的思想,在Java开发中(如通过Spring框架的依赖注入配置)也非常普遍。

🔍 Java生态中的类似工具

Java生态中虽然没有与Data-Juicer在目标和scope上完全对应的工具,但存在一些在特定功能上相似的库,特别是在单元测试和数据模拟领域。这些工具可以帮助你快速生成结构化的测试数据,其“随机生成但符合规则”的理念与Data-Juicer中部分数据增强功能有相似之处。

  • JMockData:一款通过随机算法模拟Java对象实例数据的工具框架。它支持丰富的数据类型,包括基本类型、字符串、集合、数组乃至复杂的自定义对象,可以帮助你快速创建用于测试的模拟数据。
  • FakeDataMaker:一个基于JavaFaker和ReflectASM构建的测试数据生成工具。它旨在用简短的代码(如两行代码)为Java对象“乱真”地填充数据,特别适用于单元测试时快速构造测试用例。

💎 如何选择

简单来说,选择取决于你的目的:

  • 如果你的工作是为Python环境下的大模型(尤其是多模态模型)准备训练数据,那么Data-Juicer是一个非常专业且强大的选择。
  • 如果你是在Java项目中进行开发,主要需求是快速生成用于单元测试或功能演示的模拟数据,那么像JMockData或FakeDataMaker这样的工具会更适合你。

希望这些信息能帮助你更好地理解Data-Juicer并为你的项目找到合适的工具。如果你对数据处理的具体场景有更详细的描述,或许我可以提供更具体的建议。

相关链接

🔗 核心资源链接

开源代码仓库

  • GitHub 主仓库: https://github.com/modelscope/data-juicer
  • ModelScope 项目页: https://modelscope.cn/models/damo/data-juicer/summary

官方文档

  • **官网:**https://modelscope.github.io/data-juicer/
  • 中文文档:https://modelscope.github.io/data-juicer/zh_CN/main/index_ZH

论文资源

  • Data-Juicer 技术论文: https://arxiv.org/abs/2309.02033
  • SIGMOD'24 工业轨道论文: 相关论文被 SIGMOD'24 接收

📚 学习资源

教程与示例

  • 入门指南:https://modelscope.github.io/data-juicer/zh_CN/main/docs/tutorial/QuickStart_ZH.html

🎯 社区与生态

ModelScope 生态

  • ModelScope 官网: https://modelscope.cn
  • ModelScope-Sora 计划: https://modelscope.cn/models/damo/SoraLab

一、项目背景与定位

Data-Juicer是由阿里巴巴开源的一站式多模态数据处理系统,专为大语言模型(LLM)提供高质量、多来源、易处理的数据而设计。在当今大模型技术飞速发展的背景下,数据质量的重要性日益凸显。研究表明,数据质量直接决定了机器学习任务的天花板,只有投喂的数据质量高、颗粒度细、数量多,模型训练才能走出"垃圾进,垃圾出"的困境。然而,现有的开源工具在数据处理方面存在明显局限性:它们大多针对特定数据集设计,强调已发布数据的可复现性,而非适应性和可用性,这极大地限制了它们在更广泛场景下的应用潜力。

Data-Juicer的诞生正是为了解决这一痛点。作为一个强大、灵活且用户友好的LLM数据处理系统,它旨在让数据处理流程系统化、可复用,并独立于特定的大语言模型数据集和处理流水线。该系统名字中的"Juicer"(榨汁机)寓意深刻——它能够对庞杂的多模态数据去粗取精,"榨出"更高质量、更丰富、更易"消化"的数据。这一特性在处理视频等复杂多模态数据时尤为重要,因为现有工具难以应对这些数据类型的独特挑战。

截至2024年,Data-Juicer已经发展成为ModelScope-Sora开源计划的核心组成部分,该计划在2024年全球开发者先锋大会上宣布,旨在为中国类Sora模型的研究与创新提供全方位支持。Data-Juicer在这一计划中扮演着关键角色,特别是其包含的100多种高效算子,能够显著提升视频数据处理的效率和质量。这表明Data-Juicer已经从最初的文本数据处理系统演进为一个真正的多模态数据处理平台。

与传统数据分析和处理工具相比,Data-Juicer面临并解决了三大独特挑战:

  • 首先,可能用于形成数据配方的数据源真正具有异构性和大规模特性,且质量参差不齐;
  • 其次,精确评估数据配方对LLM性能的影响极其昂贵;
  • 第三,系统的最终用户(模型开发者)需要足够的灵活性来配置和评估不同的数据配方。

Data-Juicer通过提供细粒度的流水线抽象、可视化和自动评估能力,以及与生态系统的深度集成,成功应对了这些挑战。

二、核心设计与架构

2.1 系统架构概述

Data-Juicer采用了一种模块化、可组合的设计理念,使开发者能够灵活地构建和优化数据处理流程。该系统核心架构围绕算子(Operator) 概念构建,每个算子代表一个特定的数据处理单元,这些算子可以像乐高积木一样自由组合,形成完整的数据处理流水线。该系统提供了80多个核心算子、20多种配置配方和20多个专用工具池,涵盖了从数据清洗、标准化到增强和评估的全流程。

Data-Juicer的架构设计强调了三个关键特性:模块化、可组合性和可扩展性。这意味着用户不仅可以轻松使用内置算子,还可以根据特定需求开发自定义算子。系统支持大多数常见数据格式(如jsonl、parquet、csv等),并提供了友好的用户接口,包括全面的文档、简易入门指南和演示配置。

2.2 算子(Operator)体系

算子是Data-Juicer最基本的功能单元,根据其功能和应用领域,可以将其分为以下几大类:

  • 文本处理算子:包括文本清洗、规范化、分词等基础文本操作算子。
  • 图像处理算子:如图像质量评估、特征提取等针对图像数据的处理单元。
  • 视频处理算子:专门针对视频数据设计的算子,如自动剪辑视频片段、增强分辨率、调整宽高比等。
  • 跨模态处理算子:处理文本与图像关联关系的算子。
  • 质量评估算子:评估多模态数据质量的各类指标。
  • 数据生成算子:基于大语言模型生成新的数据样本。

为了降低社区贡献门槛并保证项目质量,Data-Juicer团队创新性地提出了算子分级方案,将算子分为三个成熟度级别:

  • Alpha级算子:作为功能原型展示,仅需实现核心算法逻辑,免除文档、测试等非功能性要求,允许存在性能优化空间,可作为社区创意孵化器。
  • Beta级算子:需要满足代码规范标准、完备的类型注解、基础错误处理机制、最小化文档说明和基础单元测试。
  • Stable级算子:在Beta基础上增加性能优化验证、分布式环境测试、完整API文档、边界条件处理和融合兼容性保证。

这种分级机制带来了三重收益:降低参与门槛,吸引更多领域专家贡献专业算法;渐进式演进,允许算子从原型逐步成熟;质量可控性,明确不同等级算子的生产环境适用性。

2.3 特色工具与组件

除了核心算子体系,Data-Juicer还提供了一系列特色工具和组件,增强了系统的实用性和易用性:

  • 可视化与自动评估:Data-Juicer集成了可视化和自动评估能力,使用户能够获得及时的反馈循环,加速数据处理并获取数据洞察。这一特性对于理解数据特性和快速迭代数据配方至关重要。
  • 沙盒实验室:Data-Juicer提供了基于沙盒实验室的数据-模型协同开发环境,研发人员可以先在迷你数据集和模型上快速迭代,找到最合适的配方。这一功能支持一站式数据-模型协同开发,通过沙盒实验室快速迭代,基于数据和模型反馈回路使用户更了解和改进自己的数据和模型。
  • 数据配方(Data Recipes):Data-Juicer提供了开箱即用的组件,为具有不同背景的用户提供预构建的数据处理流程。系统为预训练和后调优使用场景提供了丰富的数据配方。这些配方已在LLaMA、LLaVA等模型上得到有效验证。

三、关键技术实现

3.1 多模态数据处理

Data-Juicer在多模态数据处理方面的能力是其最显著的技术特色之一。系统支持包括文本、图像、音频和视频在内的多种模态数据,未来还将支持更多模态。对于视频数据,Data-Juicer提供了一系列专业算子,能够执行自动剪辑视频片段、增强分辨率、调整宽高比、去除文本段等操作,甚至可以通过计算光流判断视频动静,只保留精彩瞬间。此外,Data-Juicer还能自动打标,对光线变化、环境氛围进行精细捕捉并生成文字描述。

在处理多模态数据的中间结果时,Data-Juicer采用了一种创新的方案,通过引入进程标识符(PID) 和时间戳的组合,有效解决了多模态数据处理过程中的数据污染和文件覆盖问题。传统的数据处理工具往往将中间结果直接存储在源数据目录中,这会污染原始数据集,且在多个处理进程并行运行时容易发生文件覆盖。Data-Juicer的解决方案通过结合进程ID和精确到毫秒的时间戳,为每个中间文件生成全局唯一的标识符,既保证了同一进程内生成的文件不会冲突,也确保了不同进程间的文件不会相互覆盖。

3.2 大语言模型增强的数据处理

Data-Juicer近期提出了一个创新方向——引入大语言模型(LLM) 来增强数据处理能力,这一思路为数据质量工程带来了新的可能性。传统的数据处理工具通常依赖于规则引擎或统计方法,这些方法在面对复杂、非结构化的文本数据时往往显得力不从心。Data-Juicer计划开发一系列基于LLM的数据处理操作,主要包括三个关键方向:

  • 数据质量评估:利用LLM计算文本损失值或打分,量化数据特定特征。
  • 数据修正与改写:通过LLM对原始数据进行改写、纠错等操作。
  • 数据生成:基于特定提示词生成符合要求的数据样本。

在技术实现层面,项目团队考虑了多种LLM调用方式的统一支持,包括OpenAI官方API、HuggingFace推理API和ModelScope推理服务。这种多后端支持的设计确保了方案的灵活性和可扩展性,用户可以根据自身需求和资源情况选择最适合的LLM服务提供商。

3.3 分布式处理与性能优化

面对大规模数据处理的需求,Data-Juicer集成了多种分布式计算生态系统,包括Ray、Aliyun-PAI等,以实现高效和可扩展的数据处理。系统通过多方面的优化,实现了显著性能提升:单机处理时间最高减少88.7%,内存和CPU使用分别减少77.1%和73.1%,利用分布式计算生态系统时处理加速最高达7.91倍。

Data-Juicer与Ray Data的集成能力特别值得关注,它为大规模数据处理提供了高效解决方案。Ray Data作为分布式数据处理框架,主要负责数据的分布式加载和基础处理,而Data-Juicer则在此基础上增加了针对多模态数据的专业处理能力。这种协同工作原理使得Data-Juicer能够处理原生Ray Data数据集,尽管需要注意数据格式要求和类型转换等关键点。

3.4 系统优化技术

Data-Juicer在系统层面实施了多项优化技术,以确保在处理大规模数据时的效率:

  • 算子融合:将多个数据处理操作融合为单个操作,减少数据在不同操作间移动的开销。
  • 内存管理:系统能根据内存情况和算子模型所需的内存大小来控制对应的进程数,以达成更好的数据处理性能效率。
  • 缓存机制:系统提供灵活的缓存配置,用户可以通过设置环境变量DATA_JUICER_CACHE_HOME更改缓存目录位置,或分别修改模型缓存(DATA_JUICER_MODELS_CACHE)和资源缓存(DATA_JUICER_ASSETS_CACHE)。
  • 自动容错:系统支持自动化处理容错,确保长时间运行的数据处理任务不会因个别错误而中断

四、应用场景与成效

4.1 实际应用案例

Data-Juicer在各种实际应用中已经证明了其价值,以下是一些典型应用案例:

  • LLaMA模型预训练:使用Data-Juicer生成的数据配方训练LLaMA模型,在各种预训练和后调优情况下都观察到了显著改进。经验验证,使用Data-Juicer处理的数据在16个LLM基准测试中平均得分相对提高了7.45%,在使用成对GPT-4评估时获得了16.25% 更高的胜率。
  • 多模态大模型训练:Data-Juicer在ModelScope-Sora计划中扮演关键角色,为类Sora模型提供高质量的视频数据处理能力。通过Data-Juicer沙盒实验室套件,团队系统性优化了数据和模型,在VBench文生视频排行榜取得了榜首位置。
  • Img-Diff数据集构建:2024年8月,Data-Juicer团队提出了Img-Diff,通过对比数据合成来增强多模态大型语言模型的性能,在MMVP benchmark中比GPT-4V高出12个点。

4.2 效果对比分析

为了全面展示Data-Juicer的实际效果,以下表格列出了在关键指标上的改进情况:

优化类别 指标描述 改进幅度
模型性能 在16个LLM基准测试中的平均得分 相对提高7.45%
模型评估 成对GPT-4评估胜率 提高16.25%
处理效率 单机处理时间 最高减少88.7%
资源使用 内存使用量 减少77.1%
资源使用 CPU使用量 减少73.1%
分布式加速 处理加速比 7.91倍

除了上述量化改进,Data-Juicer还在多个竞赛中展示了其价值。例如,"天池Better Synth多模态大模型数据合成赛"——第四届Data-Juicer大模型数据挑战赛在2024年7月正式启动,吸引了众多开发者参与。这些竞赛不仅证明了Data-Juicer在社区中的影响力,也为数据处理技术的进一步发展提供了实践平台。

五、社区生态与发展

5.1 项目发展与影响

Data-Juicer自开源以来,已经经历了多个重要版本迭代,功能不断完善:

  • v0.1.3:支持更多Python版本(3.8-3.10),同时支持多模态数据集的转换和处理(包括文本、图像和音频)。
  • v0.2.0:支持了更多的多模态数据(包括视频)相关特性,同时启动了DJ-SORA,为SORA-like大模型构建开放的大规模高质量数据集。

项目的学术价值也得到了认可,其相关论文被SIGMOD'24 industrial track接收。SIGMOD是数据库和数据管理领域顶级的国际会议,这表明Data-Juicer在学术和工业界都获得了认可。

作为ModelScope生态系统的重要组成部分,Data-Juicer借助这一国内规模最大、最活跃的AI开源模型社区,获得了广泛的曝光和应用。截至2024年3月,阿里云魔搭已经汇聚了3000多款优质模型及上千个数据集,为超过400万开发者提供模型及免费算力服务。

5.2 社区协作模式

Data-Juicer项目采用了一种开放的社区协作模式,鼓励外部贡献和参与。项目团队通过多种方式降低贡献门槛,其中算子分级方案是最具创新性的机制之一。该方案允许贡献者根据自身能力和兴趣,参与不同级别的算子开发,从Alpha级的功能原型到Stable级的工业强度算子。

社区还通过定期举办竞赛来激发参与和创新。例如,从2023年10月开始,Data-Juicer已经举办了多届以大模型数据为中心的LLM竞赛,包括FT-Data Ranker(1B赛道、7B赛道)、"数据混合"新视界——第二届Data-Juicer大模型数据挑战赛,以及ModelScope-Sora"数据导演"创意竞速——第三届Data-Juicer大模型数据挑战赛。这些竞赛不仅吸引了大量开发者参与,也推动了数据处理技术的创新和发展。


整理者:长路 时间:2025.9.28

评论区请在客户端页面查看