Datasets documentation
キャッシュ管理
キャッシュ管理
Hugging Face からデータセットをダウンロードすると、データはローカルに保存されます。
Hugging Face のファイルは、デフォルトで ~/.cache/huggingface/hub にある huggingface_hub のキャッシュに通常どおり保存されます。
詳細や保存場所の変更方法については、Hub キャッシュのドキュメントを参照してください。
Hubキャッシュにより、🤗 Datasetsは、データセットを使用するたびにHugging Faceからデータセットファイルを再ダウンロードすることを回避できます。
🤗 Datasets には、Dataset オブジェクトで使用される Arrow 形式に変換されたデータセットを保存するための独自のキャッシュもあります。
このガイドでは、🤗 Datasets のキャッシュに焦点を当て、以下の方法について説明します:
- キャッシュディレクトリを変更します。
- …
- ディレクトリ内のキャッシュファイルをクリーンアップします。
- キャッシュの有効化または無効化。
キャッシュディレクトリ
デフォルトの🤗 Datasetsキャッシュディレクトリは~/.cache/huggingface/datasetsです。シェル環境変数HF_HOMEを別のディレクトリに設定することで、キャッシュの保存場所を変更できます。
$ export HF_HOME="/path/to/another/directory"代わりに、HF_DATASETS_CACHE 環境変数を設定して、datasets 固有のキャッシュディレクトリのみを制御することもできます。
$ 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 のキャッシュ全体(データセットやハブからのダウンロードを含む)を別の場所に移行したい場合は、代わりにHF_HOME変数を使用してください:
$ export HF_HOME="/path/to/cache_root"その結果、以下が得られます:
- datasets キャッシュ →
/path/to/cache_root/datasets - hub キャッシュ →
/path/to/cache_root/hub
これらの区別は、共有環境やネットワークファイルシステム(NFS など)で作業する際に特に役立ちます。
HF_HUB_CACHE が HF_DATASETS_CACHE と同時に設定されていなかった場合、ユーザーが予期しないキャッシュの場所に遭遇した経緯については、issue #7480 の議論を参照してください。
データセットを読み込む際、データのキャッシュ先を変更するオプションも利用できます。cache_dirパラメータを、希望するパスに変更してください:
>>> from datasets import load_dataset
>>> dataset = load_dataset('username/dataset', cache_dir="/path/to/another/directory/datasets")ダウンロードモード
データセットをダウンロードした後、download_mode パラメータを使用して、load_dataset() による読み込み方法を制御できます。デフォルトでは、🤗 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()cacheを無効にすると、🤗 Datasetsはデータセットにトランスフォームを適用する際に、キャッシュされたファイルを再読み込みしなくなります。データセットに適用したトランスフォームは、すべて再適用する必要があります。
データセットを最初から再利用したい場合は、代わりにload_dataset()の
download_modeパラメータを設定してみてください。
パフォーマンスの改善
…を無効化し、データセットをメモリ内にコピーすることで、データセットの操作を高速化できます。データセットをメモリ内にコピーするには、2つのオプションがあります。
datasets.config.IN_MEMORY_MAX_SIZEを、RAM メモリに収まる非ゼロの値(バイト単位)に設定してください。環境変数
HF_DATASETS_IN_MEMORY_MAX_SIZEをゼロ以外の値に設定します。なお、最初のメソッドの方が優先順位が高いことに注意してください。