프로젝트 소개
Hugging Face Datasets는 두 가지 주요 기능에 초점을 맞춘 경량 Python 라이브러리입니다. 공개 데이터셋을 위한 한 줄 데이터로더와 효율적이고 재현 가능한 데이터 전처리입니다.
데이터 로드
- `load_dataset()`은 Hugging Face Hub 또는 로컬 파일에서 데이터셋을 가져옵니다. Hub에는 이미지, 오디오, 텍스트(수백 개 언어와 방언), 3D 의료 영상, 비디오, AI 에이전트 트레이스를 아우르는 크고 계속 성장하는 데이터셋 컬렉션이 있습니다.
- 지원되는 로컬 형식에는 CSV, JSON, JSONL, Parquet, Arrow, HDF5, XML, 일반 텍스트, PNG, JPEG, WAV, MP3, PDF, NIfTI가 포함됩니다.
- 데이터셋은 Python 객체(딕셔너리, 리스트, Pandas DataFrame 또는 제너레이터)로부터 구축할 수도 있습니다.
데이터 처리
- `dataset.map()`은 사용자 함수를 예제에 적용하며, 병렬 속도 향상을 위해 배칭과 다중 처리(`num_proc`)를 지원합니다.
- 결과는 캐시되므로 반복 처리 단계가 다시 계산되지 않습니다.
- Apache Arrow 백엔드는 제로 복사, 메모리 매핑 저장을 제공하여 데이터셋이 사용 가능한 RAM을 초과할 수 있게 합니다.
- 스트리밍 모드(`streaming=True`)는 데이터를 먼저 다운로드하지 않고 즉석에서 반복 처리하므로, 매우 크거나 디스크가 제한된 워크로드에 유용합니다.
상호 운용성
- NumPy, Pandas, Polars, Arrow, PyTorch, TensorFlow, JAX, Spark와의 네이티브 변환을 지원합니다.
- 유사도 검색을 위한 내장 FAISS 및 Elasticsearch 인덱스 지원.
- `Json()` 피처 타입은 유연한 구조화 데이터를 처리합니다.
핵심 클래스
- `Dataset`: 메모리 내 또는 메모리 매핑 방식이며, 인덱싱, 슬라이싱, 무작위 접근, 캐싱을 지원합니다.
- `IterableDataset`: 외부 메모리 처리를 위한 지연 및 스트리밍 가능 방식입니다.
- 둘 다 train/test/validation과 같은 다중 분할 데이터셋을 위해 `DatasetDict` / `IterableDatasetDict`로 감싸집니다.
설치 및 추가 기능
- pip(`pip install datasets`) 또는 conda(`conda install -c huggingface -c conda-forge datasets`)로 설치할 수 있습니다.
- 선택적 추가 기능은 오디오, 비전, PDF/NIfTI, 그리고 PyTorch, TensorFlow, JAX용 프레임워크 통합을 포함합니다.
커뮤니티와 재현성
- 이 프로젝트는 웹, Python 또는 Git을 통해 Hub에 데이터셋을 업로드하고 공유하는 방법을 문서화합니다.
- 사용자는 재현성을 위해 데이터셋 리비전을 고정할 것을 권장받습니다.
- 기여를 환영하며, 기여 가이드는 이슈, 풀 리퀘스트, 코드 스타일(Ruff), 테스트, 문서를 다룹니다.
- 이 라이브러리는 EMNLP 2021 시스템 데모 논문에 설명되어 있으며, 인용을 위한 버전별 Zenodo DOI가 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.