# Manajemen cache

Saat Anda mengunduh dataset dari Hugging Face, data disimpan secara lokal di komputer Anda. File dari Hugging Face disimpan seperti biasa di cache `huggingface_hub`, yang secara default berada di `~/.cache/huggingface/hub`. Lihat [dokumentasi cache Hub](https://huggingface.co/docs/huggingface_hub/guides/manage-cache) untuk detail lebih lanjut dan cara mengubah lokasinya.

Cache Hub memungkinkan 🤗 Datasets untuk menghindari pengunduhan ulang file dataset dari Hugging Face setiap kali Anda menggunakannya.

🤗 Datasets juga memiliki cache-nya sendiri untuk menyimpan dataset yang dikonversi ke format Arrow (format yang digunakan oleh objek [Dataset](/docs/datasets/main/id/package_reference/main_classes#datasets.Dataset)).

Panduan ini berfokus pada cache 🤗 Datasets dan akan menunjukkan cara Anda untuk:

- Ubah direktori cache.
- Kontrol cara dataset dimuat dari cache.
- Bersihkan file cache di direktori.
- Aktifkan atau nonaktifkan penyangga.

## Direktori cache

Direktori cache 🤗 Datasets default adalah `~/.cache/huggingface/datasets`. Ubah lokasi cache dengan mengatur variabel lingkungan shell, `HF_HOME`, ke direktori lain:

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

Sebagai alternatif, Anda dapat mengatur variabel lingkungan `HF_DATASETS_CACHE` untuk mengontrol hanya direktori cache khusus dataset:

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

⚠️ Ini hanya berlaku untuk file yang ditulis oleh pustaka `datasets` (misalnya, file Arrow dan indeks). Hal ini **tidak** memengaruhi file yang diunduh dari Hugging Face Hub (seperti model, tokenizer, atau sumber dataset mentah), yang secara default berada di `~/.cache/huggingface/hub` dan dikendalikan secara terpisah melalui variabel `HF_HUB_CACHE`:

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

💡 Jika Anda ingin memindahkan semua cache Hugging Face — termasuk unduhan dataset dan hub — gunakan variabel `HF_HOME` sebagai gantinya:

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

Hal ini menghasilkan:
- cache datasets → `/path/to/cache_root/datasets`
- cache hub → `/path/to/cache_root/hub`

Pembedaan ini sangat berguna saat bekerja di lingkungan bersama atau sistem file jaringan (misalnya, NFS). Lihat [issue #7480](https://github.com/huggingface/datasets/issues/7480) untuk diskusi tentang bagaimana pengguna menemukan lokasi cache yang tidak terduga ketika `HF_HUB_CACHE` tidak disetel bersamaan dengan `HF_DATASETS_CACHE`.

Saat Anda memuat dataset, Anda juga memiliki opsi untuk mengubah lokasi penyimpanan cache data. Ubah parameter `cache_dir` menjadi path yang Anda inginkan:

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

## Mode unduhan

Kontrol penggunaan ulang file sumber yang diunduh dan dataset yang sudah disiapkan di [load_dataset()](/docs/datasets/main/id/package_reference/loading_methods#datasets.load_dataset) dengan parameter `download_mode`. Secara default, 🤗 Datasets akan menggunakannya kembali jika sudah ada. Untuk mengunduh file sumber lagi dan membangun ulang dataset, gunakan `force_redownload`:

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

Lihat [DownloadMode](/docs/datasets/main/id/package_reference/builder_classes#datasets.DownloadMode) untuk daftar lengkap mode unduhan.

## Berkas cache

Bersihkan file cache Arrow di direktori dengan [Dataset.cleanup_cache_files()](/docs/datasets/main/id/package_reference/main_classes#datasets.Dataset.cleanup_cache_files):

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

## Aktifkan atau nonaktifkan penyangga

Jika Anda menggunakan file yang di-cache secara lokal, dataset akan dimuat ulang secara otomatis dengan transformasi sebelumnya yang Anda terapkan pada dataset. Nonaktifkan perilaku ini dengan mengatur argumen `load_from_cache_file=False` di [Dataset.map()](/docs/datasets/main/id/package_reference/main_classes#datasets.Dataset.map):

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

Pada contoh di atas, 🤗 Datasets akan mengeksekusi fungsi `add_prefix` di seluruh dataset sekali lagi, alih-alih memuat dataset dari keadaan sebelumnya.

Nonaktifkan caching secara global dengan [disable_caching()](/docs/datasets/main/id/package_reference/main_classes#datasets.disable_caching):

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

Saat Anda menonaktifkan caching, 🤗 Datasets tidak akan lagi memuat ulang file yang di-cache saat menerapkan transformasi pada dataset. Setiap transformasi yang Anda terapkan pada dataset Anda akan perlu diterapkan ulang.

> [!TIP]
> Jika Anda ingin menggunakan ulang dataset dari awal, coba atur parameter `download_mode` di [load_dataset()](/docs/datasets/main/id/package_reference/loading_methods#datasets.load_dataset) sebagai gantinya.

## Perbaiki kinerja

Menonaktifkan cache dan menyalin dataset ke dalam memori akan mempercepat operasi dataset. Ada dua opsi untuk menyalin dataset ke dalam memori:

1. Set `datasets.config.IN_MEMORY_MAX_SIZE` ke nilai non-nol (dalam byte) yang muat di memori RAM Anda.

2. Setel variabel lingkungan `HF_DATASETS_IN_MEMORY_MAX_SIZE` ke nilai yang tidak nol. Perhatikan bahwa metode pertama memiliki prioritas lebih tinggi.

