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 格式存储的。不同的数据集可能使用不同的存储格式,如 arrowjson,这些信息帮助用户理解数据集的存储方式和加载方法。

如果没有 dataset_info.json 会怎么样?

如果没有 dataset_info.json 文件,数据集将无法正确加载和管理。具体影响包括:

  1. 无法正确划分数据集:Hugging Face 无法识别数据集中的不同分割(如训练集、验证集、测试集),这会导致加载数据时的错误或不便。

  2. 下载和文件管理问题:Hugging Face 无法进行文件的完整性校验,也无法在下载时识别数据文件和缓存文件的位置。

  3. 无法使用元数据:无法获取数据集的描述、引用格式等元数据信息,导致用户无法快速了解数据集的背景。

关于如何创建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大模型辅助下完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值