Datasets documentation
Önbellek yönetimi
Önbellek yönetimi
Hugging Face'ten bir veri seti indirdiğinizde, veriler bilgisayarınızda yerel olarak saklanır.
Hugging Face'ten gelen dosyalar, varsayılan olarak ~/.cache/huggingface/hub konumunda olan huggingface_hub önbelleğinde normal şekilde saklanır.
Daha fazla ayrıntı ve konumunu değiştirme yöntemi için Hub önbellek belgelerini inceleyin.
Hub önbelleği, 🤗 Datasets'in her kullanımda veri seti dosyalarını Hugging Face'ten yeniden indirmesini önler.
🤗 Datasets, Dataset nesnelerinin kullandığı biçim olan Arrow biçiminde dönüştürülen veri setlerini saklamak için kendi önbelleğine de sahiptir.
Bu kılavuz 🤗 Datasets önbelleğine odaklanır ve size şunları nasıl yapacağınızı gösterecektir:
- Önbellek dizinini değiştirin.
- Bir veri setinin önbellekten nasıl yükleneceğini kontrol edin.
- Dizindeki önbellek dosyalarını temizleyin.
- Önbellekleme işlevini etkinleştirin veya devre dışı bırakın.
Önbellek dizini
Varsayılan 🤗 Datasets önbellek dizini ~/.cache/huggingface/datasets'dir. Önbellek konumunu değiştirmek için kabuk ortam değişkeni olan HF_HOME'i başka bir dizine ayarlayın:
$ export HF_HOME="/path/to/another/directory"Alternatif olarak, yalnızca veri setlerine özgü önbellek dizinini kontrol etmek için HF_DATASETS_CACHE ortam değişkenini ayarlayabilirsiniz:
$ export HF_DATASETS_CACHE="/path/to/datasets_cache"⚠️ Bu yalnızca datasets kütüphanesi tarafından yazılan dosyalar için geçerlidir (ör. Arrow dosyaları ve dizinler).
Hugging Face Hub'dan indirilen dosyaları (ör. modeller, tokenizörler veya ham veri seti kaynakları) etkilemez; bu dosyalar varsayılan olarak ~/.cache/huggingface/hub konumunda bulunur ve HF_HUB_CACHE değişkeni üzerinden ayrı olarak kontrol edilir:
$ export HF_HUB_CACHE="/path/to/hub_cache"💡 Hugging Face önbelleklerinin tamamını — veri kümeleri ve hub indirmeleri dahil — taşımak istiyorsanız bunun yerine HF_HOME değişkenini kullanın:
$ export HF_HOME="/path/to/cache_root"Bunun sonucu olarak:
- datasets önbelleği →
/path/to/cache_root/datasets - hub önbelleği →
/path/to/cache_root/hub
Bu ayrım, paylaşılan ortamlarda veya ağ tabanlı dosya sistemlerinde (ör. NFS) çalışırken özellikle faydalıdır.
HF_HUB_CACHE, HF_DATASETS_CACHE ile birlikte ayarlanmadığında kullanıcıların beklenmedik önbellek konumlarıyla karşılaştığına dair tartışma için #7480 numaralı sorunu inceleyin.
Bir veri seti yüklediğinizde, verilerin önbelleğe alındığı konumu değiştirme seçeneğiniz de vardır. cache_dir parametresini istediğiniz yola değiştirin:
>>> from datasets import load_dataset
>>> dataset = load_dataset('username/dataset', cache_dir="/path/to/another/directory/datasets")İndirme modu
Bir veri setini indirdikten sonra, download_mode parametresiyle load_dataset() tarafından nasıl yüklendiğini kontrol edebilirsiniz. Varsayılan olarak 🤗 Datasets, veri seti zaten varsa onu yeniden kullanır. Ancak, herhangi bir işlev uygulanmamış orijinal veri setine ihtiyacınız varsa, aşağıda gösterildiği gibi dosyaları yeniden indirin:
>>> from datasets import load_dataset
>>> dataset = load_dataset('rajpurkar/squad', download_mode='force_redownload')İndirme modlarının tam listesi için DownloadMode'a bakın.
Önbellek dosyaları
Dizindeki Arrow önbellek dosyalarını Dataset.cleanup_cache_files() ile temizleyin:
# Returns the number of removed cache files
>>> dataset.cleanup_cache_files()
2Önbellekleme işlevini etkinleştirme veya devre dışı bırakma
Yerel olarak önbelleğe alınmış bir dosya kullanıyorsanız, veri setine daha önce uyguladığınız tüm dönüştürmelerle birlikte veri seti otomatik olarak yeniden yüklenir. Bu davranışı, Dataset.map() içinde load_from_cache_file=False argümanını ayarlayarak devre dışı bırakabilirsiniz:
>>> updated_dataset = small_dataset.map(add_prefix, load_from_cache_file=False)Yukarıdaki örnekte, 🤗 Datasets, veri setini önceki durumundan yüklemek yerine add_prefix fonksiyonunu tüm veri seti üzerinde yeniden çalıştırır.
Önbellekleştirmeyi disable_caching() ile küresel ölçekte devre dışı bırakın:
>>> from datasets import disable_caching
>>> disable_caching()Önbellekleme işlevini devre dışı bıraktığınızda, 🤗 Datasets, veri kümelerine dönüştürme uygulamak için önbelleğe alınmış dosyaları yeniden yüklemeyecektir. Veri kümenize uyguladığınız her dönüştürme, yeniden uygulanmalıdır.
Bir veri setini sıfırdan yeniden kullanmak istiyorsanız, bunun yerine load_dataset() içinde
download_modeparametresini ayarlamayı deneyin.
Performansı iyileştirin
Önbelleği devre dışı bırakmak ve veri setini bellek içine kopyalamak, veri seti işlemlerini hızlandırır. Veri setini bellek içine kopyalamak için iki seçenek vardır:
RAM belleğinize sığacak, sıfırdan farklı bir değeri (bayt cinsinden)
datasets.config.IN_MEMORY_MAX_SIZEparametresine atayın.Ortam değişkeni
HF_DATASETS_IN_MEMORY_MAX_SIZE'yi sıfırdan farklı bir değere ayarlayın. İlk yöntemin önceliğinin daha yüksek olduğunu unutmayın.