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()

캐싱을 비활성화하면, 🤗 Datasets는 데이터셋에 변환을 적용할 때 캐시된 파일을 다시 로드하지 않습니다. 데이터셋에 적용한 모든 변환은 다시 적용해야 합니다.

데이터셋을 처음부터 다시 사용하려면 대신 load_dataset()에서 download_mode 매개변수를 설정해 보세요.

성능 개선

캐시를 비활성화하고 데이터셋을 메모리에 복사하면 데이터셋 작업이 빨라집니다. 데이터셋을 메모리에 복사하는 방법에는 두 가지가 있습니다:

  1. RAM 메모리에 맞는 0이 아닌 값(바이트 단위)으로 datasets.config.IN_MEMORY_MAX_SIZE를 설정하세요.

  2. 환경 변수 HF_DATASETS_IN_MEMORY_MAX_SIZE를 0이 아닌 값으로 설정합니다. 첫 번째 방법이 더 높은 우선순위를 가집니다.

Update on GitHub