
리퀘스트 단위 중복 제거로 인프라 비용은 잡고 모델 규모는 100배 키운 엔지니어링 전략
이 아티클은 핀터레스트가 거대해진 추천 모델을 효율적으로 운영하기 위해 도입한 '리퀘스트 단위 중복 제거' 기술을 다룹니다. 저장, 학습, 서빙 전 과정에서 발생하는 데이터 중복을 제거하여 얻은 압도적인 성능 향상 수치와 그 과정에서 마주한 기술적 난제들의 해결법을 상세히 공유합니다.
대규모 사용자 시퀀스 데이터를 다루는 추천 시스템 엔지니어나, 모델 규모 확장에 따른 인프라 비용 최적화가 고민인 시스템 아키텍트에게 강력히 추천합니다.
추천 모델의 규모가 커지면서 리퀘스트당 수천 개의 아이템에 대해 동일한 사용자 시퀀스 데이터가 중복 처리 및 저장되어 인프라 비용과 부하가 기하급수적으로 증가하는 문제가 발생했습니다.
데이터 저장 시 리퀘스트 ID 기반 정렬과 Apache Iceberg를 활용하고, 학습 시 SyncBatchNorm과 사용자 레벨 마스킹을 도입했으며, 서빙 효율을 위해 DCAT(Deduplicated Cross-Attention Transformer) 아키텍처를 적용했습니다.
저장소 10~50배 압축, 학습 속도 최대 4배 향상, 서빙 처리량 7배 증가를 달성하여 모델 규모를 100배 키우면서도 인프라 비용을 효과적으로 관리했습니다.
Trade-off
리퀘스트 단위 정렬 시 독립 동일 분포(IID) 가정이 깨져 배치 통계가 불안정해지고 검색 모델에서 가짜 음성(False Negative) 비율이 상승하는 부작용이 있어 추가적인 보정 기술이 필요했습니다.
한 리퀘스트 내의 여러 아이템이 공유하는 사용자 정보나 컨텍스트 데이터를 매번 반복하지 않고 한 번만 처리하도록 만드는 최적화 기법입니다.
분산 학습 시 모든 디바이스의 로컬 배치 통계치를 합산하여 전체 데이터에 대한 평균과 분산을 계산하는 배치 정규화 방식입니다.
사용자 히스토리 처리(Context)와 개별 아이템과의 연산(Crossing)을 분리하여 컨텍스트 연산 결과를 재사용하는 트랜스포머 구조입니다.









