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

빌드 및 로드

거의 모든 딥러닝 워크플로우는 데이터셋 로딩으로 시작하며, 이는 가장 중요한 단계 중 하나입니다. 🤗 Datasets를 사용하면 NLP 작업을 시작하는 데 도움이 되는 900개 이상의 데이터셋을 사용할 수 있습니다. load_dataset()를 호출하기만 하면 첫걸음을 내딛을 수 있습니다. 이 함수는 모든 의미에서 진정한 일꾼(workhorse)이며, 사용자가 사용하는 모든 데이터셋을 빌드하고 로드하기 때문입니다.

ELI5: load_dataset

Explain Like I’m Five의 기본 개념부터 시작해 보겠습니다.

데이터셋은 다음을 포함하는 디렉터리입니다:

  • JSON, CSV, Parquet, 텍스트 등 범용 형식의 일부 데이터 파일
  • 데이터셋에 대한 문서와 데이터셋 태그 및 구성을 정의하는 YAML 헤더를 포함하는 README.md라는 이름의 데이터셋 카드

load_dataset() 함수는 요청된 데이터셋을 로컬 또는 Hugging Face Hub에서 가져옵니다. Hub는 모든 Hugging Face 데이터셋과 모델이 저장되는 중앙 저장소입니다.

데이터셋에 데이터 파일만 포함된 경우, load_dataset()는 확장자(json, csv, parquet, tsfile, txt 등)를 기반으로 데이터 파일을 로드하는 방법을 자동으로 추론합니다. 내부적으로 🤗 Datasets는 데이터 파일 형식에 따라 적절한 DatasetBuilder를 사용합니다. 🤗 Datasets에는 데이터 파일 형식별로 하나의 빌더가 존재합니다:

데이터셋을 공유하는 방법에 대해 자세히 알아보려면 Share 섹션을 읽어보세요.

🤗 Datasets는 원본 URL에서 데이터셋 파일을 다운로드하고, 데이터셋을 생성한 후 드라이브에 Arrow 테이블로 캐시합니다. 이전에 데이터셋을 다운로드한 적이 있다면, 🤗 Datasets는 다시 다운로드하는 번거로움을 줄이기 위해 캐시에서 다시 로드합니다.

데이터셋이 어떻게 구축되는지에 대한 고수준의 이해를 갖추셨으니, 이제 이 모든 것이 작동하는 방식의 세부 사항을 자세히 살펴보겠습니다.

데이터셋 구축

데이터셋을 처음 로드할 때, 🤗 Datasets는 원시 데이터 파일을 가져와 행과 유형화된 열로 구성된 테이블로 구성합니다. 데이터셋을 구축하는 데 책임이 있는 두 가지 주요 클래스는 BuilderConfig와 DatasetBuilder입니다.

BuilderConfig

BuilderConfig은 DatasetBuilder의 설정 클래스입니다. BuilderConfig에는 데이터셋에 대한 다음 기본 속성이 포함됩니다:

속성설명
name데이터셋의 짧은 이름.
version데이터셋 버전 식별자.
data_dir데이터 파일이 포함된 로컬 폴더의 경로를 저장합니다.
data_files로컬 데이터 파일의 경로를 저장합니다.
description데이터셋 설명.

클래스 레이블과 같은 추가 속성을 데이터셋에 추가하려면 기본 BuilderConfig 클래스를 서브클래스로 사용할 수 있습니다. BuilderConfig 클래스 또는 서브클래스의 속성을 채우는 방법은 두 가지가 있습니다:

  • datasets의 DatasetBuilder.BUILDER_CONFIGS() 속성에 BuilderConfig 클래스(또는 하위 클래스) 인스턴스의 사전 정의된 목록을 제공합니다.

  • load_dataset()을 호출할 때, 해당 메서드에 특화된 키워드 인수가 아닌 모든 인수는 BuilderConfig 클래스의 관련 속성을 설정하는 데 사용됩니다. 특정 구성이 선택된 경우, 이는 미리 정의된 속성을 덮어씁니다.

DatasetBuilder.BUILDER_CONFIG_CLASS를 BuilderConfig의 임의의 사용자 정의 하위 클래스로 설정할 수도 있습니다.

DatasetBuilder

