Pinterest

12 개의 포스트

medium.com/pinterest-engineering

태그로 필터

pinterest

격차 해소: Pinterest L1 (새 탭에서 열림)

Pinterest는 L1 전환(CVR) 모델의 오프라인 평가 지표가 대폭 개선되었음에도 불구하고, 실제 온라인 A/B 테스트에서는 CPA 성과가 정체되거나 악화되는 ‘온라인-오프라인(O/O) 불일치’ 현상을 겪었습니다. 심층적인 진단 결과, 이 문제의 핵심은 학습 시 사용된 고차원 피처들이 실시간 서빙 시스템의 임베딩 생성 과정에서 누락되거나 쿼리-핀 타워 간의 모델 버전이 어긋난 데 있었습니다. 이를 해결하기 위해 L1/L2 시스템 간 피처 온보딩을 자동화하고 정합성을 맞춤으로써 오프라인의 모델 개선을 실제 비즈니스 지표의 승리로 연결할 수 있었습니다. ### 오프라인 지표와 온라인 성과의 괴리 * **지표 상의 모순:** 새로운 L1 CVR 모델은 오프라인 평가에서 기존 모델 대비 LogMAE를 20~45% 감소시켰으며, 모든 pCVR 버킷에서 우수한 보정(Calibration) 성능을 보였습니다. * **온라인 실험 결과:** 하지만 실제 운영 환경(Budget-Split 실험)에서는 주요 oCPM 세그먼트의 CPA가 오히려 나빠지거나 중립적인 결과를 보였고, 오프라인 예측과는 다른 트래픽 믹스 변화가 관찰되었습니다. * **가설 수립:** 문제 해결을 위해 '모델 및 평가(데이터 오류)', '서빙 및 피처(시스템 정합성)', '퍼널 및 유틸리티(설계 미스)'의 세 가지 계층으로 가설을 나누어 분석을 시작했습니다. ### 원인 분석에서 제외된 요인들 * **오프라인 평가 오류:** 다양한 로그 소스(경매 낙찰 건, 전체 요청 건 등)를 재검증하고 아웃라이어를 제거한 후에도 오프라인 성능 우위는 견고하게 유지되었으므로 평가 방식 자체의 문제는 아니었습니다. * **노출 편향(Exposure Bias):** 실험군 트래픽 비중을 20%에서 70%까지 높였음에도 온라인 보정 문제가 지속되는 것을 확인하여, 대조군 모델의 지배력으로 인한 편향 문제도 주된 원인이 아님을 밝혀냈습니다. * **서빙 지연 및 타임아웃:** 처리 시간(p50/p90/p99) 및 성공률을 비교한 결과 실험군과 대조군 사이에 유의미한 차이가 없어 시스템 성능 이슈도 배제되었습니다. ### 피처 수준의 온라인-오프라인 불일치 * **누락된 피처 파이프라인:** L1 단계는 지연 시간 단축을 위해 별도의 ANN(근사 최근접 이웃) 인덱스를 사용하는데, 학습 로그에는 존재하던 고영향력 피처들이 정작 온라인 임베딩 생성기에는 온보딩되지 않은 상태였습니다. * **구체적 사례:** 타겟팅 사양(관심사, 검색어 모드), 외부 사이트 전환 방문 횟수(1/7/30/90일), MediaSage 이미지 임베딩 등이 온라인 서빙 시 누락되어 모델이 빈약한 정보만으로 예측을 수행하고 있었습니다. * **해결 방안:** UFR(Unified Feature Representation) 구성을 업데이트하여 누락된 피처를 L1 임베딩 경로에 추가했으며, 향후 L2용으로 온보딩된 피처가 L1 임베딩에도 자동 적용되도록 도구의 기본 동작을 수정했습니다. ### 임베딩 버전 및 아키텍처 불일치 * **Two-tower 버전 스큐:** 오프라인에서는 단일 체크포인트로 평가하지만, 온라인 시스템에서는 쿼리 타워(User)와 핀 타워(Ad)가 사용하는 모델 버전이 일시적으로 일치하지 않는 현상이 발생할 수 있음을 확인했습니다. * **모델 정합성:** 두 타워가 서로 다른 시점의 모델 가중치를 사용할 경우 생성된 임베딩 벡터 간의 거리 계산이 무의미해지며, 이는 곧 L1 단계의 회수(Recall) 성능 저하로 이어집니다. * **시스템적 교훈:** 단순한 모델 알고리즘의 개선보다 학습 환경과 서빙 아키텍처 간의 '기술적 정합성'을 유지하는 파이프라인 관리가 실제 성능에 더 결정적인 영향을 미친다는 것을 입증했습니다. L1 랭킹 모델의 성능 향상이 온라인 지표 개선으로 이어지지 않는다면, 모델 자체의 로직보다는 학습 데이터 피처가 실시간 서빙 아키텍처(ANN, 임베딩 빌더 등)까지 온전히 전달되고 있는지 파이프라인의 종단간 정합성을 가장 먼저 점검해야 합니다.

pinterest

Piqama: 핀터레 (새 탭에서 열림)

