파quet의 콘텐츠 정의 청크 기능으로 Hugging Face 저장소에서 업로드/다운로드 시간 줄여
Hugging Face Hub는 Apache Arrow의 Parquet Content-Defined Chunking (CDC) 기능을 활용한 새로운 저장소 레이어 Xet을 도입하여 Parquet 파일 업로드 및 다운로드 시간을 줄이고 데이터 워크플로우를 더 효율적이고 확장 가능하게 만든다. CDC는 데이터의 내용에 따라 청크를 분할하여, 유사한 데이터가 있을 경우 변경된 청크만 업로드하거나 다운로드할 수 있도록 하여 저장소 비용과 전송 시간을 크게 줄인다. 이 기능은 PyArrow와 Pandas에서 사용 가능하며, use_content_defined_chunking 인수를 True로 설정하면 활성화된다. 이 기능의 효과를 검증하기 위해 여러 시나리오를 테스트했다. 예를 들어, 동일한 데이터를 다시 업로드하면 기존 데이터가 이미 저장소에 존재하기 때문에 전체 데이터를 전송하지 않고, 변경된 부분만 전달된다. 컬럼 추가나 삭제 시에도 기존 데이터는 재전송되지 않고, 변경된 부분만 처리된다. 그러나 데이터 페이지가 변경되는 경우, 예를 들어 행 삽입 또는 삭제 시 CDC 기능이 없으면 전체 데이터가 다시 전송되는 문제가 발생한다. 이를 해결하기 위해 CDC를 사용하면 데이터 페이지의 내용에 따라 청크가 분할되므로, 행 삽입 또는 삭제 시에도 기존 데이터가 효율적으로 재사용된다. 또한, 행 그룹 크기 조정이나 파일 수준 분할 시에도 CDC가 효과적으로 작동한다. 다양한 분할 설정을 사용해도 데이터 전송량은 원본과 거의 비슷한 수준으로 유지된다. Pandas를 사용하는 경우에도 CDC 기능을 활성화할 수 있어, 데이터 처리 효율성과 저장소 최적화를 동시에 달성할 수 있다. 이러한 기능은 Hugging Face의 Xet 저장소와 결합하여 데이터 전송 시간과 비용을 줄이고, 데이터 공유 및 협업을 효율적으로 지원한다. 이는 데이터 워크플로우에서 큰 성능 향상과 저장소 비용 절감을 기대할 수 있는 중요한 기술이다. Hugging Face의 Git LFS에서 Xet으로 이전하면 이러한 이점을 누릴 수 있다.