DatasetBuilder는 BuilderConfig 내부의 모든 속성에 접근하여 실제 데이터셋을 빌드합니다.

DatasetBuilder에는 세 가지 주요 메서드가 있습니다:

  1. DatasetBuilder._info()는 데이터셋 속성을 정의하는 역할을 합니다. dataset.info를 호출하면 🤗 Datasets는 여기에 저장된 정보를 반환합니다. 마찬가지로 Features도 여기서 지정됩니다. Features는 데이터셋의 골격과 같다는 점을 기억하세요. 각 열의 이름과 유형을 제공합니다.

  2. DatasetBuilder._split_generator는 요청된 데이터 파일을 다운로드하거나 가져와 분할로 정리하고, 생성 과정에 대한 특정 인수를 정의합니다. 이 메서드는 파일을 다운로드하거나 로컬 파일 시스템에서 가져오는 DownloadManager를 포함합니다. DownloadManager 안에는 원본 데이터 파일의 URL을 딕셔너리로 받아 요청된 파일을 다운로드하는 DownloadManager.download_and_extract() 메서드가 있습니다. 허용되는 입력에는 단일 URL 또는 경로, 또는 URL 또는 경로의 목록/딕셔너리가 포함됩니다. TAR, GZIP, ZIP 아카이브와 같은 압축 파일 형식은 자동으로 추출됩니다.

    파일이 다운로드되면 SplitGenerator가 이를 스플릿으로 정리합니다. SplitGenerator에는 스플릿 이름과 DatasetBuilder._generate_examples 메서드에 전달되는 모든 키워드 인수가 포함됩니다. 키워드 인수는 스플릿별로 다를 수 있으며, 일반적으로 각 스플릿에 대한 데이터 파일의 로컬 경로를 최소한으로 포함합니다.

  3. DatasetBuilder._generate_examples는 split의 데이터 파일을 읽고 파싱합니다. 그런 다음 DatasetBuilder._info()의 features에서 지정된 형식에 따라 dataset 예시를 yield합니다. DatasetBuilder._generate_examples의 입력은 실제로 마지막 메서드의 키워드 인수로 제공된 filepath입니다.

    데이터셋은 모든 데이터를 메모리에 로드하지 않는 Python 생성기로 생성됩니다. 따라서 생성기는 대규모 데이터셋을 처리할 수 있습니다. 그러나 생성된 샘플이 디스크의 데이터셋 파일에 기록되기 전에 ArrowWriter 버퍼에 저장됩니다. 이는 생성된 샘플이 배치 단위로 기록됨을 의미합니다. 데이터셋 샘플이 많은 메모리를 사용하는 경우(이미지 또는 비디오) DatasetBuilder의 DEFAULT_WRITER_BATCH_SIZE 속성에 낮은 값을 지정하도록 하십시오. 200 MB를 초과하지 않는 크기를 권장합니다.

무결성 유지

데이터셋이 완전한지 확인하기 위해 load_dataset()는 다운로드된 파일에 대해 일련의 테스트를 수행하여 모든 것이 존재하는지 확인합니다. 이렇게 하면 요청한 데이터셋이 예상대로 생성되지 않을 때 예상치 못한 문제를 만나지 않습니다. load_dataset()는 다음을 검증합니다:

  • 생성된 DatasetDict의 분할 수입니다.
  • 생성된 DatasetDict의 각 분할에 포함된 샘플 수입니다.
  • 다운로드된 파일 목록.
  • 다운로드된 파일의 SHA256 체크섬(기본적으로 비활성화됨).

데이터셋이 검증에 실패하면, 데이터셋 작성자가 데이터 파일에 일부 변경 사항을 적용했을 가능성이 높습니다.

이 경우, 데이터셋이 변경되었음을 알리는 오류가 발생합니다. 오류를 무시하려면 load_dataset()에서 verification_mode="no_checks"를 지정해야 합니다. 검증 오류를 발견하면 해당 데이터셋의 “Community” 탭에서 토론이나 pull request를 열어 해당 데이터셋의 무결성 검사가 업데이트되도록 해 주세요.

보안

Hub의 데이터셋 저장소는 악성ware를 스캔하며, 자세한 정보는 여기에서 확인하세요.

Update on GitHub