핀터레스트는 빅데이터 플랫폼과 온라인 서비스 전반에서 발생하는 다양한 자원 임계치를 효율적으로 관리하기 위해 통합 쿼타 관리 에코시스템인 'Piqama'를 구축했습니다. Piqama는 CPU, 메모리 같은 물리적 자원부터 QPS, 네트워크 대역폭 등 서비스 지표에 이르기까지 광범위한 리소스의 생명주기를 관리하며, 실시간 쿼타 전파와 사용량 예측을 통한 최적화 기능을 제공합니다. 이를 통해 조직 내 리소스 활용도를 극대화하는 동시에 시스템의 안정성과 가용성을 동시에 확보하고 있습니다. ### 통합 쿼타 관리 아키텍처 및 포털 * Piqama는 다양한 플랫폼과 시나리오를 수용할 수 있는 범용 플랫폼으로 설계되어, 서비스별로 고유한 강제 로직을 사용하거나 Piqama의 기본 메커니즘을 선택하여 적용할 수 있습니다. * REST 및 Thrift API를 지원하는 중앙 집중식 관리 포털을 통해 사용자가 쿼타 설정을 시각화하고 검색할 수 있어 운영상의 실수를 최소화합니다. * 전체 시스템 아키텍처는 관리 포털, 실시간 업데이트 디스패처, 그리고 오프라인 거버넌스 및 최적화 도구들로 구성되어 유기적으로 동작합니다. ### 쿼타 생명주기 관리 * **스키마 및 검증:** 워크로드 간의 계층적 관계를 포함한 쿼타 스키마를 정의하며, 플러그형 프레임워크를 통해 할당량이 전체 클러스터 용량을 초과하지 않도록 보수적인 검증을 수행합니다. * **업데이트 승인 및 배포:** 소유권 기반의 권한 모델을 통해 안전하게 쿼타를 수정하며, 핀터레스트의 설정 배포 시스템(PinConf) 등을 활용해 변경된 쿼타 값을 지연 시간 없이 각 클라이언트 시스템에 방송합니다. * **강제 적용 전략:** 리소스 사용량이 할당량을 초과할 경우, 데이터 경로에서 즉각적으로 요청을 차단하거나 서비스의 중요도에 따라 차등적인 제재를 가하는 기능을 제공합니다. ### 거버넌스 및 자동 최적화(Auto-rightsizing) * **데이터 피드백 루프:** Piqama 클라이언트는 실제 사용량 및 강제 적용 통계를 투명하게 수집하며, 이 데이터는 분석을 위해 Amazon S3의 Apache Iceberg 포맷으로 저장 및 사전 집계됩니다. * **예측 기반 조정:** 수집된 통계를 바탕으로 과거 사용 패턴, 유기적 성장, 트래픽 급증 사례를 분석하여 리소스 부족을 방지하고 활용되지 않는 자원을 회수하는 자동 권장 규모 설정 서비스를 운영합니다. * **비용 관리 연계:** 자원 사용량을 실제 비용으로 환산하는 차지백(Chargeback) 시스템을 통해, 예산 범위를 초과한 프로젝트의 자원 우선순위를 자동으로 낮추는 등의 비용 통제 기능을 수행합니다. ### 실제 적용 사례: 용량 기반 및 속도 제한 쿼타 * **빅데이터 플랫폼(Moka):** Apache Yunikorn 스케줄러와 연동하여 각 프로젝트별로 최소 보장 자원(Guaranteed)과 최대 자원(Maximum)을 동적으로 할당하며, 배치 작업의 병렬 실행 수를 제어합니다. * **온라인 저장 서비스:** 실시간 서비스의 안정성을 위해 QPS 및 대역폭 기반의 속도 제한(Rate-limiting) 쿼타를 적용하여 특정 서비스의 폭주가 전체 시스템에 영향을 주지 않도록 관리합니다. 성공적인 쿼타 관리를 위해서는 단순히 상한선을 설정하는 것에 그치지 않고, 실제 사용량 데이터를 기반으로 한 자동화된 우측 최적화(Right-sizing)와 비즈니스 예산을 연계한 거버넌스 체계를 구축하는 것이 중요합니다. Piqama와 같은 통합 에코시스템은 대규모 인프라 운영 환경에서 자원 낭비를 줄이고 운영 효율을 획기적으로 높이는 핵심 도구가 됩니다.

pinterest

Pinterest의 Apache Spark에서 (새 탭에서 열림)

Pinterest는 대규모 Spark 환경에서 빈번하게 발생하는 OOM(Out-of-Memory) 오류를 해결하기 위해 'Auto Memory Retries' 기능을 도입했습니다. 이 시스템은 태스크 수준에서 리소스 요구량을 동적으로 판단하고, 실패 시 더 큰 메모리 프로필을 가진 실행기(Executor)에서 태스크를 재시도하도록 자동화합니다. 이를 통해 수동 튜닝의 번거로움을 줄이고 자원 효율성을 높여 전체적인 작업 실패율과 운영 비용을 획기적으로 낮추는 성과를 거두었습니다. ### 기존 Spark 리소스 관리의 한계와 문제점 * Pinterest의 Spark 클러스터는 하드웨어 대비 높은 메모리 요구량으로 인해 OOM 오류가 잦았으며, 전체 작업 실패 원인의 약 4.6%가 메모리 부족에서 기인했습니다. * 사용자가 모든 스테이지와 태스크의 메모리 요구량을 정확히 예측하여 수동으로 설정하는 것은 매우 어렵고 시간이 많이 소요되는 작업입니다. * 데이터 스큐(Skew) 현상으로 인해 같은 스테이지 내에서도 특정 태스크만 과도한 메모리를 사용하는 경우가 많아, 모든 태스크를 최대치에 맞춰 설정하면 심각한 자원 낭비가 발생합니다. * 제품 팀의 우선순위 문제로 인해 비용 절감을 위한 수동 최적화가 지속적으로 이루어지기 어려운 구조적 한계가 있었습니다. ### Auto Memory Retries의 단계별 대응 전략 * **CPU 할당량 증설을 통한 메모리 확보 (1단계):** 실행기에 1개 이상의 코어가 있는 경우, OOM 발생 시 첫 번째 재시도에서 태스크당 CPU 할당량(`spark.task.cpus`)을 두 배로 늘립니다. 이를 통해 실행기 내 동시 실행 태스크 수를 줄여 개별 태스크가 사용할 수 있는 공유 메모리 공간을 즉각적으로 확보합니다. * **물리적으로 큰 실행기 투입 (2단계):** CPU 조절만으로 해결되지 않거나 단일 태스크가 이미 실행기 전체 메모리를 사용 중인 경우, 물리적으로 더 큰 메모리를 가진 새로운 실행기를 동적으로 런칭합니다. * **하이브리드 확장 프로필 적용:** 기본 설정의 2배, 3배, 4배 크기의 리소스 프로필을 미리 등록하고 단계별로 순차 적용합니다. Apache Gluten을 사용하는 워크로드의 경우 Off-heap 메모리도 함께 증설하여 가속화된 연산을 지원합니다. ### 시스템 구현 및 Spark 엔진 확장 * **태스크 수준의 리소스 프로필:** 기존 Spark의 고정된 리소스 할당 방식에서 벗어나, `Task` 객체에 개별 리소스 프로필 ID(`taskRpId`)를 저장할 수 있도록 확장하여 동일한 TaskSet 내에서도 태스크마다 사양을 다르게 가질 수 있게 구현했습니다. * **스케줄링 로직 최적화:** `TaskSetManager`는 OOM 감지 시 즉시 상위 프로필을 할당하며, `TaskSchedulerImpl`은 증설된 CPU 속성을 가진 태스크를 기존 실행기에서 우선 실행할 수 있게 하여 리소스 재사용 속도를 높였습니다. * **동적 리소스 할당:** `ExecutorAllocationManager`가 상위 프로필을 필요로 하는 대기 태스크를 실시간으로 추적하고, 물리적으로 큰 실행기가 필요한 시점에 맞춰 Kubernetes 등에 자원을 요청합니다. * **사용자 경험 개선:** 사용자가 어떤 태스크가 더 많은 자원을 사용했는지 쉽게 파악할 수 있도록 Spark UI의 태스크 목록에 리소스 프로필 ID를 표시하는 기능을 추가했습니다. 효율적인 Spark 운영을 위해서는 모든 작업을 최대 메모리 요구량에 맞추기보다, 상위 90%(P90) 수준의 일반적인 설정으로 실행하고 예외적인 태스크만 'Auto Memory Retries'로 구제하는 탄력적 전략이 권장됩니다. 이는 데이터 스큐가 심한 대규모 파이프라인에서 운영 안정성을 확보함과 동시에 인프라 비용을 최적화할 수 있는 강력한 해법이 될 것입니다.

