0x00

리서치 / 일일 리포트

  • 읽은 자료 1건
  • 정본 반영 1개 파일
  • 레이더 1건
한 줄 요약Pinterest가 표준 광고 lightweight ranking 모델을 two-tower에서 3-tower로 넓혀 프로덕션에 배포했다고 밝혔다. 온라인 A/B에서 클릭 지표 세 개가 각각 약 1% 올랐다.

1광고 lightweight ranking을 two-tower에서 3-tower로 넓혔다 — 레이더(Pinterest)

자료 Beyond Two Towers: Launching the 3-Tower Engagement Co-Train Model (Part 2) — Pinterest Engineering Blog, 2026-09-17, 블로그 글. 저자는 8인이고, 마지막 저자 Zhaohong Han의 직책은 "Manager II, Ads Lightweight Ranking"으로 명시돼 있다. 이 글이 참조하는 Part 1은 Xiao Yang 등이 쓴 "Beyond Two Towers: Re-architecting the Serving Stack for Next-Gen Ads Lightweight Ranking Models (Part 1)"이다. 저장소가 아직 정본에 반영하지 않은 선행 자료다.

배경 Lightweight ranking은 랭킹 파이프라인의 초기 단계다. Pinterest 광고 파이프라인에서는 후보 광고를 수십만 건 받아 상위 N건으로 자르고, 뒤에 오는 fine ranking(더 무거운 모델)이 남은 후보만 세밀하게 채점하게 한다. Pinterest의 표준 광고 스택은 유저 요청 하나당 후보 광고를 수십만 건 채점한다. 블로그 본문에 따르면 post-targeting 후보 수의 P99가 200K를 넘는 지면도 있다.

이 규모를 감당하려고 오래 써 온 아키텍처가 two-tower다. two-tower는 유저 쪽(query)과 아이템 쪽(Pin)을 각각 임베딩으로 만들어 두고 dot product로 채점한다. Pin 쪽 임베딩은 요청 밖에서 미리 계산해 캐시할 수 있으므로, 후보가 아무리 많아도 채점 자체는 저렴하다. 대신 표현력이 얕다. query와 Pin의 상호작용을 dot product 한 번으로만 처리하기 때문에, 유저 시퀀스와 후보 피처 사이의 고차 상호작용을 잡아내지 못한다. lightweight ranking 자리에서는 two-tower 이상을 굳이 쓰지 않는 것이 업계 관행이었다. 후보 수가 너무 많아 무거운 모델을 붙일 여지가 없기 때문이다.

Pinterest는 앞선 글(Part 1)에서 Nexus라는 서빙 스택을 배포해 candidate generation과 scoring을 분리했다. Nexus가 "cross-attention이든 시퀀스 모델링이든 원리적으로 서빙 가능한 판"을 마련했고, 이번 Part 2는 그 위에 올린 첫 번째 모델링 진술이다. 그 판에서 표현력을 늘리면서도 서빙 예산 안에 들어오는 첫 아키텍처를 정한 글이다. 이번 글은 lightweight ranking 자리의 그 관행을 뒤집는 첫 프로덕션 진술이다.

새로 알게 된 것A. 기존 two-tower를 그대로 두고 cross tower를 세 번째 tower로 더했다

  • 모델은 two-tower, cross tower, inter module로 이뤄진 3-tower 구조다 확인. 기존 two-tower(query·Pin)를 그대로 두고, cross tower를 세 번째 tower로 더한다.
    • Cross tower는 유저 시퀀스 세 종류와 후보 피처 네 종류를 입력으로 받는다.
    • 유저 시퀀스는 organic engagement, ads engagement, search history다.
    • 후보 피처는 advertiser ID, campaign ID, GraphSAGE 임베딩, Pin PinnerSAGE 임베딩이다.
    • Inter module은 query·Pin·cross 세 임베딩을 shared-bottom MLP(세 태스크가 아래층을 함께 쓰는 MLP)로 합쳐 세 태스크의 logit을 만든다.
    • 저자들은 대안으로 DCN(Deep & Cross Network) 층을 쌓는 방법과 MMoE를 넣는 방법도 시도했다. 그러나 성능 손실 대비 지연 이득은 shared-bottom MLP가 가장 컸다고 밝힌다.
  • 핵심 설계는 "후보 피처를 query token으로 만들어서 유저 시퀀스와 cross-attention을 계산한다"는 것이다 확인.
    • 이렇게 하면 attention의 query 축을 후보 피처 개수로 통제할 수 있어, 서빙 비용이 후보 수에 따라 폭발하지 않는다.

