Datasets documentation

Gestion du cache

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Gestion du cache

Lorsque vous téléchargez un jeu de données depuis Hugging Face, les données sont stockées localement sur votre ordinateur. Les fichiers de Hugging Face sont stockés comme d'habitude dans le cache huggingface_hub, situé par défaut à ~/.cache/huggingface/hub. Consultez la documentation du cache du Hub pour plus de détails et pour savoir comment modifier son emplacement.

Le cache du Hub permet à 🤗 Datasets d'éviter de re-télécharger les fichiers de jeu de données depuis Hugging Face à chaque utilisation.

🤗 Datasets possède également son propre cache pour stocker les jeux de données convertis au format Arrow (le format utilisé par les objets Dataset).

Ce guide se concentre sur le cache de 🤗 Datasets et vous montrera comment :

  • Changer le répertoire de cache.
  • Contrôler la manière dont un jeu de données est chargé depuis le cache.
  • Nettoyer les fichiers de cache dans le répertoire.
  • Activer ou désactiver la mise en cache.

Répertoire de cache

Le répertoire de cache par défaut de 🤗 Datasets est ~/.cache/huggingface/datasets. Modifiez l'emplacement du cache en définissant la variable d'environnement du shell, HF_HOME, sur un autre répertoire :

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

Sinon, vous pouvez définir la variable d’environnement HF_DATASETS_CACHE pour contrôler uniquement le répertoire de cache spécifique aux datasets :

$ export HF_DATASETS_CACHE="/path/to/datasets_cache"

⚠️ Cela ne concerne que les fichiers écrits par la bibliothèque datasets (par exemple, les fichiers Arrow et les index).
Cela n'a pas d'effet sur les fichiers téléchargés depuis le Hugging Face Hub (tels que les modèles, les tokenizers ou les sources de données brutes), qui sont situés par défaut dans ~/.cache/huggingface/hub et contrôlés séparément via la variable HF_HUB_CACHE :

$ export HF_HUB_CACHE="/path/to/hub_cache"

💡 Si vous souhaitez déplacer tous les caches Hugging Face — y compris les téléchargements de datasets et du hub — utilisez plutôt la variable HF_HOME :

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

Cela donne :

  • cache des datasets → /path/to/cache_root/datasets
  • cache du hub → /path/to/cache_root/hub

Ces distinctions sont particulièrement utiles lors du travail dans des environnements partagés ou sur des systèmes de fichiers réseau (par exemple, NFS).
Consultez la question #7480 pour la discussion sur la manière dont les utilisateurs ont rencontré des emplacements de cache inattendus lorsque HF_HUB_CACHE n’était pas défini en même temps que HF_DATASETS_CACHE.

Lors du chargement d'un jeu de données, vous avez également la possibilité de modifier l'emplacement de la mise en cache des données. Modifiez le paramètre cache_dir avec le chemin souhaité :

>>> from datasets import load_dataset
>>> dataset = load_dataset('username/dataset', cache_dir="/path/to/another/directory/datasets")

Mode de téléchargement

Contrôlez la réutilisation des fichiers sources téléchargés et des jeux de données préparés dans load_dataset() à l'aide du paramètre download_mode. Par défaut, 🤗 Datasets les réutilise s'ils existent. Pour télécharger à nouveau les fichiers sources et reconstruire le jeu de données, utilisez force_redownload :

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

Reportez-vous à DownloadMode pour la liste complète des modes de téléchargement.

Fichiers de cache

Nettoyez les fichiers de cache Arrow du répertoire avec Dataset.cleanup_cache_files() :

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

Activer ou désactiver la mise en cache

Si vous utilisez un fichier en cache localement, le jeu de données sera automatiquement rechargé avec toutes les transformations précédemment appliquées. Désactivez ce comportement en définissant l’argument load_from_cache_file=False dans Dataset.map() :

>>> updated_dataset = small_dataset.map(add_prefix, load_from_cache_file=False)

Dans l'exemple ci-dessus, 🤗 Datasets exécutera à nouveau la fonction add_prefix sur l'ensemble de données complet au lieu de charger l'ensemble de données depuis son état précédent.

Désactivez la mise en cache à l'échelle globale avec disable_caching() :

>>> from datasets import disable_caching
>>> disable_caching()

Lorsque vous désactivez la mise en cache, 🤗 Datasets ne rechargeera plus les fichiers mis en cache lors de l'application de transformations aux jeux de données. Toute transformation appliquée à votre jeu de données devra être réappliquée.

Si vous souhaitez réutiliser un dataset à partir de zéro, essayez plutôt de définir le paramètre download_mode dans load_dataset().

Améliorer les performances

Désactiver le cache et copier le jeu de données en mémoire accélère les opérations sur le jeu de données. Il existe deux options pour copier le jeu de données en mémoire :

  1. Définissez datasets.config.IN_MEMORY_MAX_SIZE sur une valeur non nulle (en octets) qui tient dans votre mémoire RAM.

  2. Définissez la variable d’environnement HF_DATASETS_IN_MEMORY_MAX_SIZE sur une valeur non nulle. Notez que la première méthode a une priorité plus élevée.

Update on GitHub