캐시 관리

캐시 관리 (Cache Management)

Hugging Face에서 데이터셋을 다운로드하면 데이터가 컴퓨터에 로컬로 저장돼요.

Hugging Face의 파일은 평소대로 huggingface_hub 캐시에 저장되는데, 기본 위치는 ~/.cache/huggingface/hub예요.

자세한 내용과 위치 변경 방법은 Hub 캐시 문서를 참고하세요.

Hub 캐시 덕분에 🤗 Datasets은 데이터셋 파일을 쓸 때마다 Hugging Face에서 다시 다운로드하지 않아도 돼요.

🤗 Datasets에는 또한 Arrow 형식(Dataset 객체가 쓰는 형식)으로 변환된 데이터셋을 저장하는 자체 캐시가 있어요.

이 가이드는 🤗 Datasets 캐시에 초점을 맞추고 다음을 보여줄게요:

  • 캐시 디렉토리 변경하기
  • 캐시에서 데이터셋을 불러오는 방법 제어하기
  • 디렉토리의 캐시 파일 정리하기
  • 캐싱 켜기·끄기

캐시 디렉토리

기본 🤗 Datasets 캐시 디렉토리는 ~/.cache/huggingface/datasets예요. 셸 환경 변수 HF_HOME을 다른 디렉토리로 설정해서 캐시 위치를 바꿀 수 있어요.

$ export HF_HOME="/path/to/another/directory/datasets"

또는 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 캐시 — datasets과 hub 다운로드 모두 — 를 옮기고 싶다면 HF_HOME 변수를 대신 사용하세요.

$ export HF_HOME="/path/to/cache_root"

그러면 결과는:

  • datasets 캐시 → /path/to/cache_root/datasets
  • hub 캐시 → /path/to/cache_root/hub

데이터셋을 불러올 때 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 캐시 파일을 정리할 수 있어요.

# 제거된 캐시 파일 수 반환
>>> 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은 데이터셋에 변환을 적용할 때 캐시된 파일을 더 이상 다시 불러오지 않아요. 데이터셋에 적용한 모든 변환을 다시 적용해야 합니다.

성능 개선

  1. datasets.config.IN_MEMORY_MAX_SIZE를 RAM에 맞는 0이 아닌 값(바이트 단위)으로 설정한다.
  2. 환경 변수 HF_DATASETS_IN_MEMORY_MAX_SIZE를 0이 아닌 값으로 설정한다. 첫 번째 방법이 더 높은 우선순위를 가진다는 점을 참고하세요.

출처: 공식문서