- Meta가 공개한 OpenZL은 구조화된 데이터에 대해 무손실 압축을 제공하는 새로운 오픈소스 압축 프레임워크로, 데이터 형식을 인식하여 효율적인 변환 과정을 수행
- 각 파일 형식마다 다른 변환 단계를 적용하지만, 모든 파일을 단일 범용 디컴프레서로 해독 가능하도록 설계됨
- 압축기에 데이터 구조를 명시적으로 전달하여 변환 과정을 최적화하고, 학습된 압축 구성(config) 을 통해 속도와 압축률 간의 다양한 균형점을 선택할 수 있음
- Meta 내부의 Managed Compression 시스템과 연동되어, 데이터 변화에 맞춰 자동 재학습 및 갱신이 가능한 점이 특징
- 구조가 명확한 데이터셋에서 높은 성능을 보여 데이터센터 처리 효율을 개선하고, 압축 생태계를 단일 디코더로 단순화할 가능성을 제시
OpenZL 개요
-
OpenZL은 Meta가 공개한 포맷 인식형 데이터 압축 프레임워크로, 구조화된 데이터를 위해 특화된 압축 효율을 제공함
- 데이터의 형식을 명시적으로 알려주면, 내부의 변환 그래프를 통해 데이터의 규칙성과 반복성을 찾아 더 효율적으로 압축함
- Zstandard의 후속 개념으로, 포맷별 최적화 압축의 성능과 단일 실행 파일의 유지보수성을 결합한 구조
- Zstandard는 데이터센터에서 속도와 압축률을 동시에 충족하며 큰 도약을 이뤘으나, 알고리듬의 일반화로 인한 점진적 개선 한계가 존재
- 구조화된 데이터에선 일반 압축법보다 형태에 맞춘 맞춤식 압축이 비율과 속도 모두에서 유리함
- 하지만, 각 파일 포맷마다 전용 압축/복원기를 구축·운영하는 부담이 큼
- OpenZL은 개별 맞춤 압축기의 성능과 단일 바이너리 운용의 간편성을 동시에 추구
구조 기반 압축 방식
- 일반적인 압축기가 데이터를 추측 기반으로 처리하는 반면, OpenZL은 데이터 구조를 명시적 입력으로 제공받음
- 사용자는 Simple Data Description Language (SDDL) 을 통해 데이터의 형태(행, 열, 열거형, 중첩 구조 등)를 기술할 수 있음
- 이 정보를 바탕으로 OpenZL은 오프라인 학습(트레이너)을 통해 최적의 변환 시퀀스(Plan) 를 생성함
- 이후 압축 시 이 Plan을 기반으로 실제 디코딩 그래프(Resolved Graph) 를 만들어 프레임에 내장함
예시: SAO 데이터 압축
- Silesia Compression Corpus의 SAO 파일을 예시로, OpenZL은 각 필드를 분리해 동질적 데이터 스트림으로 변환 후 개별 최적화를 수행
- X축 좌표(SRA0)는 정렬 성향이 있어 델타(delta) 변환 적용
- Y축 좌표(SDEC0)는 범위 제한을 활용해 transpose 변환
- 나머지 필드는 낮은 고유값 수에 따라 tokenize 변환으로 사전 기반 압축 수행
- 결과적으로 zstd 대비 2배 이상의 압축률과 더 빠른 속도(340 MB/s) 를 기록함
자동 압축기 생성과 학습 과정
- OpenZL의 트레이너는 데이터 샘플을 기반으로 자동으로 압축 전략을 탐색 및 학습
- 학습 과정: describe(SDDL) → train(Plan 생성) → compress(그래프 내장) → decode(단일 바이너리로 복원)
-
컨트롤 포인트(control points) 를 사용해 런타임 시점에서 통계 정보를 기반으로 최적의 경로를 선택함
- 새 플랜을 적용해도 기존 데이터는 그대로 복호화 가능, 역호환성 유지
단일 디컴프레서의 장점
- OpenZL은 어떤 포맷으로 압축했더라도 단일 디컴프레서 바이너리로 복원 가능함
-
보안 및 안정성 검증을 한 번만 수행하면 전체 시스템에 적용 가능
- 디컴프레서 업데이트 시, 모든 과거 데이터에도 성능 향상 효과 적용
-
운영 단순성과 플릿 전체 일관성 확보
- 여러 포맷을 동시에 관리하면서도 하위 호환성 유지
성능 비교 결과
- 다양한 데이터셋에서 zstd, xz 등 범용 압축기 대비 더 높은 압축률과 속도 달성
- SAO: 2.06배 압축률, 1200 MB/s 복원 속도
- ERA5(수치 데이터): 같은 시간 내 더 높은 압축률, 또는 같은 압축률에서 더 빠른 속도
- Parquet, CSV 데이터셋에서도 포맷 인식 기반으로 맞춤형 최적화 가능
- 단, 텍스트 기반처럼 구조가 없는 데이터에는 효과가 제한적이며 zstd로 폴백하여 최소 성능 보장
- 압축률/압축 속도/복원 속도 3축에서 다양한 조합을 선택할 수 있으며, 전통 압축기의 “레벨” 조절과는 다른 유연성 제공
데이터 진화와 자동 재훈련
- Meta의 Managed Compression과 연계되어 데이터 포맷 변경 시 자동으로 압축 플랜을 재학습
- 주기적으로 샘플링, 평가 후 더 나은 플랜이 발견되면 자동 업데이트
- 디컴프레서는 동일하게 유지되어 운영 리스크 최소화
오픈소스 생태계 참여와 향후 방향
- OpenZL은 벡터, 테이블, 트리 구조 데이터에 적합하며, 시계열·ML 텐서·데이터베이스 테이블 등에서 뛰어난 효율을 보임
- 구조가 없는 텍스트(예: enwik, dickens 등)에는 zstd 적용
- 향후 계획:
- 시계열 및 격자 데이터용 변환 라이브러리 확장
-
SDDL의 중첩 데이터 표현력 강화
- 자동 압축기 탐색기의 성능 및 안정성 향상
- 커뮤니티 참여 방법:
- 공식 OpenZL 사이트 및 GitHub 저장소에서 예시, 문서 참고 가능
- 새로운 데이터 포맷 테스트 및 Plan 제안
- C/C++ 엔진 최적화, 새 변환 추가, 벤치마크 기여 가능
결론
- OpenZL은 포맷 인식 기반 압축을 표준화하면서도, 기존 생태계를 단일 디코더 중심으로 통합할 수 있는 새로운 접근
- Meta는 이를 통해 데이터센터 전반의 압축 효율, 속도, 유지보수성을 동시에 개선하고자 함