캐시 관리
캐시 관리 (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은 데이터셋에 변환을 적용할 때 캐시된 파일을 더 이상 다시 불러오지 않아요. 데이터셋에 적용한 모든 변환을 다시 적용해야 합니다.
성능 개선
datasets.config.IN_MEMORY_MAX_SIZE를 RAM에 맞는 0이 아닌 값(바이트 단위)으로 설정한다.- 환경 변수
HF_DATASETS_IN_MEMORY_MAX_SIZE를 0이 아닌 값으로 설정한다. 첫 번째 방법이 더 높은 우선순위를 가진다는 점을 참고하세요.
출처: 공식문서