# Gestión de la caché

Cuando descargas un conjunto de datos de Hugging Face, los datos se almacenan localmente en tu computadora. Los archivos de Hugging Face se almacenan de forma habitual en la caché de `huggingface_hub`, que por defecto se encuentra en `~/.cache/huggingface/hub`. Consulta la [documentación de la caché de Hub](https://huggingface.co/docs/huggingface_hub/guides/manage-cache) para más detalles y cómo cambiar su ubicación.

La caché de Hub permite a 🤗 Datasets evitar la descarga repetida de los archivos de conjuntos de datos desde Hugging Face cada vez que los utilizas.

🤗 Datasets también tiene su propia caché para almacenar conjuntos de datos convertidos al formato Arrow (el formato utilizado por los objetos [Dataset](/docs/datasets/main/es/package_reference/main_classes#datasets.Dataset)).

Esta guía se centra en la caché de 🤗 Datasets y te mostrará cómo:

- Cambiar el directorio de caché.
- Controla cómo se carga un conjunto de datos desde la caché.
- Limpia los archivos de caché en el directorio.
- Activar o desactivar la caché.

## Directorio de caché

El directorio de caché predeterminado de 🤗 Datasets es `~/.cache/huggingface/datasets`. Cambie la ubicación de la caché estableciendo la variable de entorno de la shell, `HF_HOME`, en otro directorio:

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

Alternativamente, puede establecer la variable de entorno `HF_DATASETS_CACHE` para controlar únicamente el directorio de caché específico de datasets:

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

⚠️ Esto solo se aplica a los archivos escritos por la biblioteca `datasets` (p. ej., archivos e índices Arrow). No **afecta** a los archivos descargados desde Hugging Face Hub (como modelos, tokenizadores o fuentes de datos crudos), que se encuentran por defecto en `~/.cache/huggingface/hub` y se controlan por separado mediante la variable `HF_HUB_CACHE`:

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

💡 Si deseas reubicar todas las cachés de Hugging Face, incluidas las descargas de datasets y del hub, usa la variable `HF_HOME` en su lugar:

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

Esto da como resultado:
- caché de datasets → `/path/to/cache_root/datasets`
- caché de hub → `/path/to/cache_root/hub`

Estas distinciones son especialmente útiles al trabajar en entornos compartidos o sistemas de archivos en red (p. ej., NFS). Consulte [issue #7480](https://github.com/huggingface/datasets/issues/7480) para ver la discusión sobre cómo los usuarios encontraron ubicaciones de caché inesperadas cuando `HF_HUB_CACHE` no se estableció junto con `HF_DATASETS_CACHE`.

Al cargar un conjunto de datos, también tienes la opción de cambiar dónde se almacena en caché. Cambia el parámetro `cache_dir` a la ruta que desees:

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

## Modo de descarga

Controla la reutilización de los archivos fuente descargados y los conjuntos de datos preparados en [load_dataset()](/docs/datasets/main/es/package_reference/loading_methods#datasets.load_dataset) con el parámetro `download_mode`. De forma predeterminada, 🤗 Datasets los reutilizará si existen. Para volver a descargar los archivos fuente y reconstruir el conjunto de datos, usa `force_redownload`:

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

Consulte [DownloadMode](/docs/datasets/main/es/package_reference/builder_classes#datasets.DownloadMode) para obtener la lista completa de modos de descarga.

## Archivos de caché

Limpia los archivos de caché de Arrow en el directorio con [Dataset.cleanup_cache_files()](/docs/datasets/main/es/package_reference/main_classes#datasets.Dataset.cleanup_cache_files):

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

## Activar o desactivar la caché

Si estás usando un archivo en caché localmente, se recargará automáticamente el conjunto de datos con las transformaciones anteriores que aplicaste al conjunto de datos. Desactiva este comportamiento estableciendo el argumento `load_from_cache_file=False` en [Dataset.map()](/docs/datasets/main/es/package_reference/main_classes#datasets.Dataset.map):

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

En el ejemplo anterior, 🤗 Datasets ejecutará la función `add_prefix` sobre todo el conjunto de datos de nuevo, en lugar de cargar el conjunto de datos desde su estado anterior.

Desactive la caché a escala global con [disable_caching()](/docs/datasets/main/es/package_reference/main_classes#datasets.disable_caching):

```py
>>> from datasets import disable_caching
>>> disable_caching()
```

Cuando desactiva la caché, 🤗 Datasets ya no volverá a cargar los archivos en caché al aplicar transformaciones a los conjuntos de datos. Cualquier transformación que aplique a su conjunto de datos deberá volver a aplicarse.

> [!TIP]
> Si desea reutilizar un dataset desde cero, intente establecer el parámetro `download_mode` en [load_dataset()](/docs/datasets/main/es/package_reference/loading_methods#datasets.load_dataset) en su lugar.

## Mejorar el rendimiento

Desactivar la caché y copiar el conjunto de datos en memoria acelerará las operaciones del conjunto de datos. Hay dos opciones para copiar el conjunto de datos en memoria:

1. Establezca `datasets.config.IN_MEMORY_MAX_SIZE` en un valor distinto de cero (en bytes) que quepa en su memoria RAM.

2. Establezca la variable de entorno `HF_DATASETS_IN_MEMORY_MAX_SIZE` en un valor distinto de cero. Tenga en cuenta que el primer método tiene mayor prioridad.

