lakeFS로 HuggingFace Datasets 버저닝하기
HuggingFace 🤗 Datasets는 오디오, 컴퓨터 비전, 자연어 처리(NLP) 작업을 위한 데이터셋을 쉽게 접근하고 공유하게 해 주는 라이브러리예요.
🤗 Datasets는 fsspec FileSystem 구현을 통해 클라우드 스토리지 제공자에 접근할 수 있어요.
lakefs-spec은 lakeFS의 능력을 완전히 활용하는 fsspec Filesystem의 커뮤니티 구현이에요. 설치부터 시작해 볼게요:
출처: 문서
본문
설치
pip install lakefs-spec
설정
이미 lakeFS Python SDK와/또는 lakectl을 설정했다면, lakeFS 환경의 액세스 자격 증명과 엔드포인트를 담은 $HOME/.lakectl.yaml 파일이 있을 거예요.
없다면 lakectl을 설치하고 lakectl config를 실행해 액세스 자격 증명을 설정하세요.
데이터셋 읽기
데이터셋을 읽으려면 load_dataset을 호출할 때 lakefs://... URI만 쓰면 돼요:
>>> from datasets import load_dataset
>>>
>>> dataset = load_dataset('csv', data_files='lakefs://example-repository/my-branch/data/example.csv')
이게 전부예요! 설치한 lakefs-spec 구현이 자동으로 로드되고, $HOME/.lakectl.yaml 파일에서 자격 증명을 읽기 때문에 추가 설정을 넘길 필요가 없어요.
저장/로딩
데이터셋을 로드한 뒤에는 평소처럼 save_to_disk 메서드로 저장할 수 있어요:
>>> dataset.save_to_disk('lakefs://example-repository/my-branch/datasets/example/')
이 시점에서 그 변경을 lakeFS에 커밋하고 태그를 붙여, 동료들과 공유하고 싶을 수 있어요.
UI나 lakectl로 할 수도 있지만, 여기서는 lakeFS Python SDK로 해 볼게요:
>>> import lakefs
>>>
>>> repo = lakefs.repository('example-repository')
>>> commit = repo.branch('my-branch').commit(
... 'saved my first huggingface Dataset!',
... metadata={'using': '🤗'})
>>> repo.tag('alice_experiment1').create(commit)
이제 팀의 다른 사람들이 우리가 만든 태그로 정확한 데이터셋을 로드할 수 있어요:
>>> from datasets import load_from_disk
>>>
>>> dataset = load_from_disk('lakefs://example-repository/alice_experiment1/datasets/example/')