資料集文件
快取管理
並獲得增強的文件體驗
開始使用
快取管理
當您從 Hugging Face 下載資料集時,資料會儲存在您的電腦本機中。來自 Hugging Face 的檔案預設會儲存在 huggingface_hub 快取中,預設路徑為 ~/.cache/huggingface/hub。關於更多詳細資訊以及如何更改其位置,請參閱 Hub 快取說明文件。
Hub 快取讓 🤗 Datasets 能夠避免在每次使用時都重新下載資料集檔案。
🤗 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)中工作時特別有用。
請參閱 issue #7480,了解關於當 HF_HUB_CACHE 未與 HF_DATASETS_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設定為一個非零值。請注意,第一種方法的優先級較高。