数据集配置指南#
本指南概述了如何在 Data-Juicer 框架中使用 YAML 格式配置数据集。允许您指定本地和远程数据集以及数据验证规则。
支持的数据集格式#
本地数据集#
local_json.yaml 配置文件用于指定以 JSON 格式本地存储的数据集。path 是必需的,用于指定本地数据集路径,可以是单个文件或目录。format 是可选的,用于指定数据集格式。
对于本地文件,DJ 将自动检测文件格式并相应地加载数据集。支持 parquet、jsonl、json、csv、tsv、txt 和 jsonl.gz 等格式
有关更多详细信息,请参阅 local_json.yaml。
dataset:
configs:
- type: local
path: path/to/your/local/dataset.json
format: json
dataset:
configs:
- type: local
path: path/to/your/local/dataset.parquet
format: parquet
Remote Huggingface 数据集#
remote_huggingface.yaml 配置文件用于指定 huggingface 数据集。type 和 source 固定为 'remote' 和 'huggingface',以定位 huggingface 加载逻辑。path 是必需的,用于标识 huggingface 数据集。name、split 和 limit 是可选的,用于指定数据集名称/拆分并限制要加载的样本数量。
更多详细信息请参阅 remote_huggingface.yaml。
dataset:
configs:
- type: 'remote'
source: 'huggingface'
path: "HuggingFaceFW/fineweb"
name: "CC-MAIN-2024-10"
split: "train"
limit: 1000
远程 Arxiv 数据集#
remote_arxiv.yaml 配置文件用于指定以 JSON 格式远程存储的数据集。type 和 source 固定为 'remote' 和 'arxiv',以定位 arxiv 加载逻辑。 lang、dump_date、force_download 和 url_limit 是可选的,用于指定数据集语言、转储日期、强制下载和 URL 限制。
有关更多详细信息,请参阅 remote_arxiv.yaml。
dataset:
configs:
- type: 'remote'
source: 'arxiv'
lang: 'en'
dump_date: 'latest'
force_download: false
url_limit: 2
其他支持的数据集格式#
有关更多详细信息和支持的数据集格式,请参阅 load_strategy.py。
其他功能#
数据混合#
mixture.yaml 配置文件演示了如何指定数据混合规则。DJ 将通过对数据集的一部分进行采样并应用适当的权重来混合数据集。
有关更多详细信息,请参阅 mixture.yaml。
dataset:
max_sample_num: 10000
configs:
- type: 'local'
weight: 1.0
path: 'path/to/json/file'
- type: 'local'
weight: 1.0
path: 'path/to/csv/file'
数据验证#
validator.yaml 配置文件演示了如何指定数据验证规则。DJ 将通过对数据集的一部分进行采样并应用验证规则来验证数据集。
有关更多详细信息和支持的验证器,请参阅 data_validator.py。
dataset:
configs:
- type: local
path: path/to/data.json
validators:
- type: swift_messages
min_turns: 2
max_turns: 20
sample_size: 1000
- type: required_fields
required_fields:
- "text"
- "metadata"
- "language"
field_types:
text: "str"
metadata: "dict"
language: "str"
JSONL 样本级容错(跳过坏行)#
若少数行损坏、或整行无法被 HF/ujson 解析,可使用 宽松 JSONL 加载:用标准库逐行 json.loads,解析失败 仅跳过该行 并打日志,其余样本照常进入流水线(下游算子仍面对与普通 JSONL 一致的 datasets.Dataset)。
启用方式(二选一):
load_jsonl_lenient: true
DATA_JUICER_JSONL_LENIENT=1 dj-process --config path/to/config.yaml
限制:
只会读
.jsonl/.jsonl.gz/.jsonl.zst;同目录下其它后缀(如.json)会被 跳过 并打警告,不再 整体回退到 HF/ujson(避免再次出现Value is too big!)。需要时可设suffixes: ['.jsonl']。适合 DefaultExecutor 本地 jsonl;与 Parquet 无关。
跳过的行请搜日志前缀
[lenient jsonl]。
JSON / JSONL 加载报错 Value is too big!#
本地 JSONL 由 HuggingFace datasets 解析时可能走 ujson;若某条样本里含有 超出 ujson 表示范围的整数(例如极长的数字型 ID),会报错 ValueError: Value is too big!。这与单行文本长短无关,多半是 数字字段 问题。
处理方式:
推荐(无需改数据):在运行前设置环境变量,让解析改走 CPython 标准库
json:DATA_JUICER_USE_STDLIB_JSON=1 dj-process --config path/to/config.yaml
从源头规避:把易超大的字段导出为 字符串(JSON 里加引号),再生成 JSONL。
换一种格式:例如改为 Parquet,由 Arrow 读入,不经过该 JSON 路径。
旧版 dataset_path 配置#
dataset_path 配置是指定数据集路径的历史版本方式。它简单易用,但缺乏灵活性。它可以在 yaml 或命令行输入中使用。一些示例:
命令行输入:
# 命令行输入
dj-process --dataset_path path/to/your/dataset.json
# 带权重的命令行输入
dj-process --dataset_path 0.5 path/to/your/dataset1.json 0.5 path/to/your/dataset2.json
Yaml 输入:
dataset_path:path/to/your/dataset.json