English | 中文
Data-Juicer 是一个以数据为中心的文本处理系统,旨在为大语言模型 (LLM) 提供更高质量、更丰富、更易“消化”的数据。 本项目在积极更新和维护中,我们将定期强化和新增更多的功能和数据菜谱。欢迎您加入我们推进 LLM 数据的开发和研究工作!
-
丰富的算子:内置了 50 多个核心 算子(OPs),包括 Formatters,Mappers,Filters,Deduplicators 等。
-
数据反馈回路:支持详细的数据分析,并提供自动报告生成功能,使您深入了解您的数据集。结合实时多维度自动评估功能,支持在 LLM 开发过程的多个阶段进行反馈循环。
-
全面的处理菜谱:为预训练、SFT、中英文等场景提供数十种预构建的数据处理菜谱。
-
灵活 & 易扩展:支持大多数数据格式(如jsonl、parquet、csv等),并允许灵活组合算子。支持自定义算子,以执行定制化的数据处理。
-
效率增强:提供高效的数据处理流水线,减少内存占用,提高生产力。
- 推荐 Python==3.8
- gcc >= 5 (at least C++14 support)
- 运行以下命令以安装
data_juicer
可编辑模式的最新版本
cd <path_to_data_juicer>
pip install -v -e .[all]
- 或是安装可选的依赖项:
cd <path_to_data_juicer>
pip install -v -e . # 安装最小依赖
pip install -v -e .[tools] # 安装部分工具库的依赖
依赖选项如下表所示:
标签 | 描述 |
---|---|
. | 安装支持 Data-Juicer 基础功能的最小依赖项 |
.[all] | 安装所有可选依赖项(即下面所有依赖项) |
.[dev] | 安装作为贡献者开发 Data-Juicer 所需的依赖项 |
.[tools] | 安装专用工具库(如质量分类器)所需的依赖项 |
- 核验安装是否成功:
import data_juicer as dj
print(dj.__version__)
- 以配置文件路径作为参数来运行
process_data.py
来处理数据集。
python tools/process_data.py --config configs/demo/process.yaml
- 注意:使用未保存在本地的第三方模型或资源的算子第一次运行可能会很慢,因为这些算子需要将相应的资源下载到缓存目录中。默认的下载缓存目录为
~/.cache/data_juicer
。您可通过设置 shell 环境变量DATA_JUICER_CACHE_HOME
更改缓存目录位置,您也可以通过同样的方式更改DATA_JUICER_MODELS_CACHE
或DATA_JUICER_ASSETS_CACHE
来分别修改模型缓存或资源缓存目录:
# 缓存主目录
export DATA_JUICER_CACHE_HOME="/path/to/another/directory"
# 模型缓存目录
export DATA_JUICER_MODELS_CACHE="/path/to/another/directory/models"
# 资源缓存目录
export DATA_JUICER_ASSETS_CACHE="/path/to/another/directory/assets"
- 以配置文件路径为参数运行
analyze_data.py
来分析数据集。
python tools/analyze_data.py --config configs/demo/analyser.yaml
- 注意:Analyser 只计算 Filter 算子的状态,其他的算子(例如 Mapper 和 Deduplicator)会在分析过程中被忽略。
- 运行
app.py
来在浏览器中可视化您的数据集。
streamlit run app.py
- 配置文件包含一系列全局参数和用于数据处理的算子列表。您需要设置:
- 全局参数:输入/输出 数据集路径,worker 进程数量等。
- 算子列表:列出用于处理数据集的算子及其参数。
- 您可以通过如下方式构建自己的配置文件:
- ➖:修改我们的样例配置文件
config_all.yaml
。该文件包含了所有算子以及算子对应的默认参数。您只需要移除不需要的算子并重新设置部分算子的参数即可。 - ➕:从头开始构建自己的配置文件。您可以参考我们提供的样例配置文件
config_all.yaml
,算子文档,以及 开发者指南. - 除了使用 yaml 文件外,您还可以在命令行上指定一个或多个参数,这些参数将覆盖 yaml 文件中的值。
- ➖:修改我们的样例配置文件
python xxx.py --config configs/demo/process.yaml --language_id_score_filter.lang=en
- 我们的 Formatter 目前支持一些常见的输入数据集格式:
- 单个文件中包含多个样本:jsonl/json、parquet、csv/tsv 等。
- 单个文件中包含单个样本:txt、code、docx、pdf 等。
- 但来自不同源的数据是复杂和多样化的,例如:
- 从 S3 下载的 arxiv 原始数据 包括数千个 tar 文件以及更多的 gzip 文件,并且所需的 tex 文件在 gzip 文件中,很难直接获取。
- 一些爬取的数据包含不同类型的文件(pdf、html、docx 等),并且很难提取额外的信息,例如表格、图表等。
- Data-Juicer 不可能处理所有类型的数据,欢迎提 Issues/PRs,贡献对新数据类型的处理能力!
- 因此我们在
tools/preprocess
中提供了一些常见的预处理工具,用于预处理这些类型各异的数据。- 欢迎您为社区贡献新的预处理工具。
- 我们强烈建议将复杂的数据预处理为 jsonl 或 parquet 文件。
- Overview | 概览
- Operator Zoo | 算子库
- Configs | 配置系统
- Developer Guide | 开发者指南
- Dedicated Toolkits | 专用工具箱
- Third-parties (LLM Ecosystems) | 第三方库(大语言模型生态)
- API references
- Data-Juicer 介绍 [ModelScope]
- 数据可视化:
- 基础指标统计 [ModelScope]
- 词汇多样性 [ModelScope]
- 算子效果 [ModelScope]
- 数据处理:
- 科学文献 (例如 ArXiv) [ModelScope]
- 编程代码 (例如 TheStack) [ModelScope]
- 中文指令数据 (例如 Alpaca-CoT) [ModelScope]
- 工具池:
- CommonCrawl 质量分类器 [ModelScope]
- 基于 HELM 的自动评测 [ModelScope]
- 数据采样及混合 [ModelScope]
- 数据处理回路 [ModelScope]
- 数据处理 HPO [ModelScope]
Data-Juicer 在 Apache License 2.0 协议下发布。
我们非常欢迎贡献新功能、修复漏洞以及讨论。请参考开发者指南。
我们的论文即将发布!