Hub documentation
Xet: 우리의 스토리지 백엔드
Xet: 우리의 스토리지 백엔드
Hugging Face Hub의 저장소는 소프트웨어 개발 플랫폼의 저장소와 다릅니다. 여기에는 다음 파일이 포함됩니다:
- Large - 모델 또는 데이터셋 파일은 GB 이상 범위에 있습니다. 몇 TB 규모의 파일도 있습니다!
- 바이너리 - 기본적으로 사람이 읽을 수 있는 형식이 아닙니다 (예: Safetensors 또는 Parquet)
Hub은 Git의 지원을 받아 현대적인 버전 관리를 활용하지만, 이러한 차이로 인해 Model 및 Dataset 저장소는 소스 코드만 포함하는 저장소와 상당히 다릅니다.
이러한 파일을 순수한 Git 저장소에 직접 저장하는 것은 비현실적입니다. Git 저장소 뒤에 있는 일반적인 저장 시스템이 이러한 파일에 적합하지 않을 뿐만 아니라, 저장소를 클론하면 Git은 모든 파일 리비전을 포함한 전체 히스토리를 가져옵니다. 이는 방대한 바이너리 파일의 경우 허용할 수 없을 정도로 크기가 커질 수 있으며, 필요하지 않을 수 있는 기가바이트 단위의 과거 데이터를 다운로드해야 하는 상황이 됩니다.
대신 Hub에서는 이러한 대용량 파일을 “포인터 파일”로 추적하며, .gitattributes 파일(둘 다 아래에서 자세히 설명합니다)을 통해 식별합니다. 이 파일들은 Git 저장소에 남아 있고, 실제 데이터는 원격 저장소(예: Amazon S3)에 저장됩니다. 그 결과 저장소는 작게 유지되고 일반적인 Git 워크플로가 효율적으로 유지됩니다.

과거에는 Hub 저장소가 이 메커니즘을 위해 Git LFS에 의존했습니다. Git LFS는 여전히 지원됩니다(하위 호환성 및 레거시 참고)만, Hub는 AI/ML 개발을 위해 특별히 구축된 최신 커스텀 저장 시스템인 Xet을 채택했습니다. 이를 통해 Git LFS보다 더 작은 업로드와 더 빠른 다운로드, 그리고 청크 수준의 중복 제거가 가능합니다.
오픈 소스 Xet 프로토콜
Xet 프로토콜의 내부 구조를 이해하거나 Xet Storage에 액세스하기 위한 새로운 클라이언트 라이브러리를 구축하려는 경우 Xet Protocol Specification를 확인해 보세요.
이 페이지에서는 Xet Storage 사용법을 시작합니다.