# Gerenciamento de cache

Ao baixar um conjunto de dados do Hugging Face, os dados são armazenados localmente no seu computador. Os arquivos do Hugging Face são armazenados normalmente no cache do `huggingface_hub`, que fica em `~/.cache/huggingface/hub` por padrão. Consulte a [documentação do cache do Hub](https://huggingface.co/docs/huggingface_hub/guides/manage-cache) para mais detalhes e como alterar sua localização.

O cache do Hub permite que o 🤗 Datasets evite baixar novamente os arquivos de datasets do Hugging Face toda vez que você os usa.

🤗 O Datasets também possui seu próprio cache para armazenar datasets convertidos no formato Arrow (o formato usado por objetos [Dataset](/docs/datasets/v5.2.0/pt/package_reference/main_classes#datasets.Dataset)).

Este guia se concentra no cache do 🤗 Datasets e mostrará como:

- Alterne o diretório de cache.
- Controle como um conjunto de dados é carregado do cache.
- Limpe os arquivos de cache no diretório.
- Ative ou desative o cache.

## Diretório de cache

O diretório de cache padrão do 🤗 Datasets é `~/.cache/huggingface/datasets`. Altere a localização do cache definindo a variável de ambiente do shell, `HF_HOME`, para outro diretório:

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

Alternativamente, você pode definir a variável de ambiente `HF_DATASETS_CACHE` para controlar apenas o diretório de cache específico dos datasets:

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

⚠️ This only applies to files written by the `datasets` library (e.g., Arrow files and indices). It does **not** affect files downloaded from the Hugging Face Hub (such as models, tokenizers, or raw dataset sources), which are located in `~/.cache/huggingface/hub` by default and controlled separately via the `HF_HUB_CACHE` variable:

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

💡 Se você deseja realocar todos os caches do Hugging Face — incluindo downloads de datasets e do hub — use a variável `HF_HOME` em vez disso:

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

Isso resulta em:
- cache de datasets → `/path/to/cache_root/datasets`
- cache do hub → `/path/to/cache_root/hub`

Essas distinções são especialmente úteis ao trabalhar em ambientes compartilhados ou sistemas de arquivos em rede (por exemplo, NFS). Consulte [issue #7480](https://github.com/huggingface/datasets/issues/7480) para a discussão sobre como os usuários encontraram localizações de cache inesperadas quando `HF_HUB_CACHE` não estava definido junto com `HF_DATASETS_CACHE`.

Ao carregar um conjunto de dados, você também tem a opção de alterar onde os dados são armazenados em cache. Altere o parâmetro `cache_dir` para o caminho desejado:

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

## Modo de download

Controle a reutilização dos arquivos de origem baixados e dos conjuntos de dados preparados em [load_dataset()](/docs/datasets/v5.2.0/pt/package_reference/loading_methods#datasets.load_dataset) com o parâmetro `download_mode`. Por padrão, o 🤗 Datasets os reutilizará se existirem. Para baixar os arquivos de origem novamente e reconstruir o conjunto de dados, use `force_redownload`:

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

Consulte [DownloadMode](/docs/datasets/v5.2.0/pt/package_reference/builder_classes#datasets.DownloadMode) para obter a lista completa de modos de download.

## Arquivos de cache

Limpe os arquivos de cache do Arrow no diretório com [Dataset.cleanup_cache_files()](/docs/datasets/v5.2.0/pt/package_reference/main_classes#datasets.Dataset.cleanup_cache_files):

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

## Ativar ou desativar o cache

Se você estiver usando um arquivo em cache localmente, o dataset será recarregado automaticamente com as transformações anteriores que você aplicou ao dataset. Desative esse comportamento definindo o argumento `load_from_cache_file=False` em [Dataset.map()](/docs/datasets/v5.2.0/pt/package_reference/main_classes#datasets.Dataset.map):

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

No exemplo acima, o 🤗 Datasets executará a função `add_prefix` novamente sobre o conjunto de dados inteiro, em vez de carregar o conjunto de dados a partir do seu estado anterior.

Desative o cache em escala global com [disable_caching()](/docs/datasets/v5.2.0/pt/package_reference/main_classes#datasets.disable_caching):

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

Quando você desativa o cache, o 🤗 Datasets não recarregará mais os arquivos em cache ao aplicar transformações em datasets. Qualquer transformação aplicada ao seu dataset precisará ser reaplicada.

> [!TIP]
> Se você deseja reutilizar um dataset do zero, tente definir o parâmetro `download_mode` em [load_dataset()](/docs/datasets/v5.2.0/pt/package_reference/loading_methods#datasets.load_dataset) em vez disso.

## Melhorar o desempenho

Desativar o cache e copiar o conjunto de dados em memória acelerará as operações do conjunto de dados. Existem duas opções para copiar o conjunto de dados em memória:

1. Defina `datasets.config.IN_MEMORY_MAX_SIZE` para um valor diferente de zero (em bytes) que caiba na memória RAM.

2. Defina a variável de ambiente `HF_DATASETS_IN_MEMORY_MAX_SIZE` para um valor diferente de zero. Observe que o primeiro método tem precedência maior.

