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大模型辅助下完成。