피드로 돌아가기
Hugging Face BlogBackend
원문 읽기
Hugging Face가 Apache Arrow의 Parquet Content-Defined Chunking을 Xet 스토리지 레이어와 통합해 변경된 데이터 청크만 업로드/다운로드하도록 구현
Parquet Content-Defined Chunking
AI 요약
Context
Hugging Face는 약 4PB의 Parquet 파일을 호스팅 중이며, Parquet의 열 기반 압축 구조로 인해 작은 데이터 변경도 전체 바이트 수준의 재표현을 발생시켜 콘텐츠 기반 저장소에서 중복 제거 성능이 저하되고 있었다. 기존 방식에서는 작은 변경사항도 전체 파일을 다시 업로드/다운로드해야 했다.
Technical Solution
- Parquet Content-Defined Chunking (CDC) 기능 구현: PyArrow와 Pandas에서
use_content_defined_chunking=True파라미터를 통해 CDC 활성화 - Xet 스토리지 레이어 도입: 콘텐츠 주소 지정 방식의 저장소에서 중복된 청크를 식별하고 건너뛰도록 설계
- hf:// URI 스킴 지원: PyArrow 21.0.0 이상에서
pq.write_table(),pq.read_table()등 함수가 Hugging Face Hub 경로를 직접 처리 - 변경된 청크만 전송: 정확한 복사본, 컬럼 추가/제거, 타입 변경, 행 추가/삭제, 행 그룹 크기 변경 등 다양한 시나리오에서 변경된 데이터 페이지만 업로드/다운로드
Impact
아티클에 구체적인 성능 수치(전송 시간 감소율, 저장소 절감율)가 명시되지 않았으나, 100,000행 테이블 재업로드 시 기존 방식은 96.1MB 전체 전송이 필요함을 보여줌.
Key Takeaway
Parquet 파일을 다루는 대규모 데이터 워크플로우에서는 파일 포맷 자체의 특성(열 기반 압축)이 콘텐츠 기반 중복 제거의 효율성을 크게 좌우하므로, 저장소 계층과 파일 포맷 간의 적절한 통합이 데이터 전송 비용을 획기적으로 낮출 수 있다.
실천 포인트
Hugging Face Hub에서 대규모 Parquet 데이터셋을 관리하는 엔지니어는 `use_content_defined_chunking=True` 파라미터를 활성화한 후 쓰기 작업을 수행하면, 스키마 변경이나 행 추가 같은 부분 업데이트 시 변경된 청크만 네트워크 전송할 수 있어 업로드 대역폭과 저장소 비용을 절감할 수 있다.