pinterest

경량 광고 참여 예측을 위한 (새 탭에서 열림)

Pinterest는 광고 추천 시스템의 중간 단계인 경량 랭킹(Lightweight ranking)의 효율성을 극대화하기 위해, 기존 CPU 기반의 2-타워 모델을 GPU 기반의 MMOE-DCN 아키텍처로 전환했습니다. 이를 통해 모델의 복잡도를 높이면서도 지연 시간을 안정적으로 유지했으며, 오프라인 예측 오차 감소와 더불어 온라인 클릭률(CTR) 증가 및 클릭당 비용(CPC) 감소라는 실질적인 성과를 거두었습니다. **MMOE-DCN 아키텍처로의 전환** * 기존의 MTMD(Multi-Task Multi-Domain) 모델에서 MMOE(Multi-gate Mixture-of-Experts)와 DCN(Deep & Cross Networks)이 결합된 구조로 아키텍처를 변경했습니다. * MLP 게이팅 메커니즘을 적용한 MMOE 구조를 통해 별도의 도메인 전용 모듈 없이도 다중 도메인 및 다중 작업(Multi-task) 학습 문제를 효과적으로 해결했습니다. * 모델 내의 각 전문가(Expert) 유닛에 풀랭크(Full-rank) 및 로우랭크(Low-rank) DCN 레이어를 도입하여 특성 간의 교차 작용을 더 정교하게 학습하도록 설계했습니다. **GPU 학습 및 서빙 효율성 최적화** * 데이터 로더 최적화: GPU 프리패치(Prefetch) 기능을 활성화하여 GPU 연산과 데이터 준비를 병렬화하고, 대용량 CPU 메모리를 활용해 워커 스레드 수를 늘려 병목 현상을 제거했습니다. * 연산 효율성 증대: CPU에서의 메모리 할당을 최소화하고 GPU에서 직접 연산을 수행하며, 개별 커널들을 하나로 합친 퓨즈드 커널(Fused kernels)을 사용해 오버헤드를 줄였습니다. * 훈련 설정 개선: BF16(Brain Floating Point 16) 정밀도를 도입해 학습 속도를 높였으며, 배치 크기를 확대하여 GPU 메모리 활용도를 극대화했습니다. **데이터 분리 및 성과 분석** * 쇼핑 광고와 일반 광고 시나리오를 분리하고 각 데이터에 맞게 개별 학습을 진행함으로써 오프라인 손실(Loss)을 추가로 5~10% 더 절감했으며, 모델 반복 학습 속도를 2배 개선했습니다. * 오프라인 평가에서 이전 모델 대비 CTR 예측 손실이 총 10~20%가량 감소하는 결과를 확인했습니다. * 실제 온라인 서비스 적용 결과, 모든 광고 영역에서 사용자 클릭률(CTR)은 상승하고 광고주가 부담하는 클릭당 비용(CPC)은 낮아지는 지표 개선을 달성했습니다. GPU 인프라를 활용한 모델 복잡도 최적화는 대규모 추천 시스템에서 성능과 비용 효율성을 동시에 잡을 수 있는 핵심 전략입니다. 특히 단순한 하드웨어 교체를 넘어 하드웨어 가속에 최적화된 커널 사용과 데이터 파이프라인 튜닝을 병행할 때 복잡한 딥러닝 모델의 실무 적용 효과가 극대화됩니다.

pinterest

Pinterest의 차세대 DB 인 (새 탭에서 열림)

