Datasets documentation

CLI를 사용하여 데이터셋 공유

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

CLI를 사용하여 데이터셋 공유

Hugging Face에서는 양질의 Machine Learning을 대중화하는 것을 목표로 하며 오픈 소스의 가치를 믿고 있습니다. 그래서 누구나 더 넓은 ML 커뮤니티와 데이터셋을 공유할 수 있도록 🤗 Datasets를 설계했습니다. 현재 Hugging Face Hub에는 100개 이상의 언어로 된 수천 개의 데이터셋이 있으며, Hugging Face 팀은 항상 새로운 기여를 환영합니다!

Dataset 저장소는 다음과 같은 기능을 제공합니다:

  • 무료 데이터셋 호스팅
  • Dataset 버전 관리
  • 커밋 히스토리와 diff
  • 검색 가능성을 위한 메타데이터
  • 문서화, 라이선스, 한계 사항 등에 대한 Dataset cards
  • 데이터셋 뷰어

이 가이드에서는 누구나 쉽게 접근할 수 있는 데이터셋 폴더 또는 저장소를 공유하는 방법을 보여줍니다.

데이터셋 추가

Hugging Face Hub의 데이터셋 저장소를 통해 커뮤니티와 데이터셋을 공유할 수 있습니다. 액세스 권한을 관리하려면 비공개 데이터셋으로 설정할 수도 있습니다.

데이터셋 저장소에서 모든 데이터 파일을 호스팅하고 데이터셋을 구성하여 각 파일이 어떤 split에 할당되는지 정의할 수 있습니다. 다음과 같은 형식이 지원됩니다: CSV, TSV, JSON, JSON lines, text, Parquet, Arrow, SQLite, WebDataset. 다양한 종류의 압축 파일 형식도 지원됩니다: GZ, BZ2, LZ4, LZMA 또는 ZSTD. 예를 들어, 데이터셋은 .json.gz 파일로 구성될 수 있습니다.

Hub에서 데이터셋을 로드할 때, 저장소 구조에 따라 지원되는 형식의 모든 파일이 로드됩니다.

Hub에서 데이터셋을 로드하는 방법에 대한 자세한 내용은 Hub에서 데이터셋 로드 튜토리얼을 참고하세요.

리포지토리 생성

커뮤니티 데이터셋을 공유하려면 아직 계정이 없다면 hf.co에서 계정을 생성해야 합니다. Hugging Face Hub에서 계정으로 직접 새 데이터셋 저장소를 생성할 수 있지만, 이 가이드에서는 터미널에서 데이터셋을 업로드하는 방법을 보여줍니다.

  1. Datasets를 설치한 가상 환경에 있는지 확인한 후 다음 명령을 실행하세요:
hf auth login
  1. Hugging Face Hub 자격 증명으로 로그인하고 새로운 데이터셋 저장소를 생성합니다:
hf repos create my-cool-dataset --type dataset

조직 아래에 저장소를 생성하려면 저장소 이름 앞에 조직을 접두사로 붙입니다:

hf repos create your-org-name/my-cool-dataset --type dataset

파일 준비

업로드할 파일이 다음 파일뿐인지 디렉터리를 확인하세요:

  • 데이터셋의 데이터 파일

  • 데이터셋 카드 README.md

hf upload

hf upload 명령을 사용하면 파일을 Hub에 직접 업로드할 수 있습니다. 내부적으로 업로드 가이드에 설명된 upload_file 및 upload_folder 헬퍼를 동일하게 사용합니다. 아래 예시에서는 가장 일반적인 사용 사례를 살펴봅니다. 사용 가능한 모든 옵션을 확인하려면 다음을 실행할 수 있습니다:

>>> hf upload --help

hf에 대한 보다 일반적인 정보는 CLI 가이드에서 확인할 수 있습니다.

전체 폴더 업로드

이 명령어의 기본 사용법은 다음과 같습니다:

# Usage:  hf upload [dataset_repo_id] [local_path] [path_in_repo] --repo-type dataset

리포지토리의 루트에 현재 디렉터리를 업로드하려면 다음을 사용하세요:

>>> hf upload my-cool-dataset . . --repo-type dataset
https://huggingface.co/datasets/Wauplin/my-cool-dataset/tree/main/

리포지토리가 아직 없으면 자동으로 생성됩니다.

특정 폴더를 업로드할 수도 있습니다:

>>> hf upload my-cool-dataset ./data . --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/tree/main/

마지막으로, 폴더를 저장소의 특정 위치에 업로드할 수 있습니다:

>>> hf upload my-cool-dataset ./path/to/curated/data /data/train --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/tree/main/data/train

Upload a single file

local_path를 로컬 머신에 있는 파일로 지정하여 단일 파일만 업로드할 수도 있습니다. 이 경우 path_in_repo는 선택 사항이며, 기본값으로 로컬 파일 이름이 사용됩니다:

>>> hf upload Wauplin/my-cool-dataset ./files/train.csv --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/blob/main/train.csv

