Datasets documentation
Управление кэшем
Управление кэшем
Когда вы загружаете набор данных с 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().
Повышение производительности
Отключение кэша и копирование набора данных в оперативную память ускорят операции с ним. Существует два варианта копирования набора данных в память:
Установите для
datasets.config.IN_MEMORY_MAX_SIZEненулевое значение (в байтах), которое помещается в вашу оперативную память.Установите переменную окружения
HF_DATASETS_IN_MEMORY_MAX_SIZEв ненулевое значение. Обратите внимание, что первый метод имеет более высокий приоритет.