Datasets documentation

キャッシュ管理

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

キャッシュ管理

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つのオプションがあります。

  1. datasets.config.IN_MEMORY_MAX_SIZE を、RAM メモリに収まる非ゼロの値(バイト単位)に設定してください。

  2. 環境変数HF_DATASETS_IN_MEMORY_MAX_SIZEをゼロ以外の値に設定します。なお、最初のメソッドの方が優先順位が高いことに注意してください。

Update on GitHub