새로 알게 된 것B. 한 모델이 세 가지 클릭 확률을 빠른 경로와 정확한 경로로 함께 예측한다

  • 모델이 예측하는 세 태스크는 pCTR, pGCTR30, pOCTR이다 확인.
    • pCTR은 광고 클릭 확률이다.
    • pGCTR30은 클릭이 30초 이상 지속되는 good click의 확률이다. 광고 랜딩 페이지에서 유저가 실제로 머무르는지를 본다.
    • pOCTR은 광고주 사이트로 이탈하는 outbound click의 확률이다.
    • Pinterest 광고 랭킹이 세 지표를 동시에 최적화하고 있다는 정황은 이전에도 있었다. 하지만 lightweight ranking 자리에서 세 지표를 한 모델의 세 head로 잡는다는 프로덕션 진술은 이번 글이 처음 공개했다.
  • 같은 모델이 모든 후보에는 two-tower dot product로 빠른 점수를, 선택된 서브셋에는 3-tower 경로로 정확한 점수를 낸다 확인.
    • 두 예측은 loss가 다르지만 파라미터를 공유해 함께 학습된다(co-train).

    • 손실 함수는 블로그에 정확히 이렇게 명시돼 있다.

      "L = (100 * L_main_ctr + 5 * L_main_gctr30 + 1 * L_main_octr) + (10 * L_cotrain_ctr + 5 * L_cotrain_gctr30 + 1 * L_cotrain_octr)" — Beyond Two Towers Part 2

    • main(three-tower) CTR에는 100을, co-train(two-tower) CTR에는 10을 가중치로 준다. gCTR30·oCTR은 각각 main 5·1, co-train 5·1이다.

    • Main과 co-train을 나눈 이유는 오프라인 손실 감소를 three-tower 예측에 집중시키면서, co-train two-tower 헤드가 대체될 프로덕션 two-tower 모델보다 열등하지 않게 유지하기 위해서다.

  • 임베딩 차원은 태스크에 맞춰 나뉘어 있다 확인.
    • Query tower는 192차원을 만들어 CTR 144차원, gCTR30 32차원, oCTR 16차원으로 나눈다.
    • Pin tower는 그에 대응하는 차원에 cross tower용 256차원 candidate-feature projection을 더해 총 448차원을 낸다. 이 projection은 오프라인에서 캐시된다.
    • 서빙에서 fast CTR 점수는 144차원 CTR 세그먼트의 처음 64차원만 쓴다. three-tower CTR 점수는 CTR 세그먼트 전체와 cross 임베딩을 함께 쓴다.
    • gCTR30·oCTR은 fast와 slow 두 경로가 임베딩 전체를 공유한다.

새로 알게 된 것C. 서빙은 두 단계이고, utility 상위 40K 후보만 three-tower로 다시 채점한다

  • 서빙은 2단계 flow이고, utility topK는 40K다 확인.
    • Stage 1에서 co-train된 two-tower head로 후보 전량을 채점하고 utility를 계산한다.
    • Stage 2에서 utility 상위 40K만 three-tower로 다시 채점한다.
    • 40K는 Home Feed·Related Pins에서 후보의 70퍼센타일, Search에서 90퍼센타일 수준이다. 대부분의 요청에서는 후보의 다수가 three-tower까지 가지만, 후보가 극단적으로 많은 P99 요청에서는 처음 40K만 통과한다.
    • Two-tower 점수와 three-tower 점수는 마지막 top-K 선정 전에 blending된다. 40K를 벗어난 후보는 two-tower 점수를 유지한 채 이후 stage로 넘어간다.
  • 후보 서브셋을 heuristic으로 자르면 캘리브레이션(예측 확률이 실제 비율과 맞는 정도)이 왜곡될 수 있는데, 저자들은 이 걱정을 명시적으로 다룬다 확인.
    • 경매 후보에서는 three-tower 모델이 오히려 over-calibration을 줄여, 예측 CTR을 실측 CTR에 가깝게 만들었다고 밝힌다.

