Datasets documentation

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

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
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 будет повторно использовать набор данных, если он уже существует. Но если вам нужен исходный набор данных без применения каких-либо функций обработки, повторно загрузите файлы, как показано ниже:

>>> 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