Datasets 文档
缓存管理
并获得增强的文档体验
开始使用
缓存管理
当您从 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)时特别有用。
请参阅 issue #7480 了解有关用户在未设置 HF_HUB_CACHE 而仅设置 HF_DATASETS_CACHE 时遇到意外缓存位置的讨论。
当您加载数据集时,您还可以选择更改数据缓存的位置。将 cache_dir 参数更改为您想要的路径
>>> from datasets import load_dataset
>>> dataset = load_dataset('username/dataset', cache_dir="/path/to/another/directory/datasets")下载模式
下载数据集后,请使用 download_mode 参数通过 load_dataset() 控制其加载方式。默认情况下,如果数据集已存在,🤗 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参数。
提高性能
禁用缓存并将数据集复制到内存中将加快数据集操作。有两种将数据集复制到内存中的选项
将
datasets.config.IN_MEMORY_MAX_SIZE设置为一个适合您 RAM 内存的非零值(以字节为单位)。将环境变量
HF_DATASETS_IN_MEMORY_MAX_SIZE设置为一个非零值。请注意,第一种方法具有更高的优先级。