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()캐싱을 비활성화하면, 🤗 Datasets는 데이터셋에 변환을 적용할 때 캐시된 파일을 다시 로드하지 않습니다. 데이터셋에 적용한 모든 변환은 다시 적용해야 합니다.
데이터셋을 처음부터 다시 사용하려면 대신 load_dataset()에서
download_mode매개변수를 설정해 보세요.
성능 개선
캐시를 비활성화하고 데이터셋을 메모리에 복사하면 데이터셋 작업이 빨라집니다. 데이터셋을 메모리에 복사하는 방법에는 두 가지가 있습니다:
RAM 메모리에 맞는 0이 아닌 값(바이트 단위)으로
datasets.config.IN_MEMORY_MAX_SIZE를 설정하세요.환경 변수
HF_DATASETS_IN_MEMORY_MAX_SIZE를 0이 아닌 값으로 설정합니다. 첫 번째 방법이 더 높은 우선순위를 가집니다.