Datasets documentation

Управление кэшем

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Управление кэшем

Когда вы загружаете набор данных с Hugging Face, данные сохраняются локально на вашем компьютере. Файлы с Hugging Face хранятся в кэше huggingface_hub по стандартному пути ~/.cache/huggingface/hub. Подробнее о кэше Hub и о том, как изменить его расположение, см. в документации по кэшу Hub.

Кэш Hub позволяет 🤗 Datasets избегать повторной загрузки файлов датасетов с Hugging Face каждый раз при их использовании.

🤗 Datasets также имеет собственный кэш для хранения датасетов, преобразованных в формат Arrow (формат, используемый объектами Dataset).

В этом руководстве рассматривается кеш 🤗 Datasets, и в нём показано, как:

  • Измените каталог кэша.
  • Управление способом загрузки набора данных из кэша.
  • Удалите файлы кэша в каталоге.
  • Включить или отключить кэширование.

Каталог кэша

Каталог кэша 🤗 Datasets по умолчанию — ~/.cache/huggingface/datasets. Чтобы изменить расположение кэша, задайте переменной окружения оболочки HF_HOME значение другого каталога:

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

В качестве альтернативы вы можете задать переменную окружения 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 — включая загрузки датасетов и хаб-файлов — используйте переменную HF_HOME:

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

В результате получается:

  • кэш datasets → /path/to/cache_root/datasets
  • hub cache → /path/to/cache_root/hub

Эти различия особенно полезны при работе в общих средах или сетевых файловых системах (например, NFS).
Обсуждение того, как пользователи сталкивались с неожиданными расположениями кэша, когда HF_HUB_CACHE не был задан вместе с HF_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 переиспользует их, если они уже существуют. Чтобы скачать исходные файлы заново и пересобрать набор данных, используйте force_redownload:

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

Список всех режимов загрузки см. в DownloadMode.

Файлы кэша

Очистите файлы кэша Arrow в каталоге с помощью Dataset.cleanup_cache_files():

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

Включение или отключение кэширования

Если вы используете кэшированный файл локально, набор данных будет автоматически перезагружен вместе с ранее применёнными к нему преобразованиями. Чтобы отключить это поведение, установите аргумент load_from_cache_file=False в Dataset.map():

>>> 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 больше не будет перезагружать файлы из кэша при применении трансформаций к наборам данных. Любая трансформация, применённая к вашему набору данных, будет требовать повторного применения.

Если вы хотите использовать набор данных с нуля, попробуйте вместо этого задать параметр download_mode в load_dataset().

Повышение производительности

Отключение кэша и копирование набора данных в оперативную память ускорят операции с ним. Существует два варианта копирования набора данных в память:

  1. Установите для datasets.config.IN_MEMORY_MAX_SIZE ненулевое значение (в байтах), которое помещается в вашу оперативную память.

  2. Установите переменную окружения HF_DATASETS_IN_MEMORY_MAX_SIZE в ненулевое значение. Обратите внимание, что первый метод имеет более высокий приоритет.

Update on GitHub