数据集文档

缓存管理

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始使用

缓存管理

当您从 Hugging Face 下载数据集时,数据会存储在您计算机的本地。来自 Hugging Face 的文件通常存储在 huggingface_hub 缓存中,默认情况下位于 ~/.cache/huggingface/hub。有关更多详细信息以及如何更改其位置,请参阅 Hub 缓存文档

Hub 缓存允许 🤗 数据集避免每次使用数据集时都从 Hugging Face 重新下载数据集文件。

🤗 数据集也有自己的缓存来存储转换为 Arrow 格式的数据集(Dataset 对象使用的格式)。

本指南重点介绍 🤗 数据集缓存,并将向您展示如何

  • 更改缓存目录。
  • 控制如何从缓存加载数据集。
  • 清理目录中的缓存文件。
  • 启用或禁用缓存。

缓存目录

默认的 🤗 Datasets 缓存目录为 ~/.cache/huggingface/datasets。可以通过设置 shell 环境变量 HF_DATASETS_CACHE 为另一个目录来更改缓存位置。

$ export HF_DATASETS_CACHE="/path/to/another/directory/datasets"

加载数据集时,还可以选择更改数据缓存的位置。将 cache_dir 参数更改为您想要使用的路径。

>>> from datasets import load_dataset
>>> dataset = load_dataset('username/dataset', cache_dir="/path/to/another/directory/datasets")

下载模式

下载数据集后,可以通过 load_dataset()download_mode 参数控制其加载方式。默认情况下, 🤗 Datasets 会重用已存在的数据集。但如果您需要原始数据集,且未应用任何处理函数,则可以重新下载文件,如下所示。

>>> from datasets import load_dataset
>>> dataset = load_dataset('squad', download_mode='force_redownload')

有关下载模式的完整列表,请参阅 DownloadMode

缓存文件

使用 Dataset.cleanup_cache_files() 清理目录中的 Arrow 缓存文件。

# Returns the number of removed cache files
>>> dataset.cleanup_cache_files()
2

启用或禁用缓存

如果您在本地使用缓存文件,它会自动重新加载数据集,并应用您之前应用于数据集的任何转换。可以通过在 Dataset.map() 中设置参数 load_from_cache_file=False 来禁用此行为。

>>> updated_dataset = small_dataset.map(add_prefix, load_from_cache_file=False)

在上面的示例中, 🤗 Datasets 将再次对整个数据集执行函数 add_prefix,而不是从其先前状态加载数据集。

使用 disable_caching() 在全局范围内禁用缓存。

>>> from datasets import disable_caching
>>> disable_caching()

禁用缓存后, 🤗 Datasets 将不再在将转换应用于数据集时重新加载缓存文件。您应用于数据集的任何转换都需要重新应用。

如果您想从头开始重用数据集,请尝试在 load_dataset() 中设置 download_mode 参数。

提升性能

禁用缓存并将数据集复制到内存中可以加快数据集操作速度。有两种方法可以将数据集复制到内存中。

  1. datasets.config.IN_MEMORY_MAX_SIZE 设置为一个非零值(以字节为单位),该值适合您的 RAM 内存。

  2. 将环境变量 HF_DATASETS_IN_MEMORY_MAX_SIZE 设置为一个非零值。请注意,第一种方法优先级更高。

< > 在 GitHub 上更新