datajuicer / data-juicer

datajuicer/data-juicer

open_in_new前往仓库

面向基础模型的数据处理工具,支持多种数据格式,提供高效清洗、转换和增强功能,助力模型训练与优化。

项目概览

项目概述

Data-Juicer 是一个面向基础模型(Foundation Models)的数据处理系统,旨在将原始数据转化为 AI 就绪的高质量数据。它提供模块化的数据处理算子(Operators),支持文本、图像、音频、视频及多模态数据的清洗、过滤、去重、合成与分析。项目由阿里巴巴通义实验室发起,与阿里云 PAI、Anyscale(Ray 团队)、中山大学、NVIDIA(NeMo 团队)等合作开发,采用 Apache-2.0 许可证。

核心功能

  • 200+ 数据处理算子:涵盖文本、图像、音频、视频和多模态数据的过滤、映射、去重、聚合、选择等操作。
  • 可复现的数据菜谱(Recipe):基于 YAML 配置的流水线,支持版本化、共享和复用。
  • 全谱系数据智能:支持预训练、微调、强化学习、智能体(Agent)数据、RAG 索引构建等场景。
  • 生产级性能:支持单机到千节点集群的扩展,具备算子融合、自适应并行、CUDA 加速等优化。
  • 可观测性:内置追踪、日志和作业管理工具,便于调试和审计。
  • 服务化接口:提供 API 服务和 MCP 服务器,支持与外部系统集成。

适用与不适用场景

适用场景:

  • 大规模预训练语料的清洗与去重。
  • 指令微调、RLHF 数据的构建与优化。
  • 智能体交互数据的整理与质量评估。
  • RAG 知识库的构建与数据增强。
  • 多模态数据(图像、视频、音频)的处理与合成。
  • 数据质量分析与可视化。

不适用场景:

  • 实时流式数据处理(Data-Juicer 主要面向离线批处理)。
  • 需要图形化界面进行数据标注的场景(项目未提供标注工具)。
  • 非 Python 生态的数据处理需求(项目为 Python 库)。

技术架构与依赖

  • 核心语言:Python
  • 分布式计算:基于 Ray,支持多机集群部署。
  • 数据格式:支持 JSONL、JSON、Parquet、CSV、TSV、TXT 等,以及 HuggingFace 数据集。
  • 依赖管理:使用 uv 和 pyproject.toml,支持按需延迟加载依赖。
  • 主要依赖库:HuggingFace Datasets、Apache Arrow、Ray、PyAV、FFmpeg 等(具体版本见 pyproject.toml)。
  • 可选集成:阿里云 PAI、ModelScope、HuggingFace Hub、S3、HDFS 等。

安装与快速开始

安装:

uv pip install py-data-juicer

快速开始:

dj-process --config demos/process_simple/process.yaml

Python 方式:

from data_juicer.core.data import NestedDataset
from data_juicer.ops.filter import TextLengthFilter
from data_juicer.ops.mapper import WhitespaceNormalizationMapper

ds = NestedDataset.from_dict({
    "text": ["Short", "This passes the filter.", "Text   with   spaces"]
})
res_ds = ds.process([
    TextLengthFilter(min_len=10),
    WhitespaceNormalizationMapper()
])

for s in res_ds:
    print(s)

典型使用方法

配置数据菜谱(YAML):

process:
  - text_length_filter:
      min_len: 10
      max_len: 1000
  - whitespace_normalization_mapper: {}

运行处理:

dj-process --config config.yaml

数据分析:

dj-analyze --config config.yaml

分布式处理(Ray):

ray start --head
dj-process --config config.yaml --executor_type ray

配置与部署要点

  • 缓存管理:支持基于 HuggingFace 的缓存,可通过 use_cache、cache_compress 等配置优化。
  • 检查点与恢复:ray_partitioned 执行器支持断点续跑,通过 --resume 恢复。
  • 导出配置:支持分片导出、并行导出、S3 导出等。
  • 环境变量:可配置缓存目录、临时目录、模型缓存等。
  • 分布式部署:需安装 .[dist] 依赖,并启动 Ray 集群。
  • 安全注意:设置 temp_dir 时避免指向系统关键目录。

限制、风险与许可证

  • 许可证:Apache-2.0。
  • 限制:部分算子依赖外部模型(如 HuggingFace 模型),可能需要 GPU 和网络下载;分布式模式需要 Ray 集群。
  • 风险:数据隐私与合规性需用户自行评估;算子可能引入额外依赖,需注意版本兼容性。
  • 引用:若使用本项目,请引用相关论文(见 README)。

官方链接

信息来源和分析时间

  • 信息来源:GitHub 仓库 README、文档(docs/ 目录)、发布说明。
  • 分析时间:2026-08-07(基于仓库最新发布版本)。