Apache Beam으로 머신러닝 데이터 파이프라인 구축하기 2편 - 개발 및 최적화
두줄요약
Apache Beam 파이프라인을 Composite PTransform으로 모듈화하고 병렬 처리 병목을 최적화했습니다.\nShared Object, 배치, Side Input으로 ML 추론과 Faiss 벡터 검색의 메모리·처리 문제를 다뤘습니다.
구조와 흐름
- PCollection의 분산 데이터 추상화와 ParDo·Combine 기반 PTransform 처리
- DoFn 처리 로직을 Composite PTransform으로 묶어 재사용·스키마 추적·테스트 단위 확보
- ML 추론 결과 임베딩으로 Faiss 인덱스 구축과 벡터 검색 수행
성능/운영 포인트
- key space 확장으로 병렬도 향상
- High Fanout 구간의 Reshuffle 적용으로 Fusion 방지와 분산 처리 유도
- 데이터 축소 작업의 전방 배치, process 내부 과도한 로깅 회피, 외부 통신 배치 처리
해결 방법
- Shared Class와 단일 SDK 컨테이너 옵션을 통한 모델·인덱스 메모리 사용량 제어
- BatchElements 기반 입력 배치와 TFX RunInference 활용으로 GPU 활용도 개선
- 대용량 임베딩 집계 대신 Side Input으로 PCollection 전달 후 Faiss 인덱스 생성
주의할 점
- Worker 내 다수 Process·Thread 생성에 따른 모델 복제와 GPU OOM 위험
- Shared Object의 스레드 간 공유와 Process 간 미공유 특성
- Worker 간 gRPC·protobuf 직렬화 과정의 단일 Element 2GB 제한