Pinterest는 기존의 파편화된 배치 기반 DB 적재 시스템을 개선하기 위해 Iceberg와 CDC(Change Data Capture) 기술을 결합한 통합 프레임워크를 구축했습니다. 이 시스템은 데이터 지연 시간을 24시간 이상에서 수 분 단위로 단축하고, 변경된 데이터만 처리하는 방식으로 인프라 비용을 획기적으로 절감했습니다. 이를 통해 분석, 머신러닝, 규정 준수 등 현대적인 데이터 요구사항에 기민하게 대응할 수 있는 고성능 데이터 생태계를 마련했습니다. ### 통합 CDC 프레임워크의 계층 구조 * **CDC 레이어**: Debezium 및 TiCDC를 활용해 MySQL, TiDB, KVStore의 변경 사항을 1초 미만의 지연 시간으로 포착하여 Kafka에 기록합니다. * **스트리밍 레이어**: Flink 작업이 Kafka의 이벤트를 실시간으로 처리하여 S3에 위치한 'CDC Iceberg 테이블'에 추가 전용(Append-only) 방식으로 저장합니다. * **배치 레이어**: Spark 작업이 주기적으로(15~60분) CDC 테이블의 최신 변경 사항을 읽어 `Merge Into` 구문을 통해 최종 'Base Iceberg 테이블'에 업서트(Upsert)를 수행합니다. * **부트스트랩 및 유지보수**: 초기 데이터 로드를 위한 전용 파이프라인과 소형 파일 압축(Compaction) 및 스냅샷 만료 관리를 위한 유지보수 작업을 포함합니다. ### CDC 테이블과 베이스 테이블의 이원화 관리 * **CDC 테이블**: 모든 변경 이력을 담은 시계열 원장으로, 5분 미만의 지연 시간을 유지하며 원천 데이터의 변경 로그를 보존합니다. * **베이스 테이블**: 온라인 DB의 현재 상태를 그대로 반영하는 스냅샷 테이블입니다. CDC 테이블로부터 최신 레코드를 추출하여 정합성을 맞춥니다. * **동기화 로직**: `ROW_NUMBER()` 함수를 활용해 기본 키(PK)별로 가장 최신 업데이트(최근 타임스탬프 및 GTID 기준)를 식별한 후, 삭제 유형은 제거하고 나머지는 업데이트 또는 삽입합니다. ### 성능 및 비용 최적화 전략 * **Merge-on-Read (MOR) 방식 채택**: Copy-on-Write(COW) 방식은 업데이트 시 대규모 파일을 다시 작성해야 하므로 스토리지와 계산 비용이 높습니다. Pinterest는 비용 효율성을 극대화하기 위해 MOR 방식을 표준 전략으로 선택했습니다. * **기본 키 해시 버킷팅(Bucketing)**: 베이스 테이블을 PK의 해시값(예: `bucket(100, id)`)으로 파티셔닝하여 Spark가 업서트 작업을 병렬로 효율적으로 처리할 수 있도록 설계했습니다. * **증분 처리 효율성**: 매일 전체 테이블을 덤프하던 방식에서 변경된 데이터(통상 5% 미만)만 처리하는 방식으로 전환하여 연산 리소스 낭비를 차단했습니다. 방대한 양의 데이터베이스를 데이터 레이크로 통합할 때는 Iceberg의 `Merge Into` 기능을 활용한 증분 업데이트가 필수적입니다. 특히 읽기 성능과 쓰기 비용 사이의 균형을 위해 MOR 전략을 사용하고, 쓰기 병목을 해소하기 위해 기본 키 기반의 버킷팅을 적용하는 것이 실무적으로 매우 효과적인 접근임을 보여줍니다.

pinterest

투 타워를 넘어서: 차 (새 탭에서 열림)

전통적인 추천 시스템의 표준인 'Two-Tower' 모델은 효율적이지만, 사용자-아이템 간의 복잡한 상호작용 특징(Interaction features)을 반영하지 못하는 구조적 한계가 있습니다. 이를 해결하기 위해 핀터레스트는 범용 신경망 기반의 복잡한 랭킹 모델을 도입하기로 결정하고, 이를 지원하기 위한 GPU 기반의 서빙 스택 재설계를 단행했습니다. 데이터 전송 병목 현상을 해결하고 비즈니스 로직을 모델 내부에 통합함으로써, 초기 4,000ms에 달하던 지연 시간을 실시간 서비스 가능한 수준인 20ms까지 단축하는 데 성공했습니다. ### Two-Tower 모델의 한계와 새로운 도전 * **표현력의 제약:** Two-Tower 구조는 사용자(User)와 아이템(Item)을 각각 독립적인 벡터로 인코딩한 뒤 마지막에 내적(Dot product)만 수행하므로, 네트워크 깊은 곳에서 두 피처가 결합되는 '교차 피처(Cross-features)'나 '타겟 어텐션(Target attention)'을 활용하기 어렵습니다. * **복잡한 모델 도입의 필요성:** 보다 정교한 추천을 위해 피처 간의 직접적인 상호작용을 모델링할 수 있는 일반적인 딥러닝 아키텍처 도입이 필요해졌습니다. * **서빙 인프라의 한계:** 기존 인프라는 단순한 연산(내적 또는 ANN 검색)에 특화되어 있어, 무거운 GPU 추론 단계를 지연 시간 손실 없이 통합하는 것이 핵심 과제였습니다. ### 인벤토리 세분화를 통한 피처 패칭(Feature Fetching) 최적화 * **데이터 전송 병목:** 수만 개의 후보군에 대해 네트워크를 통해 피처를 가져오는 I/O 작업이 모델 추론보다 더 긴 시간을 소모하는 문제가 발생했습니다. * **고가치 인벤토리(Segment 1):** 매출 기여도가 높은 약 100만 개의 문서는 피처를 PyTorch 모델 파일 내의 'Registered Buffer' 형태로 직접 삽입했습니다. 이를 통해 모델 가중치처럼 GPU의 고대역폭 메모리(HBM)에 피처가 상주하게 되어 네트워크 오버헤드를 완전히 제거했습니다. * **롱테일 인벤토리(Segment 2):** 나머지 10억 개 이상의 문서는 고성능 Key-Value 저장소와 인-호스트 캐시를 조합하여 피처를 가져오도록 이원화했습니다. ### 비즈니스 로직의 모델 내부 통합 * **데이터 전송량 최소화:** 기존에는 GPU에서 계산된 수만 개의 점수를 모두 CPU로 보낸 뒤 필터링했으나, 이는 Device-to-Host(D2H) 전송 병목을 야기했습니다. * **로직 내재화:** 유틸리티 계산(pCTR, pCVR, 입찰가 조합 등), 다양성 규칙, Top-K 정렬 등의 비즈니스 로직을 PyTorch 텐서 연산으로 구현하여 모델 내부에 포함시켰습니다. * **병렬 처리 이점:** 복잡한 필터링과 정렬을 GPU의 대규모 병렬 연산으로 처리함으로써 CPU 기반 처리보다 속도를 높였고, 최종 결과값(약 1,000개)만 출력하여 전송 효율을 극대화했습니다. ### GPU 추론 가속화 및 시스템 최적화 * **멀티 스트림 CUDA:** 단일 스트림 방식에서 벗어나 여러 CUDA 스트림을 사용하여 데이터 전송(H2D, D2H)과 연산(Compute)이 서로 겹쳐서 수행(Overlap)되도록 설계했습니다. * **커널 퓨전(Kernel Fusion):** Triton 커널을 사용하여 선형 레이어와 활성화 함수 같은 반복적인 레이어 패턴을 하나로 합침으로써 메모리 대역폭 압박을 완화했습니다. * **수치 형식 최적화:** FP32 대신 BF16(Brain Floating Point 16) 형식을 채택하여 메모리 사용량을 줄이고 연산 속도를 높였습니다. * **워커 정렬:** 호스트 CPU 코어 수에 맞춰 워커 스레드 수를 조정하고 고정(Pinning)하여 컨텍스트 스위칭과 락 경합을 최소화했습니다. 이러한 재설계는 고성능 추천 시스템을 구축할 때 모델 아키텍처뿐만 아니라, 데이터 흐름과 하드웨어 가속기(GPU)의 특성을 고려한 인프라 최적화가 필수적임을 보여줍니다. 특히 대규모 트래픽 환경에서 GPU를 효율적으로 활용하려면 비즈니스 로직을 포함한 전체 서빙 파이프라인을 모델과 밀접하게 통합하는 전략이 유효합니다.

