피드로 돌아가기
From Chunks to Blocks: Accelerating Uploads and Downloads on the Hub
Hugging Face BlogHugging Face Blog
Backend

Hugging Face가 청크 기반 업로드 방식을 블록 기반 집계 구조로 재설계해 업다운로드 속도 2~3배 향상 및 저장 공간 49% 감소

From Chunks to Blocks: Accelerating Uploads and Downloads on the Hub

2025년 2월 12일9intermediate

Context

200GB 대규모 저장소 업로드 시 파일 단위 접근은 수백만 개의 네트워크 요청을 생성해 클라이언트와 서버 부하를 초과한다. 순수 청크 기반 접근은 Hub 전체 45PB 데이터 기준 6,900억 개의 청크 엔트리를 생성하므로, DynamoDB나 S3 같은 스토리지 서비스의 월간 비용이 급증한다.

Technical Solution

  • 청크를 64MB 이상 블록으로 번들링: 콘텐츠 주소 지정 방식 유지하면서 CAS 엔트리 1,000배 감소
  • 파일과 청크 간 매핑을 샤드로 제공: 변경된 파일 부분만 식별해 이전 업로드 샤드를 참조하고 알려진 청크 스킵
  • 키 청크(전체 청크의 0.1% 부분집합)에 대한 글로벌 인덱스 구축: 모든 청크를 쿼리하는 대신 해시 모듈로 조건으로 선택된 키 청크와 포함된 샤드만 반환
  • 공간 지역성 원칙 활용: 키 청크가 샤드에서 참조되면 동일 샤드의 유사 청크 참조도 함께 제공해 중복 제거율 향상
  • hf_xet 통합으로 로컬 청크 캐싱: 변경 또는 신규 파일 추가 시 로컬 캐시 청크 재다운로드 제거

Impact

  • bartowski/gemma-2-9b-it-GGUF 191GB 저장소: 97GB로 저장(약 94GB 절감, 49% 감소)
  • 50MB/s 기준 업로드 시간 509분에서 258분으로 단축(약 4시간 차이, 2배 속도 향상)
  • 일부 사례에서 업다운로드 속도 2~3배 가속

Key Takeaway

대규모 분산 시스템에서 중복 제거는 최종 목표가 아니라 개발자 경험을 개선하는 수단이므로, 개별 엔트리 1:1 통신을 피하고 블록·샤드·키 청크 같은 집계 전략으로 네트워크와 데이터베이스 메타데이터 부하를 근본적으로 줄이는 것이 핵심이다.


대용량 파일 저장소(모델, 데이터셋 등)를 운영하는 백엔드 서비스에서 청크 기반 중복 제거 시 모든 청크를 개별 추적하는 대신, 64MB 블록 단위로 번들링하고 키 청크 글로벌 인덱스를 도입하면 메타데이터 엔트리를 1,000배 줄이면서도 중복 제거 효과를 유지할 수 있다.

원문 읽기