Datasets 文档

缓存管理

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

缓存管理

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

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

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

本指南重点介绍 🤗 Datasets 缓存,并向你展示如何:

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

缓存目录

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

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

或者,你可以设置 HF_DATASETS_CACHE 环境变量来仅控制数据集特定的缓存目录

$ export HF_DATASETS_CACHE="/path/to/datasets_cache"

⚠️ 这仅适用于由 datasets 库写入的文件(例如 Arrow 文件和索引)。
不会影响从 Hugging Face Hub 下载的文件(如模型、分词器或原始数据集源),这些文件默认位于 ~/.cache/huggingface/hub 并通过 HF_HUB_CACHE 变量单独控制

$ export HF_HUB_CACHE="/path/to/hub_cache"

💡 如果你想迁移所有 Hugging Face 缓存(包括数据集和 Hub 下载内容),请改用 HF_HOME 变量

$ export HF_HOME="/path/to/cache_root"

这将导致:

  • 数据集缓存 → /path/to/cache_root/datasets
  • Hub 缓存 → /path/to/cache_root/hub

这些区分在共享环境或网络文件系统(例如 NFS)中工作时尤其有用。
关于用户在未同时设置 HF_HUB_CACHEHF_DATASETS_CACHE 时遇到意外缓存位置的讨论,请参阅 issue #7480

加载数据集时,你还可以选择更改数据的缓存位置。将 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('rajpurkar/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 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.