pinterest

행동 시퀀스 모델링 (새 탭에서 열림)

핀터레스트는 사용자의 오프사이트(offsite) 행동 이력을 분석하여 미래의 전환 가능성을 예측하는 행동 시퀀스 모델링(Behavioral Sequence Modeling)을 통해 광고 후보군 생성 시스템을 혁신했습니다. 이 시스템은 트랜스포머(Transformer) 기반의 투타워(Two-tower) 구조를 활용해 사용자별로 개인화된 광고주 및 상품을 추천하며, 이를 통해 광고의 관련성을 높이고 광고주 측면에서는 전환 비용(CPA)을 낮추는 성과를 거두었습니다. 결과적으로 수억 개의 상품 카탈로그 속에서 사용자의 진화하는 쇼핑 의도를 실시간으로 포착하여 정교한 광고 서빙이 가능해졌습니다. **광고주 상호작용 예측 모델 (Phase 1)** - 사용자가 과거에 조회, 구매, 장바구니에 담은 상품 시퀀스를 분석하여 다음에 상호작용할 가능성이 높은 광고주를 예측합니다. - 사용자 타워는 양방향 트랜스포머(Bidirectional Transformer)를 사용하여 이벤트 시퀀스를 인코딩하고, 광고주 타워는 MLP 레이어를 통해 광고주를 표현하는 투타워 구조를 채택했습니다. - 학습 시에는 체크아웃, 장바구니 담기, 가입 등을 양성(Positive) 샘플로 정의하고, 샘플링된 소프트맥스 손실(Sampled Softmax Loss)과 인기 항목에 대한 과도한 페널티를 방지하기 위한 Log-Q 편향 수정을 적용했습니다. - 오프라인 평가에서 200만 개의 광고주 임베딩을 대상으로 Recall@K를 측정하여 성능을 검증했으며, 온라인 실험 결과 전환수 증가와 CPA 감소라는 유의미한 비즈니스 지표 개선을 확인했습니다. **상품 단위(Item-level) 예측으로의 확장 (Phase 2)** - 광고주 단위를 넘어 특정 상품(Pin)을 직접 예측함으로써 더욱 깊이 있는 개인화와 효율적인 광고 전달 시스템을 구축했습니다. - 10억 개 이상의 방대한 상품 데이터를 처리하기 위해 핀터레스트 내부의 핀(Pin) 임베딩과 카탈로그 메타데이터를 통합하여 더욱 풍부한 상품 표현력을 확보했습니다. - 대규모 아이템 코퍼스를 다루기 위해 인배치 부정 샘플(In-batch negatives)과 2,000만 개의 무작위 샘플링된 핀을 혼합하여 대조 학습(Contrastive Learning)의 효과를 극대화했습니다. - 일 단위 추론 작업을 통해 최근 활동이 있는 사용자의 임베딩을 업데이트하고, 이를 온라인 피처 스토어에 게시하여 실시간 서빙 시스템에서 활용합니다. **서빙 플로우 및 성능 평가** - 오프라인 배치 워크플로우에서 예측된 상위 100개의 광고주/상품 리스트를 온라인 피처 스토어에 저장하고, 광고 요청 시 L1 랭커와 L2 랭커로 전달하여 최종 광고를 선정합니다. - 모델 성능은 단순 MLP 기반의 풀링(Max/Mean Pooling) 모델을 베이스라인으로 설정하고, 이보다 우수한 Recall@K 성능을 보이는 트랜스포머 모델을 최종 선택했습니다. - 아이템 단위 예측은 하위 단계의 랭킹 모델이 처리해야 할 후보군 수를 최적화함으로써 시스템의 확장성을 높이고 사용자 만족도를 증진시키는 역할을 합니다. 단순한 인구통계학적 타겟팅에서 벗어나 사용자의 실시간 행동 시퀀스를 반영하는 임베딩 기반 검색(Embedding-based Retrieval) 시스템을 구축하는 것이 대규모 커머스 플랫폼에서 광고 효율을 극대화하는 핵심 전략임을 보여줍니다. 특히 아이템 수가 기하급수적으로 늘어날수록 광고주 단위가 아닌 개별 상품 단위의 시퀀스 모델링이 필수적입니다.

pinterest

PinLanding: 멀티모달 (새 탭에서 열림)

