[中文主页] | [Docs] | [API] | [DJ-SORA] | [Awesome List]
Data-Juicer: 一个面向大型语言模型的一站式数据处理系统
Data-Juicer 是一个一站式的多模态数据处理系统,旨在为LLM数据提供更高质量、更具吸引力、更易消化的数据。
我们提供了一个带有托管JupyterLab的playground。您可以直接在浏览器中试用Data-Juicer! 如果您发现Data-Juicer对您的研究或开发有帮助,请引用我们的工作。
Data-Juicer 正在积极更新和维护中。我们将定期增强和添加更多功能、数据配方和数据集。 我们欢迎您加入我们(通过issues、PRs、Slack频道、钉钉群等),一起推动数据与模型的共同开发,并促进(多模态)LLM的研究和应用!
新闻
-
[2024-07-24] "天池Better Synth数据合成大赛" —— 我们的第四届以数据为中心的LLM竞赛已经启动!请访问竞赛的官方网站了解更多信息。
-
[2024-07-17] 我们利用Data-Juicer [Sandbox实验室套件](https://github.com/modelscope/data-juicer
-
面向生产环境:提供高效并行的数据处理管道(阿里云-PAI\Ray\Slurm\CUDA\OP Fusion),减少内存和CPU使用,具备自动容错优化。
-
全面的数据处理方案:提供数十种预构建的数据处理方案,用于预训练、微调、中英文等场景。在参考的LLaMA和LLaVA模型上进行了验证。
-
灵活且可扩展:支持大多数类型的数据格式(如jsonl、parquet、csv等),并允许灵活组合OPs。可以实现自己的OPs以进行定制化数据处理。
-
用户友好体验:设计简单,拥有全面的文档、简单的入门指南和演示配置,以及通过简单添加/删除现有配置中的OPs来进行直观配置。
文档索引
演示
- Data-Juicer介绍 [ModelScope] [HuggingFace]
- 数据可视化:
- 基本统计 [ModelScope] [HuggingFace]
- 词汇多样性 [ModelScope] [HuggingFace]
- Operator Insight (单一OP) [ModelScope] [HuggingFace]
- Operator Effect (多个OPs) [ModelScope] [HuggingFace]
- 数据处理:
- 科学文献(例如 arXiv)[ModelScope] [HuggingFace]
- 编程代码(例如 TheStack)[ModelScope] [HuggingFace]
- 中文指令数据(例如 Alpaca-CoT)[ModelScope] [HuggingFace]
- 工具池:
- 按语言划分数据集 [ModelScope] [HuggingFace]
- CommonCrawl的质量分类器 [ModelScope] [HuggingFace]
- 在 HELM 上的自动评估 [ModelScope] [HuggingFace]
- 数据采样和混合 [ModelScope] [HuggingFace]
- 数据处理循环 [ModelScope] [HuggingFace]
前提条件
- 推荐 Python>=3.8,<=3.10
- gcc >= 5(至少支持C++14)
安装
从源代码安装
- 运行以下命令以可编辑模式安装最新的基本
data_juicer
版本:
cd <path_to_data_juicer>
pip install -v -e .
- 一些OPs依赖于其他体积较大或平台兼容性较低的第三方库。您可以根据需要安装可选依赖项:
cd <path_to_data_juicer>
pip install -v -e . # 安装最小依赖项,支持基本功能
pip install -v -e .[tools] # 安装工具依赖项子集
依赖项选项如下所示:
标签 | 描述 |
---|---|
. 或 .[mini] | 安装最小依赖项以支持基本Data-Juicer功能。 |
.[all] | 安装除沙盒以外的所有依赖项。 |
.[sci] | 安装所有OPs的所有依赖项。 |
.[dist] | 安装用于分布式数据处理的依赖项。(实验性) |
.[dev] | 安装用于开发包的依赖项,以便贡献者使用。 |
.[tools] | 安装用于专用工具的依赖项,例如质量分类器。 |
.[sandbox] | 安装沙盒的所有依赖项。 |
使用pip
- 运行以下命令以使用
pip
安装最新发布的data_juicer
:
pip install py-data-juicer
- 注意:
使用Docker
- 您可以
-
从DockerHub中拉取我们的预构建镜像:
docker pull datajuicer/data-juicer:<version_tag>
-
或者运行以下命令以构建包含最新
data-juicer
的Docker镜像,使用提供的Dockerfile:docker build -t datajuicer/data-juicer:<version_tag> .
-
<version_tag>
的格式如`v0.2.0
-
预处理原始数据(可选)
- 我们的格式化工具目前支持一些常见的输入数据集格式:
- 一个文件中的多个样本:jsonl/json,parquet,csv/tsv等。
- 一个文件中的单个样本:txt,代码,docx,pdf等。
- 然而,不同来源的数据是复杂多样的。例如:
- 从S3下载的原始arXiv数据 包含成千上万个tar文件,其中还有更多的gzip文件,预期的tex文件嵌入在gzip文件中,因此难以直接获取。
- 一些爬取的数据包含不同种类的文件(pdf,html,docx等)。此外,表格、图表等信息也难以提取。
- 在Data-Juicer中不可能处理所有类型的数据,欢迎通过issues/PRs贡献新的数据类型处理方法!
- 因此,我们在
tools/preprocess
中提供了一些常用的预处理工具,供你预处理这些数据。- 欢迎你为社区贡献新的预处理工具。
- 我们强烈推荐将复杂数据预处理为jsonl或parquet文件。
针对Docker用户
- 如果你构建或拉取了
data-juicer
的docker镜像,你可以使用该docker镜像运行上述命令或工具。 - 直接运行:
# 直接运行数据处理
docker run --rm \ # 处理完成后删除容器
--name dj \ # 容器名称
-v <host_data_path>:<image_data_path> \ # 将数据或配置目录挂载到容器中
-v ~/.cache/:/root/.cache/ \ # 将缓存目录挂载到容器中以重用缓存和模型(推荐)
datajuicer/data-juicer:<version_tag> \ # 要运行的镜像
dj-process --config /path/to/config.yaml # 类似的数据处理命令
- 或进入正在运行的容器中以可编辑模式运行命令:
# 启动容器
docker run -dit \ # 在后台运行容器
--rm \
--name dj \
-v <host_data_path>:<image_data_path> \
-v ~/.cache/:/root/.cache/ \
datajuicer/data-juicer:latest /bin/bash
# 进入该容器后你可以在可编辑模式下使用data-juicer
docker exec -it <container_id> bash
数据处理配方
许可证
Data-Juicer在Apache License 2.0下发布。
贡献
我们处于一个快速发展的领域,非常欢迎对新功能、错误修复和更好文档的贡献。请参考开发者指南。
如果你有任何问题,请加入我们的讨论组。
鸣谢
Data-Juicer被广泛应用于各种大语言模型产品和研究项目中,包括阿里云同意的大模型,如用于金融分析的点金和阅读助手之闻,以及阿里云的AI平台(PAI)。 我们期待更多你的经验、建议和合作讨论!
Data-Juicer感谢并参考了多个社区项目,如Huggingface-Datasets,Bloom,RedPajama,Pile,Alpaca-Cot,Megatron-LM,DeepSpeed,Arrow,Ray,Beam,LM-Harness,HELM,等等。
参考文献
如果你发现我们的工作对你的研究或开发有帮助,请引用以下论文。
@inproceedings{chen2024datajuicer,
title={Data-Juicer: A One-Stop Data Processing System for Large Language Models},
author={Daoyuan Chen and Yilun Huang and Zhijian Ma and Hesen Chen and Xuchen Pan and Ce Ge and Dawei Gao and Yuexiang Xie and Zhaoyang Liu and Jinyang Gao and Yaliang Li and Bolin Ding and Jingren Zhou},
booktitle={International Conference on Management of Data},
year={2024}
}