Skip to content

Latest commit

 

History

History
221 lines (160 loc) · 13.7 KB

README_ZH.md

File metadata and controls

221 lines (160 loc) · 13.7 KB

English | 中文

Data-Juicer: 为大语言模型提供更高质量、更丰富、更易“消化”的数据

Data-Juicer

Contributing

Document_List 文档列表 API Reference ModelScope-10+ Demos ModelScope-20+_Refined_Datasets

QualityClassifier AutoEvaluation

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_CACHEDATA_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 文件。

Documentation | 文档

数据处理菜谱

演示样例

开源协议

Data-Juicer 在 Apache License 2.0 协议下发布。

贡献

我们非常欢迎贡献新功能、修复漏洞以及讨论。请参考开发者指南

参考文献

我们的论文即将发布!