Xet: 허깅페이스의 스토리지 백엔드

Xet: 허깅페이스의 스토리지 백엔드

허깅페이스 Hub의 저장소는 소프트웨어 개발 플랫폼의 것과 달라요. 모델·데이터셋 파일은 GB 단위 이상으로 크고, 기본적으로 사람이 읽기 어려운 바이너리 형식이에요. Xet은 이런 대용량 파일을 다루기 위해 Hub가 도입한 현대적인 커스텀 스토리지 시스템이에요.

출처: 문서

본문

Hugging Face Hub의 저장소는 소프트웨어 개발 플랫폼의 것과 달라요. 포함된 파일이 다음과 같은 특성을 갖기 때문이죠:

  • 크다(Large) — 모델이나 데이터셋 파일은 GB 단위 이상이에요. 몇몇 파일은 TB 단위규모이기도 해요!
  • 바이너리(Binary) — 기본적으로 사람이 읽을 수 없는 형식이에요 (예: Safetensors 또는 Parquet)

Hub가 Git 지원과 함께 현대적인 버전 관리를 활용하지만, 이러한 차이 때문에 모델데이터셋 저장소는 소스 코드만 담은 저장소와는 꽤 달라요.

이런 파일을 순수 Git 저장소에 직접 저장하는 것은 비현실적이에요. Git 저장소 뒤의 일반적인 스토리지 시스템이 이런 파일에 적합하지 않을 뿐 아니라, 저장소를 클론하면 Git이 모든 파일 리비전을 포함한 전체 기록을 가져오거든요. 대용량 바이너리에는 이게 엄청나게 클 수 있어서, 절대 쓸 일이 없을 수도 있는 기가바이트 단위의 과거 데이터를 다운로드하게 돼요.

대신 Hub에서는 이런 대용량 파일을 "포인터 파일(pointer files)"로 추적하고 .gitattributes 파일로 식별해요(둘 다 아래에서 자세히 설명). 포인터 파일은 Git 저장소에 남고 실제 데이터는 원격 스토리지(예: Amazon S3)에 저장되죠. 그 결과 저장소는 작게 유지되고 일반적인 Git 워크플로도 효율적으로 동작해요.

역사적으로 Hub 저장소는 이 메커니즘에 Git LFS에 의존해 왔어요. Git LFS는 여전히 지원되지만(하위 호환성 & 레거시 참고), Hub는 AI/ML 개발을 위해 특별히 구축된 현대적인 커스텀 스토리지 시스템인 Xet을 도입했어요. Xet은 Git LFS보다 청크 수준 중복 제거, 더 작은 업로드, 더 빠른 다운로드를 가능하게 해요.

오픈소스 Xet 프로토콜

기본 Xet 프로토콜을 이해하고 싶거나 Xet Storage에 접근할 새 클라이언트 라이브러리를 만들고 싶다면 Xet Protocol Specification을 확인해 주세요.

이 페이지들에서 Xet Storage 사용법을 시작할 수 있어요.

목차

더 알아보기 (Learn more)

  • Xet은 청크 수준 중복 제거와 빠른 다운로드로 Git LFS보다 대용량 AI/ML 파일 처리에 효율적이에요.
  • 실제 포인터 파일과 .gitattributes 사용법은 Xet Storage 사용하기 문서에서 확인할 수 있어요.