Pinterest, 요청 중복 제거로 추천 시스템 성능과 비용 두 마리 토끼를 잡다!
Pinterest는 추천 모델의 성능 향상을 위해 요청 수준 중복 제거(Request-Level Deduplication) 기술을 도입하여 비용 절감(Cost Reduction)을 달성함
Apache Iceberg를 활용한 데이터 저장소 압축, SyncBatchNorm을 통한 학습 속도 향상, DCAT(Deduplicated Cross-Attention Transformer) 아키텍처를 통한 서빙(Serving) 성능 개선
10~50배 스토리지 압축(Storage Compression), 4배 검색 모델 학습 속도 향상(Retrieval Model Training Speedup), 7배 랭킹 모델 서빙 처리량 증가(Ranking Model Serving Throughput Increase) 등의 효과를 얻음
IID(Independent and Identically Distributed) 가정 위반으로 인한 학습 성능 저하 문제 발생, SyncBatchNorm 및 User-Level Masking 적용으로 해결
요청 수준 중복 제거는 스토리지, 학습, 서빙 전반에 걸쳐 효율성을 극대화(Efficiency Maximization)하며, 모델 확장성을 확보함
요청 수준 중복 제거(Request-Level Deduplication)의 핵심 원리
본문에서 설명하는 요청 수준 중복 제거(Request-Level Deduplication)는 사용자 요청 데이터를 저장, 처리, 변환하는 과정에서 발생하는 중복을 제거하는 기술이다.
사용자 시퀀스(User Sequence): 사용자의 모든 활동을 나타내는 16K 토큰(Token) 길이의 시퀀스 데이터는 각 후보 아이템(Candidate Item)마다 중복 저장
데이터 중복(Data Redundancy): 사용자 시퀀스 중복은 스토리지 사용량 증가, 계산 비용 증가, 학습 속도 저하의 주요 원인
효율성 극대화(Efficiency Maximization): 중복 제거를 통해 스토리지 압축, 학습 속도 향상, 서빙 처리량 증가를 동시에 달성
결과적으로 추천 시스템의 확장성(Scalability)을 확보하고, 인프라 비용을 절감하는 데 기여한다.
스토리지 최적화를 위한 Apache Iceberg 활용
Pinterest는 Apache Iceberg를 활용하여 사용자 데이터를 효율적으로 저장하고 관리한다. Iceberg는 데이터 레이크(Data Lake)를 위한 오픈 소스 테이블 형식으로, 데이터 중복을 줄이고 쿼리 성능을 향상시키는 데 기여한다.
요청 ID 기반 정렬(Request ID Based Sorting): 사용자 ID와 요청 ID를 기준으로 데이터를 정렬하여, 동일 요청 관련 데이터를 물리적으로 함께 저장
컬럼 기반 압축(Columnar Compression): Iceberg의 컬럼 기반 압축 알고리즘은 중복 데이터를 자동으로 제거하여 10~50배 스토리지 압축(Storage Compression) 달성
데이터셋 툴링 개선(Dataset Tooling Improvement): 버킷 조인(Bucket Joins), 효율적인 백필(Efficient Backfills), 증분 피처 엔지니어링(Incremental Feature Engineering) 등 데이터 처리 효율성 향상
결과적으로 스토리지 비용 절감과 데이터 처리 속도 향상을 동시에 얻을 수 있다.
IID 가정 위반 문제와 SyncBatchNorm 해결
요청 수준 중복 제거는 IID(Independent and Identically Distributed) 가정을 위반하여 학습 성능 저하를 유발할 수 있다. 이는 배치 정규화(Batch Normalization) 과정에서 발생하는 문제로, Pinterest는 이를 해결하기 위해 SyncBatchNorm을 도입했다.
IID 가정(IID Assumption) 위반: 요청 정렬 데이터는 배치 내 사용자 분포의 편향을 유발하여, 배치 정규화 통계의 불안정성을 야기
SyncBatchNorm: 모든 장치(Device)에서 통계를 집계하여 정규화 수행, 배치 크기(Batch Size)를 늘리는 효과
성능 회복(Performance Recovery): SyncBatchNorm 적용으로 1~2%의 오프라인 평가 지표(Offline Evaluation Metrics) 회복
결과적으로 SyncBatchNorm은 분산 학습 환경에서 학습 안정성(Training Stability)을 확보하고, 모델 품질 저하를 방지한다.
User-Level Masking을 통한 학습 품질 유지
요청 수준 중복 제거는 배치 내에서 사용자의 여러 상호 작용을 함께 묶어, 긍정적인 항목(Positive Item)과 부정적인 항목(Negative Item) 간의 관계를 왜곡할 수 있다. Pinterest는 이를 해결하기 위해 User-Level Masking을 적용했다.
False Negative 문제: 동일 사용자의 여러 상호 작용으로 인해, 배치 내 부정적 항목이 실제로는 긍정적 항목인 경우 발생
InfoNCE Loss 수정: 손실 함수(Loss Function)에서 동일 사용자의 부정적 항목을 제외하여, 모델이 사용자가 실제로 참여한 항목을 밀어내는 현상 방지
모델 품질 유지(Model Quality Preservation): User-Level Masking 적용으로 모델 품질 저하 없이 요청 수준 중복 제거를 활용 가능
결과적으로 User-Level Masking은 학습 데이터의 편향(Data Bias)을 줄이고, 모델의 정확도를 유지하는 데 기여한다.
DCAT 아키텍처를 활용한 서빙(Serving) 성능 향상
Pinterest는 랭킹 모델(Ranking Model)의 서빙 성능을 향상시키기 위해 DCAT(Deduplicated Cross-Attention Transformer) 아키텍처를 개발했다. DCAT는 트랜스포머(Transformer) 구조를 최적화하여, 사용자 시퀀스 처리의 중복을 제거하고 처리량을 극대화한다.
Context 분리: 사용자 히스토리(History)를 처리하는 Context 컴포넌트를 분리하여, 요청당 한 번만 계산
Cross-Attention 재사용: 각 후보 아이템(Candidate Item)은 캐시된 Context를 활용하여 Cross-Attention 수행
7배 처리량 증가(7x Throughput Increase): DCAT와 커스텀 Triton 커널(Custom Triton Kernels)을 통해 랭킹 모델의 서빙 처리량 7배 증가
결과적으로 DCAT는 모델 규모 확장에 따른 서빙 비용 증가(Serving Cost Increase)를 억제하고, 시스템의 확장성(Scalability)을 확보한다.
요청 수준 중복 제거의 3가지 핵심 교훈
Pinterest의 요청 수준 중복 제거(Request-Level Deduplication) 기술은 스토리지, 학습, 서빙 전반에 걸쳐 다양한 이점을 제공하며, 다음과 같은 세 가지 핵심 교훈을 제시한다.
Cross-Cutting 기술: 스토리지, 학습, 서빙의 중복을 동시에 해결하여, 시스템 전반의 효율성을 향상
간단한 해결책의 효과: SyncBatchNorm과 User-Level Masking과 같은 간단한 변경으로, 큰 성능 향상 달성
Stack 전반의 시너지 효과: 스토리지 압축은 데이터 파이프라인 속도를 높이고, 학습 속도 향상은 실험 속도를 가속화하며, 서빙 처리량 증가는 인프라 비용을 절감
결과적으로 요청 수준 중복 제거는 추천 시스템의 전반적인 효율성(Overall Efficiency)을 개선하고, 지속적인 모델 확장을 가능하게 한다.