Hugging Face Dataset的 dataset_info.json 文件详解
Hugging Face Dataset的 dataset_info.json
文件详解
什么是 dataset_info.json
文件?
在使用 Hugging Face(HF)数据集时,dataset_info.json
文件是一个描述数据集及其元数据的重要配置文件。这个文件包含了有关数据集的基本信息、下载链接、数据集的分割、数据大小、文件格式等元数据。它通常位于数据集缓存目录下,在下载并解压数据集时由 HF 自动生成。
以下是 dataset_info.json
文件的常见结构示例:来源于:allenai/tulu-3-sft-mixture
{
"description": "",
"citation": "",
"homepage": "",
"license": "",
"features": {
"id": {
"dtype": "string",
"_type": "Value"
},
"messages": [
{
"content": {
"dtype": "string",
"_type": "Value"
},
"role": {
"dtype": "string",
"_type": "Value"
}
}
],
"source": {
"dtype": "string",
"_type": "Value"
}
},
"builder_name": "parquet",
"dataset_name": "tulu-3-sft-mixture",
"config_name": "default",
"version": {
"version_str": "0.0.0",
"major": 0,
"minor": 0,
"patch": 0
},
"splits": {
"train": {
"name": "train",
"num_bytes": 2914253735,
"num_examples": 939343,
"shard_lengths": [
139000,
46558,
86000,
192557,
217114,
258114
],
"dataset_name": "tulu-3-sft-mixture"
}
},
"download_checksums": {
"hf://datasets/allenai/tulu-3-sft-mixture@55e9fd6d41c3cd1a98270dff07557bc2a1e1ba91/data/train-00000-of-00006.parquet": {
"num_bytes": 361046463,
"checksum": null
},
"hf://datasets/allenai/tulu-3-sft-mixture@55e9fd6d41c3cd1a98270dff07557bc2a1e1ba91/data/train-00001-of-00006.parquet": {
"num_bytes": 477019443,
"checksum": null
},
"hf://datasets/allenai/tulu-3-sft-mixture@55e9fd6d41c3cd1a98270dff07557bc2a1e1ba91/data/train-00002-of-00006.parquet": {
"num_bytes": 146926607,
"checksum": null
},
"hf://datasets/allenai/tulu-3-sft-mixture@55e9fd6d41c3cd1a98270dff07557bc2a1e1ba91/data/train-00003-of-00006.parquet": {
"num_bytes": 162138577,
"checksum": null
},
"hf://datasets/allenai/tulu-3-sft-mixture@55e9fd6d41c3cd1a98270dff07557bc2a1e1ba91/data/train-00004-of-00006.parquet": {
"num_bytes": 149552548,
"checksum": null
},
"hf://datasets/allenai/tulu-3-sft-mixture@55e9fd6d41c3cd1a98270dff07557bc2a1e1ba91/data/train-00005-of-00006.parquet": {
"num_bytes": 116271230,
"checksum": null
}
},
"download_size": 1412954868,
"dataset_size": 2914253735,
"size_in_bytes": 4327208603
}
dataset_info.json
文件的作用
1. 描述数据集的元信息
dataset_info.json
文件包含了数据集的基本描述信息,包括数据集的名称、版本、许可证、来源等。这些信息对于理解数据集的背景和使用方式非常重要。例如:
description
:简短描述数据集的内容和用途。citation
:该数据集的引用方式。homepage
:数据集的主页链接。license
:数据集的许可证类型。
2. 划分数据集的结构
数据集通常会有多个子集(例如,训练集、验证集、测试集)。dataset_info.json
文件中记录了数据集的分割信息,如每个分割的大小、包含的样本数等。在上述例子中,splits
字段描述了训练集的细节:
name
:分割名称,如train
。num_bytes
:该分割数据的大小,以字节为单位。num_examples
:该分割中样本的数量。shard_lengths
:该分割包含的每个子文件的大小(按样本数)。
3. 下载检查和文件管理
dataset_info.json
文件还记录了每个数据文件的下载链接和校验和信息。在下载数据时,Hugging Face 会根据这些信息验证文件的完整性,确保下载的文件没有被损坏。例如:
download_checksums
:存储每个数据文件的校验和信息,确保下载时文件的完整性。
4. 数据集的构建信息
文件中的 builder_name
表示数据集的构建器类型。例如 parquet
表示数据集是以 parquet
格式存储的。不同的数据集可能使用不同的存储格式,如 arrow
或 json
,这些信息帮助用户理解数据集的存储方式和加载方法。
如果没有 dataset_info.json
会怎么样?
如果没有 dataset_info.json
文件,数据集将无法正确加载和管理。具体影响包括:
-
无法正确划分数据集:Hugging Face 无法识别数据集中的不同分割(如训练集、验证集、测试集),这会导致加载数据时的错误或不便。
-
下载和文件管理问题:Hugging Face 无法进行文件的完整性校验,也无法在下载时识别数据文件和缓存文件的位置。
-
无法使用元数据:无法获取数据集的描述、引用格式等元数据信息,导致用户无法快速了解数据集的背景。
关于如何创建dataset_info.json文件,请参考笔者的另一篇文章:Huggingface数据集采样之后得到的arrow文件无法用Dataset.load_from_disk加载解决方法
使用 datasets
库上传数据集
如果你准备将数据集上传到 Hugging Face Hub,dataset_info.json
文件是必需的。上传时,Hugging Face 会根据该文件生成数据集的描述和元数据。
结论
dataset_info.json
文件是 Hugging Face 数据集管理中不可或缺的一部分,负责记录数据集的详细信息、结构、下载链接、文件大小等。没有它,数据集将无法正确加载、管理和验证。
后记
2024年12月29日12点02分于上海,在GPT4o大模型辅助下完成。