Pinterest의 'PinLanding'은 수십억 개의 제품 데이터를 멀티모달 AI를 통해 정교한 쇼핑 컬렉션으로 자동 변환하는 프로덕션 파이프라인입니다. 기존의 수동 큐레이션이나 단순 검색 기록 기반 방식에서 벗어나, 제품의 이미지와 텍스트를 직접 분석하여 사용자의 복잡하고 긴 꼬리형(Long-tail) 검색 의도에 맞는 컬렉션을 생성합니다. 이 시스템은 비전-언어 모델(VLM)을 통한 속성 추출과 CLIP 스타일의 효율적인 임베딩 모델을 결합하여 대규모 데이터셋에서도 정밀도와 확장성을 동시에 확보했습니다. **사용자 쇼핑 의도와 데이터 신호의 특성화** * 사용자의 검색 기록, 자동 완성 상호작용, 필터 사용 패턴을 분석하여 쇼핑 의도의 분포를 파악합니다. * '검은색 칵테일 드레스'와 같은 정형화된 주요 쿼리(Head)뿐만 아니라, '이탈리아 여름 휴가 때 입을 옷'과 같은 서술형 및 대화형 쿼리에 대응하는 것을 목표로 합니다. * 색상, 상황, 스타일, 핏 등 20개 카테고리에 걸친 속성 차원을 정의하여, 수요는 높지만 기존 검색 결과가 부족한 영역을 식별합니다. **VLM과 LLM-as-Judge를 활용한 쇼핑 토픽 정제** * 제품의 이미지와 메타데이터를 비전-언어 모델(VLM)에 입력하여 정규화된 키-값 쌍 형태의 속성을 생성합니다. * 초기 VLM 출력의 너무 구체적이거나 중복된 속성(예: 'boho'와 'bohemian')을 해결하기 위해 빈도 기반 필터링과 임베딩 기반 클러스터링을 수행합니다. * 최종적으로 'LLM-as-judge' 단계를 거쳐 추출된 속성들이 실제 쇼핑 의도와 일치하는지, 의미적으로 일관성이 있는지 평가하여 고품질의 쇼핑 토픽 사전을 구축합니다. **CLIP 스타일 모델을 통한 대규모 속성 할당** * 모든 제품에 VLM을 직접 적용하는 것은 비용이 과다하므로, 이미지-텍스트를 정렬하는 CLIP 스타일의 듀얼 인코더 모델을 별도로 학습시킵니다. * 제품 인코더와 속성 구절 인코더를 통해 각각의 임베딩을 생성하고, 두 벡터 간의 유사도가 임계치를 넘을 때 속성을 할당합니다. * 이 방식은 VLM 대비 연산 비용을 획기적으로 낮추면서도, 제품별 속성 밀도를 높여 더욱 일관된 제품-속성 그래프를 형성합니다. **Ray 및 Spark 기반의 효율적인 배치 추론 및 피드 구축** * 수백만 개의 핀(Pin)과 토픽을 처리하기 위해 Ray 프레임워크를 사용하여 GPU와 CPU 리소스를 독립적으로 확장하며 스트리밍 방식으로 추론을 수행합니다. * CLIP 기반 분류기는 8개의 NVIDIA A100 GPU에서 약 12시간 만에 학습 및 추론을 완료하며, 회당 비용을 약 500달러 수준으로 절감했습니다. * 최종 피드 구성은 Apache Spark를 활용하여 제품과 쇼핑 토픽 간의 속성 유사도를 계산하고, 가중치 기반 스코어링을 통해 관련성 높은 제품들을 컬렉션으로 묶어냅니다. PinLanding 시스템은 AI가 단순한 키워드 매칭을 넘어 제품의 시각적, 맥락적 의미를 깊이 있게 이해할 수 있음을 보여줍니다. 대규모 이커머스 환경에서 사용자에게 개인화되고 탐색 가능한 쇼핑 경험을 제공하려는 기업은 VLM을 통한 '지식 추출'과 CLIP 스타일 모델을 통한 '효율적 확산' 전략을 참고할 가치가 있습니다.

pinterest

핀터레스트 검색 (새 탭에서 열림)

핀터레스트(Pinterest)는 검색 결과의 관련성을 측정하기 위해 기존의 고비용 휴먼 레이블링(Human Labeling) 방식 대신 미세 조정된 대규모 언어 모델(LLM)을 도입했습니다. 이를 통해 관련성 평가의 비용과 시간을 대폭 절감하는 동시에, 측정 가능한 최소 탐지 효과(MDE)를 1.5%에서 0.25% 이하로 낮추어 정밀한 A/B 테스트 분석이 가능해졌습니다. 결과적으로 핀터레스트는 LLM의 확장성을 활용해 더욱 정교한 샘플링 설계를 구현하고 검색 품질을 지속적으로 개선할 수 있는 기반을 마련했습니다. ### 미세 조정된 LLM 기반의 관련성 예측 모델링 * **모델 구조 및 학습**: 다국어 지원이 가능한 오픈소스 LLM(XLM-RoBERTa-large 등)을 교차 인코더(Cross-encoder) 구조로 활용하여 쿼리와 핀(Pin) 사이의 의미론적 관련성을 5단계(L1~L5)로 분류하도록 미세 조정했습니다. * **풍부한 특징량(Features) 활용**: 관련성 평가의 정확도를 높이기 위해 핀의 제목과 설명뿐만 아니라 BLIP 이미지 캡션, 링크된 페이지의 제목, 사용자가 저장한 보드 이름, 그리고 해당 핀에 대해 높은 참여도를 보인 쿼리 토큰 등을 텍스트 특징으로 사용합니다. * **효율성과 성능의 균형**: Llama-3-8B 모델이 정확도는 소폭 높았으나, 추론 비용과 속도를 고려하여 30분 내에 15만 건의 데이터를 처리할 수 있는 XLM-RoBERTa-large를 최종 모델로 선택했습니다. ### 계층화된 샘플링(Stratified Sampling)을 통한 측정 민감도 개선 * **샘플링 설계의 진화**: 과거에는 휴먼 레이블링의 비용 문제로 단순 무작위 샘플링(SRS)을 사용했으나, LLM 도입 후에는 쿼리의 인기도와 관심사(Interest)를 기준으로 한 계층화된 샘플링을 도입했습니다. * **분산 감소 및 MDE 최적화**: 쿼리 간의 변동성을 통제하는 계층화된 샘플링과 표본 크기 확대를 통해 MDE를 0.25% 이하로 크게 줄였으며, 이는 실험 시스템의 민감도를 6배 이상 향상시킨 결과로 이어졌습니다. * **이질적 처치 효과(Heterogeneous Treatment Effects) 측정**: 인기도나 특정 주제별로 샘플을 나누어 분석함으로써, 전체 평균 지표에 가려질 수 있는 특정 세그먼트의 검색 품질 변화를 정밀하게 파악합니다. ### 온라인 A/B 테스트와 실험 지표 산출 방식 * **페어링된 쿼리 샘플링**: 대조군(Control)과 실험군(Treatment)에서 동일하게 발생한 쿼리를 페어링하여 샘플링함으로써 쿼리 간의 차이로 인한 변동성을 차단합니다. * **sDCG@K 지표 활용**: 관련성 레이블을 기반으로 sDCG(Scaled Discounted Cumulative Gain)를 계산합니다. 이때 관련성이 높은 문서(L5)가 무한히 공급된다고 가정하는 sDCG 방식을 사용하여 상위 25개 결과의 품질을 측정합니다. * **휴먼 레이블과의 정렬성 검증**: 검증 결과 LLM 레이블과 휴먼 레이블의 완전 일치율은 73.7%에 달하며, 1점 이내 오차 범위까지 포함하면 91.7%의 높은 일치 수준을 보여 모델의 신뢰성을 확보했습니다. 성공적인 검색 시스템 운영을 위해서는 정밀한 측정 도구가 필수적입니다. 핀터레스트의 사례처럼 LLM을 활용해 관련성 평가를 자동화하면, 기존의 비용 한계를 극복하고 더 큰 표본과 정교한 통계적 설계를 통해 미세한 순위 모델의 개선 사항까지도 정확하게 포착할 수 있습니다.