새로 알게 된 것D. 서빙 최적화 네 가지로 200ms를 넘던 P99 추론 시간을 약 30ms로 줄였다

  • 서빙 최적화 4종을 합쳐 200ms를 넘던 P99 모델 추론 시간이 약 30ms로 줄었고, 최종 모델은 프로덕션보다 1–2ms만 느리다 확인.

    "Together, these changes reduced P99 model inference from over 200 ms to about 30 ms, leaving the final model only 1–2 ms slower than production." — Beyond Two Towers Part 2

    • 저자들은 구성 요소마다 효과를 따로 계량했다. 네 최적화 가운데 late expansion과 BF16의 이득이 가장 컸다.
    • Pin 전처리를 Pin tower로 옮겼다. 원래는 cross module에서 candidate마다 MLP를 돌렸는데, Pin tower에 256차원 projection을 붙여 오프라인 캐시로 옮겼다. 100K 후보 기준 -2ms다.
    • FP32를 BF16으로 바꿨다. three-tower 경로만 정밀도를 낮추며, 50K 후보 기준 103ms → 56ms, 20K 후보 기준 45ms → 26ms다. 모델 품질은 중립이다.
    • user feature의 late expansion을 적용했다. 유저 피처를 candidate 배치 크기로 확장(broadcasting)하는 시점을 attention key·value를 만들기 직전이 아니라 attention 안쪽으로 더 밀었다. 100K 후보 기준 -15ms다.
    • pre-layer normalization으로 바꿨다. cross-attention에서 LayerNorm을 attention 이후에 큰 sequence에 적용하던 것을, attention 이전 input(배치 1)에 적용하는 pre-norm으로 바꿨다. 100K 후보 기준 -3ms다.

새로 알게 된 것E. 오프라인에서 three-tower 예측의 손실이 기존 two-tower보다 약 30% 줄었다

  • Held-out standard ads 데이터에서 three-tower main 예측의 손실이 기존 프로덕션 two-tower보다 상대 기준으로 ~30% 줄었다 확인.
    • Co-train two-tower 예측은 프로덕션 two-tower와 대체로 비슷했다. gCTR30 co-train 손실만 조금 나빠졌지만, main task 이득을 생각하면 받아들일 만하다는 판정이다.
    • 저자들은 이 결과로 "standalone 프로덕션 two-tower engagement 모델을 deprecate하고 co-train head에 의존해도 품질 손실이 없다"고 명시한다.

새로 알게 된 것F. 온라인 A/B에서 클릭 지표 세 개는 각각 약 1% 오르고 클릭당 비용은 약 1% 내렸다

  • 표준 광고 지면(Home Feed·Related Pins·Search)의 온라인 A/B에서 세 engagement 지표가 각각 약 1% 올랐다 확인. 클릭당 비용(cost-per-click)은 약 1% 내렸고, GPU 지출은 "modest" 수준으로 늘었다 확인.

    "In online A/B experiments on standard ads, the three-tower co-train model delivered around 1% gains in CTR, gCTR30, and oCTR, along with nearly 1% reductions in CPC, with only a modest increase in GPU spend." — Beyond Two Towers Part 2

    • 제목이 "Launching"이고 본문이 대체되는 프로덕션 two-tower 모델의 deprecate를 밝히므로, 실제 배포로 판단한다.

정본 반영 radar.md "이번 달 신규" 맨 위에 Pinterest 3-Tower Engagement Co-Train 엔트리를 넣었다. Pinterest는 이 저장소가 정본 문서로 추적하는 서비스(canon 추적 서비스)가 아니므로, services 정본은 만들지 않는다.

의미 이번 자료는 저장소 코퍼스에서 세 가지 새 자리를 채운다.

  • 광고 lightweight ranking에서 two-tower를 확장한 첫 프로덕션 진술이다.
    • 지금까지 코퍼스에는 광고 랭킹 진술이 여러 건 있었다(Meta ads scaling laws, Snap CAMIE, Tencent ANGLE·ChronicleRec, TikTok Shop ReST 등). 하지만 lightweight/pre-rank 자리를 겨냥한 진술은 대부분 후보 감축과 KD 위주였다.
    • Pinterest는 lightweight ranking 자리에서 표현력을 늘리면서도 후보 수에 따른 지연 폭발을 피하는 실용 패턴을 낸다. 그 요체는 "후보 피처로 query token을 만들어 attention query 축을 통제"하는 발상이다.
    • 이 패턴은 후보 수가 큰 광고 지면 밖에서도 재사용 가능성이 있다.
  • 빠른 헤드와 느린 헤드를 함께 학습하는 co-train 패턴이 lightweight ranking 자리에서 처음 나온다.
    • 저장소에서 비슷한 아이디어를 낸 진술로는 UNIQUE (Baidu), UniRec (Kuaishou), OneTrans-V2가 있었다. 이들은 모두 캐스케이드(후보를 여러 단계에 걸쳐 줄여 가는 추천 파이프라인)의 서로 다른 stage를 통합하는 방향이었다.
    • Pinterest 3-Tower는 한 stage(lightweight ranking) 안에서 빠른 헤드와 느린 헤드를 한 모델에 담고, 후보 서브셋만 느린 헤드로 다시 채점한다.
    • stage 사이의 통합이 아니라 stage 안에서 fast와 slow를 나눈다는 각도에서, 저장소에서는 새 자리다.
  • 저장소가 다룬 Pinterest 진술에 광고 lightweight ranking 축이 더해진다.
    • Pinterest CLR이 유기 Home Feed의 후보 생성 축을, PinDCO가 광고 creative 선택 축을 다뤘다면, 3-Tower Co-Train은 광고 lightweight ranking 축의 진술이다.
    • 이번 자료로 Pinterest의 프로덕션 추천·광고 스택이 저장소에서 어떻게 세 자리(유기 retrieval / 광고 creative / 광고 lightweight ranking)로 나뉘어 있는지가 뚜렷해졌다.
    • 세 진술은 2026-07-21(PinDCO arXiv v1)부터 2026-09-17(3-Tower 블로그) 사이에 공개됐다. Pinterest가 광고 랭킹 파이프라인의 공개 소통을 눈에 띄게 늘리고 있는 시점이다.

