Multimodal Data Processing Engine
텍스트·이미지·오디오·비디오·임베딩을 CPU+GPU 혼합 파이프라인으로 대규모 배치 처리하는 엔진
핵심 개념
Multimodal Data Processing Engine은 멀티모달 데이터(MB~GB 단위의 큰 행)를 읽어 다단계 CPU+GPU 파이프라인(디코딩 → 임베딩 → 추론 → 테이블 쓰기)을 돌리는 배치 처리 엔진이다. 기존 분석 엔진(Spark at Scale)이 작은 행의 집계에 최적화된 반면, 이 영역은 GPU를 굶기지 않으면서(GPU 활용률이 종종 50% 미만) 대용량 페이로드를 효율적으로 흘리는 것이 핵심이다.
대표 엔진: Ray Data, Daft. 둘 다 KubeRay 위에서 동작하며(Daft 분산 러너는 Ray executor) 배치 오프라인 추론에 최적화돼 있다.
두 가지 아키텍처 명제
Ray Data — disaggregated execution
- GPU 활용률이 낮은 이유는 상류 CPU 전처리가 가속기를 못 따라가기 때문 → 독립 CPU/GPU 플릿을 in-memory object store로 연결, 디스크 materialization 없이 backpressure 스트리밍
- streaming batch 모델: Spark의 파티션 단위 내결함성 + Flink의 operator-to-operator 스트리밍 파이프라이닝을 융합
- 명시적 primitive(
ActorPoolStrategy,num_gpus=0.5,asyncio.Semaphore) — 용량·동시성을 사용자가 작성(프레임워크가 추론하지 않음)
Daft — expression tree(AST) + native multimodal types
- 멀티모달 행은 처음부터 크고 파이프라인 진행하며 더 커진다는 전제 → Swordfish 스트리밍 러너(push-based morsel, I/O와 compute 스레드 풀 분리)
- 파이프라인 전체를 최적화 가능한 expression tree로 파싱 → async I/O와 sync compute 분리, filter pushdown, 자동 dtype/메모리 레이아웃 재작성
read_video_frames,audio_file().resample(),embed_image,embed_text,join_asof등 네이티브 멀티모달 연산자. Image/Tensor/Audio가 Arrow 백업 실타입
트레이드오프 (실전 비교)
| 축 | Ray Data | Daft |
|---|---|---|
| 안정성 | 높음(대규모 비동기 완주) | 0.x — 대규모 비동기에서 미완주 사례 |
| 동시성 제어 | enforced(Semaphore) | advisory 힌트(검증 필요) |
| 멀티모달 ergonomics | hand-rolled(PyAV 등 수십 줄) | one-liner native primitive |
| 플랫폼 | Ray Core(Train/Serve/Tune) | 멀티모달 타입 1급 |
| 거버넌스 | Apache 2.0, PyTorch Foundation | 0.x, ByteDance Volcano 파트너십 |
교훈: 안정성은 배치 인프라의 최고 가중치이자 이진적(한 엔진이 완주하고 다른 엔진이 못하면 ergonomic 차이는 무의미). native primitive는 capability가 아닌 ergonomic 축. concurrency knob은 스케일 전 100행 스모크로 advisory/enforced를 검증.
주변 스택
- Lance + DuckDB(lance extension): 멀티모달 저장 spine — blob 컬럼을 lazy하게 스트리밍, 미선택 시 0바이트
- Apache Gravitino: Iceberg + Lance를 한 metalake로 묶는 통합 카탈로그
- 체크포인트는 user code가 아닌 Read op에서(format-agnostic resume)
연관 개념
- Multimodal Search — 멀티모달 임베딩의 검색 측면
- Spark at Scale — 분석 집계 중심의 전통 배치 엔진
- Feature Store — 멀티모달 임베딩을 피처로 서빙
- Catalog-Managed Tables — Iceberg/Lance 카탈로그 통합
- DuckDB — Lance 읽기 클라이언트