GPU 시대 파케트 파일 형식 최적화와 새로운 포맷 필요성

GPU 시대 파케트 파일 형식 최적화와 새로운 포맷 필요성
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

파케트는 CPU 중심 설계가 기본값을 결정했으며, 이러한 기본값은 GPU 스캔 시 병목을 초래한다. 페이지 수 증가, 대규모 Row‑Group, 인코딩 유연성, 불필요한 압축 제거 등 GPU‑친화적인 설정을 적용하면 SSD‑direct 읽기 환경에서 최대 125 GB/s의 읽기 대역폭을 달성할 수 있다. 기존 파케트 사양을 그대로 유지하면서도 성능을 크게 끌어올릴 수 있음을 보여준다.

상세 분석

이 논문은 GPU 가속 데이터 분석 환경에서 파케트 파일의 기본 설정이 GPU 활용도를 크게 제한한다는 점을 실험적으로 입증한다. 첫 번째 핵심 인사이트는 GPU 커널이 페이지 단위로 병렬화를 수행한다는 사실이다. 파케트 파일이 페이지당 하나의 컬럼 청크만을 포함하도록 생성되면, 페이지 수가 적어 GPU의 수천 개 스레드가 충분히 활용되지 못한다. 저자는 페이지 수를 100 이상으로 늘리면 커널 그리드 크기에 맞춰 GPU가 충분히 활성화되어 디코딩 단계에서의 처리량이 급격히 상승한다는 것을 확인했다.

두 번째 인사이트는 Row‑Group(RG) 크기의 GPU‑I/O 특성을 고려해야 한다는 것이다. CPU‑중심 워크로드에서는 수십 KB 수준의 RG가 최적이지만, GPU‑Direct Storage(GDS)를 통한 SSD‑direct 읽기에서는 메가바이트 단위의 전송이 I/O 버스 포화에 더 효율적이다. 실험에서는 4 M~10 M 행 규모의 RG가 SSD‑bus 대역폭을 최대로 활용함을 보여준다.

세 번째 인사이트는 인코딩 선택의 유연성이다. 기존 파케트 라이터는 컬럼 전체에 동일한 V1 인코딩을 적용하지만, GPU에서는 인코딩마다 압축률과 디코딩 비용이 크게 차이난다. 저자는 각 컬럼 청크별로 V1·V2 인코딩을 모두 시도하고 압축률이 가장 좋은 방식을 선택하도록 함으로써, 압축 후 파일 크기를 감소시켜 SSD‑읽기 시간을 단축하고, 결과적으로 GPU가 디코딩에 할당해야 할 데이터 양을 줄였다.

네 번째 인사이트는 압축 적용 기준을 재설정하는 것이다. 압축이 파일 크기를 10 % 이하로만 감소시킬 경우, 압축·해제 연산이 오히려 GPU의 계산 자원을 소모해 전체 실행 시간을 늘린다. 따라서 압축 비율이 충분히 높을 때만 적용하도록 하면, 특히 다중 SSD 환경에서 GPU가 계산‑바운드 상태로 전환되는 것을 방지할 수 있다.

이 네 가지 최적화는 모두 파케트 사양을 변경하지 않고 파일 메타데이터만 재작성하는 방식으로 구현되었다. 논문에서 제시한 “Parquet Rewriter” 도구는 기존 파케트 파일을 읽어 페이지 수, RG 크기, 인코딩, 압축 여부를 지정된 설정으로 변환한다. 재작성 비용은 CPU 멀티스레드 환경에서 수분 수준에 그치며, 재작성 후 파일 크기가 감소하기 때문에 저장 비용은 오히려 절감된다.

실험은 TPC‑H SF300 데이터셋을 4개의 NVMe SSD와 NVIDIA A100 GPU를 사용해 수행했으며, 기본 DuckDB‑생성 파케트 파일은 전체 스캔에 85 % 이상의 실행 시간이 소요된다고 보고한다. 제안된 최적화 조합을 적용한 후에는 최대 125 GB/s의 읽기 대역폭을 달성하고, 전체 쿼리 실행 시간이 5배 이상 단축되었다. 이는 새로운 GPU‑전용 파일 포맷을 설계하기 전에 기존 포맷을 충분히 활용할 수 있음을 강력히 시사한다.

결론적으로, 파케트 자체는 GPU 환경에서도 높은 성능을 낼 수 있는 잠재력을 가지고 있다. 핵심은 CPU‑중심 기본값을 GPU‑친화적인 값으로 교체하는 것이며, 이를 통해 기존 파케트 생태계를 유지하면서도 GPU 가속 분석 파이프라인의 병목을 크게 해소할 수 있다.


댓글 및 학술 토론

Loading comments...

의견 남기기