pinterest

핀터레스트가 AI를 (새 탭에서 열림)

핀터레스트는 플랫폼 내 유해 콘텐츠 노출 정도를 실시간으로 파악하기 위해 사용자 신고 중심의 지표를 넘어선 '유포율(Prevalence)' 측정 시스템을 구축했습니다. 머신러닝 기반의 가중치 샘플링과 멀티모달 LLM을 결합한 이 시스템은 기존 인적 검토 방식보다 15배 빠른 속도와 낮은 비용으로 매일 노출 위반 사례를 통계적으로 산출합니다. 이를 통해 핀터레스트는 정책 위반 콘텐츠가 사용자에게 미치는 실제 영향력을 정밀하게 모니터링하고 즉각적인 개선 조치를 취할 수 있는 기술적 토대를 마련했습니다. ## 유해 콘텐츠 유포율(Prevalence) 측정의 필요성 * **신고 데이터의 한계 극복:** 자해 콘텐츠와 같이 낙인이 찍힌 분야는 사용자가 신고를 꺼리는 경향이 있으며, 유해 콘텐츠를 직접 찾아보는 사용자는 신고를 하지 않으므로 신고 데이터만으로는 플랫폼의 안전성을 정확히 측정할 수 없습니다. * **노출 중심의 지표 수립:** 콘텐츠의 절대적인 개수보다 해당 콘텐츠가 사용자에게 몇 번 노출되었는지가 중요하므로, '전체 조회수 대비 정책 위반 콘텐츠의 조회수'를 핵심 지표로 정의했습니다. * **기존 인적 검토의 제약 해결:** 과거에는 수동 검토 비용 문제로 6개월마다 간헐적인 조사를 수행했으나, 이는 대응 속도가 느리고 통계적 일관성을 유지하기 어려웠습니다. ## 효율적이고 정교한 ML 기반 샘플링 기법 * **가중치 부여 저수조 샘플링(Weighted Reservoir Sampling):** 일일 노출 스트림에서 위험 점수(Risk Score)와 노출 수가 높은 콘텐츠를 우선적으로 샘플링하여 효율성을 높였습니다. * **편향 없는 통계 추정:** 샘플링 과정에서 발생하는 편향을 제거하기 위해 역확률 가중치(Inverse-probability weighting)를 적용했으며, Hansen–Hurwitz 및 Horvitz–Thompson 비율을 활용해 통계적 일관성을 확보했습니다. * **결측치 처리:** 위험 점수가 없는 신규 콘텐츠의 경우 당일의 중앙값을 할당하여 측정 범위에서 누락되지 않도록 방지하는 안전장치를 마련했습니다. ## 멀티모달 LLM을 통한 대규모 레이블링 자동화 * **속도와 비용의 획기적 개선:** 이미지와 텍스트를 동시에 이해하는 멀티모달 LLM을 활용해 판독 프로세스를 자동화함으로써 인적 검토 대비 15배 빠른 처리 속도와 수십 배 낮은 운영 비용을 달성했습니다. * **전문가 가이드라인 반영:** 정책 전문가(SME)가 검토한 프롬프트를 사용하며, 모델이 내린 결정의 근거와 정책 버전, 모델 ID 등 전체 계보(Lineage)를 기록하여 감사 가능성을 높였습니다. * **지속적인 보정 및 검증:** LLM의 판독 결과가 전문가의 기준(Gold Sets)에서 벗어나지 않도록 주기적인 인간 검증을 수행하며, 모델 드리프트(Drift)를 감시하여 측정의 신뢰도를 유지합니다. ## 시스템 운영 및 가시화 * **대시보드와 알림:** 매일 산출되는 유포율을 95% 신뢰구간(CI)과 함께 시각화하며, 정책 영역별(성인물, 자해, 폭력 등), 서비스 영역별(홈피드, 검색 등)로 세분화하여 분석할 수 있는 기능을 제공합니다. * **확장성 있는 구조:** 특정 LLM에 종속되지 않는 모델 불가지론적(Model-agnostic) 구조를 채택하여 향후 더 성능이 좋은 AI 모델로 손쉽게 교체할 수 있도록 설계했습니다. 이 시스템은 대규모 플랫폼이 AI를 활용하여 정책 위반 콘텐츠를 단순히 차단하는 것을 넘어, 플랫폼 전체의 안전 수준을 어떻게 데이터화하고 관리할 수 있는지에 대한 실질적인 방법론을 제시합니다. 특히 통계적 샘플링과 최신 AI 모델을 결합하여 비용 효율성과 정확성을 동시에 잡은 점이 돋보입니다.

pinterest

피너 설문조사를 통한 (새 탭에서 열림)

