Datasets 文件
快取管理
並獲得增強的文件體驗
開始使用
快取管理
當您從 Hugging Face 下載資料集時,資料會本地儲存在您的計算機上。來自 Hugging Face 的檔案通常儲存在 `huggingface_hub` 快取中,預設位置是 `~/.cache/huggingface/hub`。更多詳細資訊以及如何更改其位置,請參閱 Hub 快取文件。
Hub 快取使 🤗 Datasets 在每次使用資料集時避免從 Hugging Face 重新下載檔案。
🤗 Datasets 也有自己的快取,用於儲存轉換為 Arrow 格式(Dataset 物件使用的格式)的資料集。
本指南重點介紹 🤗 Datasets 的快取,並向您展示如何:
- 更改快取目錄。
- 控制如何從快取中載入資料集。
- 清理目錄中的快取檔案。
- 啟用或停用快取。
快取目錄
🤗 Datasets 的預設快取目錄是 `~/.cache/huggingface/datasets`。透過將 shell 環境變數 `HF_HOME` 設定為另一個目錄來更改快取位置:
$ export HF_HOME="/path/to/another/directory/datasets"
或者,您可以設定 `HF_DATASETS_CACHE` 環境變數,僅控制資料集特定的快取目錄:
$ export HF_DATASETS_CACHE="/path/to/datasets_cache"
⚠️ 這僅適用於 `datasets` 庫寫入的檔案(例如,Arrow 檔案和索引)。
它 **不** 影響從 Hugging Face Hub 下載的檔案(例如模型、分詞器或原始資料集源),這些檔案預設位於 `~/.cache/huggingface/hub`,並由 `HF_HUB_CACHE` 變數單獨控制。
$ export HF_HUB_CACHE="/path/to/hub_cache"
💡 如果您想重新定位所有 Hugging Face 快取——包括資料集和 Hub 下載——請改用 `HF_HOME` 變數。
$ export HF_HOME="/path/to/cache_root"
這將導致:
- 資料集快取 → `/path/to/cache_root/datasets`
- Hub 快取 → `/path/to/cache_root/hub`
這些區別在共享環境或網路檔案系統(例如,NFS)中特別有用。
請參閱 問題 #7480,瞭解當 `HF_DATASETS_CACHE` 與 `HF_HUB_CACHE` 未同時設定時使用者如何遇到意外的快取位置。
當您載入資料集時,您還可以選擇更改資料快取的位置。將 `cache_dir` 引數更改為您想要的路徑:
>>> from datasets import load_dataset
>>> dataset = load_dataset('username/dataset', cache_dir="/path/to/another/directory/datasets")
下載模式
下載資料集後,使用 load_dataset() 的 `download_mode` 引數來控制其載入方式。預設情況下,如果資料集存在,🤗 Datasets 會重用它。但是,如果您需要未經任何處理函式應用的原始資料集,請如下所示重新下載檔案:
>>> from datasets import load_dataset
>>> dataset = load_dataset('rajpurkar/squad', download_mode='force_redownload')
有關完整的下載模式列表,請參閱 DownloadMode。
快取檔案
使用 Dataset.cleanup_cache_files() 清理目錄中的 Arrow 快取檔案:
# Returns the number of removed cache files
>>> dataset.cleanup_cache_files()
2
啟用或停用快取
如果您在本地使用快取檔案,它會自動重新載入資料集以及您之前對資料集應用的任何轉換。透過在 Dataset.map() 中設定引數 `load_from_cache_file=False` 來停用此行為:
>>> updated_dataset = small_dataset.map(add_prefix, load_from_cache_file=False)
在上面的例子中,🤗 Datasets 將再次對整個資料集執行 `add_prefix` 函式,而不是從其先前的狀態載入資料集。
使用 disable_caching() 在全域性範圍內停用快取:
>>> from datasets import disable_caching
>>> disable_caching()
當您停用快取時,🤗 Datasets 在對資料集應用轉換時將不再重新載入快取的檔案。您對資料集應用的任何轉換都需要重新應用。
如果您想從頭開始重用資料集,請嘗試在 load_dataset() 中設定 `download_mode` 引數。
提高效能
停用快取並將資料集複製到記憶體中將加快資料集操作。有兩種將資料集複製到記憶體中的選項:
將 `datasets.config.IN_MEMORY_MAX_SIZE` 設定為適合您 RAM 記憶體的非零值(以位元組為單位)。
將環境變數 `HF_DATASETS_IN_MEMORY_MAX_SIZE` 設定為非零值。請注意,第一種方法具有更高的優先順序。