아직 남은 열린 질문도 있다.

  • Part 1(Nexus)에서 candidate generation과 scoring이 어떻게 분리됐는지 저장소는 아직 다루지 않았다. 다음 배치에서 Nexus의 상세를 정독하면 "3-Tower가 앉는 판" 자체가 코퍼스에 들어와서, 이번 진술이 더 정확하게 자리 잡는다.
  • 저자들이 후속 방향으로 명시한 세 가지도 추적 대상이다.
    • engagement 이외 objective(예: 웹 전환)로의 확장
    • 더 긴 시퀀스 모델링
    • 오프라인·온라인·infra 피드백 루프 강화

조회 요약

오늘 새로 통과한 자료는 Pinterest Engineering의 3-Tower 글 하나다. 나머지 출처에서는 새 커밋도, 통과한 글도 없었다.

  • X (xai-org/x-algorithm): 새 커밋은 0건이다. 최신 커밋은 어제 daily에서 이미 다룬 4c5cfe8(2026-09-26)이다.
  • Netflix Tech Blog: 관련 새 글은 0건이다. 최신 글(2026-09-25 "Trading a Cloud Identity for Your Own")은 보안·인프라 주제다.
  • engineering.fb.com / ai.meta.com: 관련 새 글은 0건이다.
  • Google Research blog(월요일 스캔): 관련 새 글은 0건이다. 최신 글(2026-09-24)은 video generation 주제다.
  • Pinterest Engineering(월요일 스캔): 본문에서 다룬 3-Tower 글 1건이 통과했다. 2026-09-11 "Evolving Pinterest's Embedding Retrieval Platform"도 목록에서 확인했다. 다만 저장소의 Pinterest CLR 스레드가 이미 유기 Home Feed retrieval 축을 다루고 있어, 본문 반영은 다음에 볼 것 항목으로 미룬다.
  • arXiv cs.IR triage: 30건을 파싱했고 통과는 0건이다.
    • Beyond a Scalar: Distributional Serving Interfaces for Watch-Time Prediction(2609.28383)은 탈락했다. HTML 판에서 확인한 결과 저자 4인은 전원 Shanghai Jiao Tong University·Rice University 소속, 즉 학계이고, 프로덕션 배포나 A/B 진술이 없다. 데이터셋도 회사 프로덕션 로그가 아니라 공개 KuaiRec·KuaiRand-1K·WeChat21이다. VK HEGM 이후 watch-time 분포 예측이 두 번째 프로덕션 회사에서 진술되는 흐름과는 별개의 학술 방법론이다.
    • 나머지 29건은 어제 09-27 daily에서 이미 triage한 batch(2026-09-23~24 제출)의 잔류이거나 학계 RAG·QA·retrieval 방법론이다. 새로 파싱한 batch가 어제와 겹친 이유는 arXiv cs.IR에 2026-09-25 이후 신규 제출이 없기 때문이다. 2026-09-25는 금요일이지만 이 카테고리 신규 제출이 없었고, 2026-09-26·27은 주말이며, 2026-09-28 batch는 아직 공개 전이다.

레이더

Pinterest 3-Tower Engagement Co-Train 엔트리를 이번 달 신규로 편입했다.

다음에 볼 것