특정 디렉토리에 단일 파일을 업로드하려면 path_in_repo를 다음과 같이 설정하세요:

>>> hf upload Wauplin/my-cool-dataset ./files/train.csv /data/train.csv --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/blob/main/data/train.csv

여러 파일 업로드

폴더 전체를 업로드하지 않고 폴더에서 여러 파일을 한 번에 업로드하려면 --include 및 --exclude 패턴을 사용합니다. --delete 옵션과 함께 사용하여 새 파일을 업로드하는 동안 리포지토리의 파일을 삭제할 수도 있습니다. 아래 예시에서는 원격 파일을 삭제하고 모든 CSV 파일을 업로드하여 로컬 Space를 동기화합니다.

# Sync local Space with Hub (upload new CSV files, delete removed files)
>>> hf upload Wauplin/my-cool-dataset --repo-type dataset --include="/data/*.csv" --delete="*" --commit-message="Sync local dataset with Hub"
...

조직에 업로드

개인 저장소가 아닌 조직 소유의 저장소에 콘텐츠를 업로드하려면 repo_id에 명시적으로 지정해야 합니다:

>>> hf upload MyCoolOrganization/my-cool-dataset . . --repo-type dataset
https://huggingface.co/datasetsMyCoolOrganization/my-cool-dataset/tree/main/

특정 리비전으로 업로드

기본적으로 파일은 main 브랜치에 업로드됩니다. 다른 브랜치 또는 참조에 파일을 업로드하려면 --revision 옵션을 사용하세요:

# Upload files to a PR
hf upload bigcode/the-stack . . --repo-type dataset --revision refs/pr/104
...

참고: revision이 존재하지 않고 --create-pr가 설정되지 않은 경우, main 브랜치에서 브랜치가 자동으로 생성됩니다.

업로드 및 PR 생성

리포지토리에 push할 권한이 없다면 PR을 열고 변경하려는 내용을 작성자에게 알려야 합니다. --create-pr 옵션을 설정하여 수행할 수 있습니다:

# Create a PR and upload the files to it
>>> hf upload bigcode/the-stack --repo-type dataset --revision refs/pr/104 --create-pr . .
https://huggingface.co/datasets/bigcode/the-stack/blob/refs%2Fpr%2F104/

정해진 간격으로 업로드

일부 경우에는 저장소에 정기적으로 업데이트를 푸시하고 싶을 수 있습니다. 예를 들어, 데이터셋이 시간이 지남에 따라 계속 커지고 있고 10분마다 데이터 폴더를 업로드하고 싶다면 유용합니다. --every 옵션을 사용하여 이를 수행할 수 있습니다:

# Upload new logs every 10 minutes
hf upload my-cool-dynamic-dataset data/ --every=10

커밋 메시지를 지정합니다

기본 메시지 대신 커밋에 사용자 지정 메시지와 설명을 설정하려면 --commit-message와 --commit-description를 사용하세요

>>> hf upload Wauplin/my-cool-dataset ./data . --repo-type dataset --commit-message="Version 2" --commit-description="Train size: 4321. Check Dataset Viewer for more details."
...
https://huggingface.co/datasetsWauplin/my-cool-dataset/tree/main

토큰 지정

파일을 업로드하려면 토큰을 사용해야 합니다. 기본적으로 로컬에 저장된 토큰(hf auth login을 사용하여 저장)이 사용됩니다. 명시적으로 인증하려면 --token 옵션을 사용하세요:

>>> hf upload Wauplin/my-cool-dataset ./data . --repo-type dataset --token=hf_****
...
https://huggingface.co/datasetsWauplin/my-cool-data/tree/main

조용 모드

기본적으로 hf upload 명령은 상세한 출력을 제공합니다. 경고 메시지, 업로드된 파일에 대한 정보, 진행률 표시줄과 같은 세부 사항을 출력합니다. 이러한 모든 출력을 비활성화하려면 --quiet 옵션을 사용하세요. 이 경우 마지막 줄(즉, 업로드된 파일의 URL)만 출력됩니다. 스크립트에서 출력을 다른 명령으로 전달하려는 경우 유용할 수 있습니다.

>>> hf upload Wauplin/my-cool-dataset ./data . --repo-type dataset --quiet
https://huggingface.co/datasets/Wauplin/my-cool-dataset/tree/main

즐기세요!

축하합니다! 이제 데이터셋이 Hugging Face Hub에 업로드되어 누구나 한 줄의 코드로 로드할 수 있습니다! 🥳

dataset = load_dataset("Wauplin/my-cool-dataset")

데이터셋이 지원되는 경우, 모든 사용자가 데이터셋 내용을 탐색할 수 있도록 Dataset Viewer도 함께 제공되어야 합니다.

마지막으로, 데이터셋을 문서화하고 검색 가능하도록 만들기 위해 데이터셋 카드를 보완하는 것을 잊지 마세요. 자세한 내용은 데이터셋 카드 만들기 가이드를 참고하세요.

Update on GitHub