data-juicer
为大型基础模型(LLM/VLM)训练量身打造的数据处理框架,200+模块化算子一键清洗语料
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
为大型基础模型(LLM/VLM)训练量身打造的数据处理框架,200+模块化算子一键清洗语料
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Data-Juicer 官方 Logo

想象你拥有一条盛产河鲜的天然河流——鱼虾蟹贝应有尽有,但直接生吃腥味太重、寄生虫太多,根本没法端上餐桌。你需要的不是更多的鱼,而是一套处理流程:宰杀、清洗、去骨、调味、烹饪,把 raw fish 变成可以入口的美味。
训练 AI 大模型也是一样道理。互联网上爬取来的原始语料,就像那条盛产河鲜的河流——数据量大、种类丰富,但噪音太多、质量参差不齐:广告文案、垃圾评论、乱码、重复内容、不当言论……直接塞给模型训练,效果往往很差。
Data-Juicer(数据榨汁机) 就是为解决这个痛点而生的——它是一个专为大型基础模型设计的数据处理框架,把海量、嘈杂的原始语料,通过模块化的「数据清洗管道」,变成高质量、模型可直接消费的精炼数据。
Data-Juicer 最早由蚂蚁集团(Ant Group)内部团队开发,目标是支撑其金融大模型的训练。随着项目规模扩大,团队发现市面上的数据处理工具要么太偏向搜索引擎场景、要么缺乏对多模态数据的原生支持、要么在扩展性上存在瓶颈。于是从零构建了这个框架,并在 2023 年正式开源。
开源之后迅速吸引了广泛关注——不只是因为背后有蚂蚁的技术背书,更因为它解决了一个行业共性问题:基础模型训练中,数据准备的痛苦程度往往不亚于模型训练本身,但这个环节长期缺乏系统性的工具支撑。
Data-Juicer 的核心架构可以用一句话概括:以 YAML 配置文件驱动,用模块化算子(Operator)构建数据处理流水线。
用户不需要写大量 Python 代码,只需编写一个 YAML 配置文件,声明要用哪些算子、以什么顺序处理、数据从哪里进从哪里出,框架就会自动编排执行。
# 一个典型的 data-juicer 配置示例
process_list:
- path: "data_juicer.ops.filter.language_score_filter"
params:
lang: "en"
min_score: 0.7
- path: "data_juicer.ops.deduplicator.document_deduplicator"
params:
lowercase: true
这种设计的精妙之处在于:配置即代码,代码即配置。YAML 文件既是文档也是执行计划,新人可以在不懂底层实现的情况下快速上手,同时高级用户可以通过自定义算子扩展框架能力。
Data-Juicer 内置了 200+ 预置算子,分为五大类别:
Data-Juicer 不仅仅是一个文本处理工具。它对多模态数据有原生支持:
这意味着 Data-Juicer 可以作为多模态大模型(如 LLaVA、GPT-4V)训练数据准备的统一入口。
Data-Juicer 提供了完整的 Dockerfile,基于 CUDA 12.6 + Ubuntu 24.04 多阶段构建,所有依赖预装完毕:
docker build -t data-juicer -f Dockerfile .
docker run --gpus all -it data-juicer bash
进入容器后即可运行 pipelines,无需在宿主机上配置 Python 环境。
如果只是轻度使用,或者在已有 GPU 环境中测试:
pip install data-juicer[all]
dj-process --config my_pipeline.yaml
对于不熟悉命令行的用户,Data-Juicer 内置了基于 Streamlit 的 Web 界面(app.py),支持:
streamlit run app.py
生产环境中,可以用 service.py 将 Data-Juicer 作为 REST API 服务部署,与现有的 MLOps 平台无缝集成:
python service.py
# POST /process — 执行数据处理
# GET /stats — 获取数据集统计信息
Data-Juicer 的核心执行器(Executor)基于 Ray 构建,支持分布式并行处理。对于 TB 级别的超大数据集,只需简单配置即可水平扩展:
executor:
type: RayExecutor
num_workers: 32
这解决了传统 Python 数据处理脚本的两个核心问题:内存爆炸(通过流式处理)和单核瓶颈(通过 Ray 自动并行化)。
每个算子都继承自统一的 BaseOp 基类,实现了类型化的参数校验——在配置文件中写错参数名或类型,框架会在加载阶段直接报错,而不是等到运行时才暴露问题。这对大规模数据处理至关重要。
Data-Juicer 的每个预置算子都有对应的单元测试和集成测试。官方维护了一套「黄金数据集」(Golden Dataset),用于回归测试,确保算子在迭代更新中不会引入质量退化。
最低配置:无 GPU 也能运行文本过滤和去重,但多模态算子和大规模处理强烈建议 GPU 加速。
推荐配置:
上手门槛:中等。YAML 配置文件的上手曲线较平缓,但如果需要自定义算子,需要具备 Python 基础和对数据处理流程的理解。
200+ 预置算子固然丰富,但也带来了一定的学习成本——对于简单任务可能「杀鸡用牛刀」。此外,部分算子(如基于深度学习的美学评分)的推理速度较慢,在超大规模数据上可能成为瓶颈。
虽然 README 同时提供了英文和中文版本,但高级功能(如自定义 Ray 分布式集群)的文档描述仍有改进空间,新手可能需要深入阅读源码才能理解某些设计决策。
Data-Juicer 原生支持 HuggingFace Dataset 格式,但对于完全自定义格式的数据集,需要额外的格式适配工作。
Data-Juicer 的出现,标志着基础模型训练中「数据工程」环节开始走向系统化和工具化。在此之前,大多数团队的解决方案是:写一堆散乱的 Python 脚本 + Makefile + shell 粘合逻辑。这在数据量小时还能勉强维护,一旦团队扩大、数据规模增长,脚本的混乱就成了效率杀手。
Data-Juicer 提供了一套可复用、可测试、可分享的算子体系,让数据工程师可以将清洗逻辑抽象为可组合的模块,而不是每次都从头写「一次性脚本」。这对于推动 AI 行业的工程化实践有积极意义。
从 Stars 增长曲线看,Data-Juicer 在 2024 年保持了稳定增长,反映了市场对高质量数据处理工具的持续需求。随着更多多模态算子的加入,它有望成为多模态模型训练数据准备的标配工具之一。
适合谁用?