Hugging Face Hub에서 Parquet 중복 제거 개선

Hugging Face는 Parquet 파일 중복 제거 효율성을 향상시키기 위해 저장소 아키텍처를 최적화하고 있으며, 사용자가 대규모 데이터셋을 업데이트할 때 필요한 저장 오버헤드를 줄이고 있습니다. 이 작업은 Parquet 파일이 Hugging Face Hub에 호스팅된 약 11PB 데이터셋 중 2.2PB 이상을 차지하고 있기 때문에 매우 중요합니다.

Parquet 중복 제거의 과제

스토리지 비용을 최소화하기 위해 Hugging Face는 바이트 수준의 콘텐츠 기반 청킹(Content-Defined Chunking, CDC)을 사용하여 데이터를 중복 제거합니다. CDC는 많은 파일 유형에서 삽입 및 삭제에 효과적이지만, Parquet 파일의 특수한 레이아웃은 증분 업데이트 중 효율적인 중복 제거에 어려움을 초래합니다.

Parquet 테이블은 행 그룹(row groups)으로 구성되며, 각 행 그룹 내의 각 컬럼은 압축되어 저장됩니다. 이러한 구조 때문에 데이터 변경이 결과 파일 바이트에 불균형적인 영향을 미쳐, 이전 버전과 비교하여 파일의 어느 정도를 중복 제거할 수 있는지에 영향을 줍니다.

데이터 작업이 중복 제거에 미치는 영향

Hugging Face는 FineWeb 데이터셋의 2GB Parquet 파일(1,092,000 행)을 사용하여 다양한 작업이 중복 제거 비율에 어떻게 영향을 미치는지 분석하기 위한 실험을 수행했습니다:

데이터 추가

10,000개의 새로운 행을 추가하면 높은 중복 제거 효율을 얻을 수 있습니다. 추가 작업은 파일의 끝 부분에만 영향을 미치므로, 새로운 버전은 99.1% 중복 제거되어 추가 저장소가 20MB에 불과합니다.

데이터 수정

단일 행(예: 10,000번째 행)을 수정하면 중복 제거가 크게 저하됩니다. 새로운 파일은 89%만 중복 제거되어 추가 저장소가 230MB 필요합니다. 이는 Parquet 파일 형식이 컬럼 헤더에 절대 파일 오프셋을 포함하고 있기 때문이며(ColumnChunkColumnMetaData 구조에 명시), 어떤 수정도 모든 컬럼 헤더를 다시 쓰게 만듭니다.

데이터 삭제

파일 중간의 행을 삭제하면 남은 파일이 완전히 새로운 블록으로 구성되는 경우가 많아 파일 후반부의 중복 제거가 깨집니다. 이는 주로 과도한 컬럼 압축 때문입니다. 압축을 해제하면 중복 제거가 개선되지만 파일 크기가 두 배가 되어 저장 효율성과 중복 제거 능력 사이에 트레이드오프가 발생합니다.

제안된 해결책: 콘텐츠 기반 행 그룹

삭제 또는 삽입 시 압축과 중복 제거 효율성을 모두 유지하기 위해, Hugging Face는 바이트 수준이 아닌 행 수준에서 콘텐츠 기반 청킹(Content-Defined Chunking)을 사용할 것을 제안합니다.

고정된 행 수(예: 매 1,000행)로 행 그룹을 나누는 대신, 제공된 "Key" 컬럼의 해시를 기준으로 행 그룹을 나눕니다. 키 컬럼의 해시를 목표 행 수로 나눈 나머지가 0이 될 때마다(최소 및 최대 크기 제한을 두고) 행 그룹이 분할됩니다.

실험 결과, 이 방법은 행이 삭제될 때도 영향을 받은 행 그룹과 컬럼 헤더만 다시 쓰여 압축된 Parquet 파일 전반에 걸쳐 효율적인 중복 제거가 가능함을 보여줍니다.

Parquet 저장소를 위한 향후 최적화

Hugging Face는 Parquet 중복 제거 가능성을 향상시키기 위한 두 가지 주요 방안을 제시합니다:

  1. Relative Offsets(상대 오프셋): 파일 구조 데이터에서 절대 오프셋을 상대 오프셋으로 교체하여 Parquet 구조를 위치에 독립적으로 만들기. 다만, 이는 파일 형식에 대한 복잡한 변경으로 간주됩니다.
  2. Content-Defined Row Groups(콘텐츠 기반 행 그룹): 행 그룹에 콘텐츠 기반 청킹을 지원하도록 구현. Parquet 형식은 균일한 크기의 행 그룹을 요구하지 않으므로, 기존 형식에 최소한의 영향을 주면서 Parquet 포맷 라이터를 업데이트하여 구현할 수 있습니다.

또한, Hugging Face는 업로드 전에 Parquet 파일을 선택적으로 다시 작성하여 절대 파일 오프셋을 제거하고, 다운로드 시 이를 복원하는 방안을 검토하고 있습니다.

Sources