핀터레스트는 클릭 중심의 단순한 사용자 반응을 넘어, 사용자가 진정으로 선호하는 고품질 콘텐츠를 추천하기 위해 직접적인 설문 기반의 머신러닝 모델을 도입했습니다. 이는 '클릭베이트'와 같은 저품질 콘텐츠의 확산을 막고, 사용자의 웰빙과 장기적인 만족도를 우선시하는 '사용자 제일주의(Put Pinners First)' 가치를 실현하기 위한 시도입니다. 결과적으로 설문 데이터를 학습한 모델을 통해 홈피드, 관련 핀, 검색 서비스 전반에서 추천 콘텐츠의 품질을 성공적으로 개선했습니다. **사용자 직접 피드백을 통한 시각적 품질 데이터 확보** - '이미지가 시각적으로 얼마나 즐거움을 주는가?'라는 질문으로 1~5점 척도의 인앱 설문을 실시하여 사용자의 주관적인 품질 인식을 데이터화했습니다. - 예술, 뷰티, DIY, 홈 데코, 패션 등 5가지 주요 카테고리(L1)에서 노출 수 가중치를 적용해 5,000개의 이미지를 선정했습니다. - 개별 사용자의 주관성과 오클릭에 따른 노이즈를 줄이기 위해 이미지당 최소 10명 이상의 응답을 확보하여 평균 점수를 산출했습니다. - 설문 결과, 홈 데코 카테고리가 전반적으로 높은 점수를 받았으며 예술 카테고리는 사용자 간 평가 편차가 가장 크게 나타나는 등 카테고리별 특성이 확인되었습니다. **시각적 품질 예측을 위한 머신러닝 모델링** - 이미지의 시각적·텍스트적 특성과 핀이 저장된 보드 간의 관계를 포함한 핀터레스트 내부 임베딩 기능을 모델의 피처로 활용했습니다. - 5,000개의 상대적으로 작은 데이터셋에서 과적합(Overfitting)을 방지하고 추론 속도 및 비용을 최적화하기 위해 92,000개의 파라미터만을 가진 단순한 완전 연결 신경망(Fully-connected NN) 구조를 채택했습니다. - 절대적인 점수를 예측하는 방식 대신, 두 이미지 중 어떤 것이 더 높은 평가를 받을지 예측하는 '쌍체 순위 지정(Pairwise ranking)' 기법을 적용해 학습 효율을 높였습니다. - 특히 학습 시 동일한 카테고리 내의 이미지만 비교하게 함으로써, 모델이 콘텐츠의 주제(Semantic)가 아닌 순수한 시각적 품질 차이에 집중하도록 설계했습니다. **실용적 인사이트 및 결론** 단순히 클릭률(CTR)과 같은 단기적인 인게이지먼트 지표에만 의존하는 추천 시스템은 장기적으로 콘텐츠의 질을 저하시킬 위험이 있습니다. 핀터레스트의 사례는 정제된 소규모 설문 데이터를 활용해 사용자의 의도를 모델링에 직접 반영함으로써, 비즈니스 지표와 사용자 만족도를 동시에 잡는 '윈-윈' 전략이 가능함을 보여줍니다. 품질에 대한 정의가 모호할수록 전문가의 라벨링보다는 실제 대중 사용자의 피드백을 수집하여 평균적인 인식을 학습시키는 것이 실질적인 추천 서비스 개선에 더 효과적일 수 있습니다.

pinterest

오픈소스 AI의 우선순위 (새 탭에서 열림)

현재 인공지능 기술의 경쟁 축은 거대 폐쇄형 모델에서 오픈소스 및 목적 특화형(Fit-for-purpose) 모델로 빠르게 이동하고 있습니다. 핀터레스트(Pinterest)는 오픈소스 모델을 자사 데이터로 미세 조정하여 상용 모델 대비 10% 미만의 비용으로 동등한 성능을 구현해냈으며, 특정 작업에서는 오히려 범용 모델을 능가하는 성과를 거두고 있습니다. 이는 AI 모델 아키텍처가 범용화됨에 따라 기업의 경쟁력이 독자적인 데이터와 제품 통합 능력에서 결정된다는 점을 시사합니다. ### 핀터레스트의 모달리티별 모델 구축 전략 핀터레스트는 서비스의 특성에 따라 '자체 구축(Build)', '구매(Buy)', '조정(Adapt)'의 전략을 차별화하여 적용합니다. * **사용자 추천 시스템(Users):** 수천억 개의 노드로 구성된 이미지-보드-사용자 그래프를 기반으로 PinFM, PinRec과 같은 모델을 자체 구축하여 사용자 행동 시퀀스를 정교하게 학습합니다. * **시각적 이해(Visual):** 시각적 검색 및 컬렉션 데이터를 활용한 대규모 약지도 학습(Weakly-supervised pretraining)을 위해 PinCLIP, Pinterest Canvas 등 독자적인 인코더와 확산 모델을 개발합니다. * **텍스트 및 추론(Text):** 과거에는 외부 상용 모델에 의존했으나, 최근에는 오픈소스 LLM을 핀터레스트의 고유 데이터로 미세 조정하여 사용하는 방식으로 전환하고 있습니다. ### 도메인 특화 데이터 기반의 성능 차별화 모델 아키텍처가 상향 평준화되면서, 특정 도메인에 최적화된 데이터가 모델의 성능을 결정짓는 핵심 요소로 부상했습니다. * 핀터레스트는 자체 시각 데이터를 학습시킨 임베딩 모델(UVE, PinCLIP)을 통해 기성 모델보다 우수한 검색 및 추천 성능을 확보했습니다. * 이미지 생성 모델인 'Pinterest Canvas' 역시 범용 모델보다 핀터레스트의 서비스 환경에 적합한 이미지 편집 및 향상 기능을 제공하도록 튜닝되었습니다. * 이러한 접근법은 과거 AlexNet 시절 아키텍처가 범용화되고 데이터 중심의 최적화가 중요해졌던 머신러닝의 역사적 흐름과 궤를 같이합니다. ### 핀터레스트 어시스턴트(Pinterest Assistant) 사례 최근 출시된 AI 에이전트 서비스는 오픈소스 모델의 효율성을 증명하는 대표적인 사례입니다. * **지능형 라우터 구조:** 에이전트 역할을 하는 LLM이 사용자의 의도를 파악하고, 추천 서비스나 시각 검색 등 핀터레스트 고유의 도구(Tool)를 호출하는 구조를 채택했습니다. * **오픈소스 기반 최적화:** 초기에는 상용 LLM을 사용했으나, 도구 호출(Tool calling)과 쿼리 계획 수립에 특화된 미세 조정을 거친 오픈소스 모델로 교체하여 비용을 획기적으로 절감했습니다. * **성능 유지와 비용 절감:** 오픈소스 모델 도입을 통해 상용 모델 대비 10배 이상의 비용 효율성을 달성하면서도 서비스 품질은 유지하는 성과를 거두었습니다. ### 기술적 통찰과 제언 AI 기술 전략을 수립할 때 더 이상 모델의 크기나 범용적인 벤치마크 점수에만 매몰되어서는 안 됩니다. 기업은 자사가 보유한 고유의 데이터를 가장 효과적으로 학습시킬 수 있는 오픈소스 모델을 선택하고, 이를 자사 서비스 생태계에 깊숙이 통합하는 '목적 특화형' 접근법을 취해야 합니다. 모델 자체의 성능보다는 그 모델이 비즈니스 맥락 안에서 얼마나 정교하게 도구를 활용하고 사용자 경험을 개선하는지가 진정한 차별화 포인트가 될 것입니다.