레포 계약 세 개 — 탭 세 개 아님
Hub 는 models, datasets, Spaces 를 서로 다른 레포 계약으로 다뤄 — URL prefix 다르고, 메타 스키마 다르고, 스토리지 백엔드 다르고, rate limit 다르고. 웹 UI 에서 탭으로 묶여 있어서 같은 거처럼 보이지만, 다른 거야.
huggingface.co/{org}/{name}— model 레포. 가중치 (.safetensors/.bin), config, tokenizer, 그리고 YAML front-matter 가 붙은README.md(모델 카드).huggingface.co/datasets/{org}/{name}— dataset 레포. 데이터 파일 (Parquet, CSV, JSONL, audio, image), optional 로딩 스크립트, 데이터셋 카드.huggingface.co/spaces/{org}/{name}— Space 레포. 앱이야: Gradio / Streamlit / Docker / static. 런타임 config, secrets, 하드웨어 tier 가짐.
왜 구분이 중요한가
huggingface_hub 의 모든 API 콜은 repo_type 을 받아. 데이터셋 의미인데 repo_type="model" 넘기면 레포가 존재해도 404 나와 — 같은 Git 인프라, 다른 namespace 라서. HfApi 의 list_models(), list_datasets(), list_spaces() 는 같은 함수의 alias 가 아니야. 다른 인덱스 치고, 다른 필터 받아 (task= 는 모델만, language= 는 모델 + 데이터셋 둘 다).
레포 타입이 페이지에 뭐가 뜨는지도 결정해. 모델 레포는 인퍼런스 위젯 + Use This Model 버튼; 데이터셋 레포는 Data Studio 뷰어; Spaces 는 돌아가는 앱 iframe. 이건 설정 불가능해 — 레포 타입에 묶여 있어.