数据集文档
缓存管理
并获得增强的文档体验
开始
缓存管理
当你从 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"
当你加载数据集时,你还可以选择更改数据缓存的位置。将 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
参数。
提高性能
禁用缓存并将数据集复制到内存中将加快数据集操作。有两种将数据集复制到内存中的选项
将
datasets.config.IN_MEMORY_MAX_SIZE
设置为适合你的 RAM 内存的非零值(以字节为单位)。将环境变量
HF_DATASETS_IN_MEMORY_MAX_SIZE
设置为非零值。请注意,第一种方法具有更高的优先级。