TransAct: Transformer-based Realtime User Action Model for Recommendation at Pinterest (2023)

Pinnability, Transact

  • Homefeed Ranking Model = Pinnability

    • 핀 𝑝에 대한 사용자 𝑢의 다양한 행동(클릭, 리핀, 숨기기 등 긍정적 및 부정적 행동 모두 포함) 확률을 예측하는 multi-task
    • 기본적으로 wide & deep 구조
      • 특징 상호작용을 명시적으로 모델링하기 위한 full-rank DCNv2 Deep & Cross Network
      • 마지막으로 output 행동 헤드로 연결되는 fully connected layer
        • 각 헤드가 하나의 행동에 맵핑됨
  • loss의 경우 weighted cross-entropy loss

      • 는 헤드 의 출력 확률, 가중치는 ground truth 와 label weight matrix를 사용하여 계산 
      • 비즈니스 요구사항에 따라 유저 레벨의 가중치도 넣음
  • 아래와 같은 구조로 장기적인 관심사와 실시간의 단기적인 관심사를 둘 다 반영할 수 있음 (real-time & batch hybrid model)

  • PinnerFormer

  • TransAct

    • 실시간 사용자 행동 시퀀스를 처리하는 서브모듈 (이므로 사실 위의 Pinnability외에도 다른 곳에도 쓸 수 있음)
    • 각 행동에는 타임스탬프, 행동 유형, 32차원 PinSage 임베딩이 포함, 최근 100개의 행동으로 시퀀스를 생성(없는 유저는 패딩)

  • Feature Encoding: 행동 유형은 학습 가능한 임베딩 테이블을 통해 저차원 벡터로 투영되어 사용자 행동 임베딩 행렬 을 형성
    • 핀 내용은 PinSage 임베딩 행렬 로 표현
    • 최종 인코딩된 시퀀스 특성은
  • Early fusion: 후보 핀과 사용자가 이전에 상호작용한 핀들 간의 상호작용을 합쳐서 모델에 넣어줌
    • concat 방식이 append 방식보다 우수했음
      • append는 후보 핀을 시퀀스의 마지막에 덧붙이는 것
      • concat은 시퀀스의 모든 행동에 후보 핀을 복사해서 붙이는 것
  • Sequence Aggregation Model: 준비된 를 입력으로 받아 사용자의 단기 선호도를 효율적으로 집계
    • 표준 Transformer 인코더 (2개의 인코더 레이어, 1개의 헤드)가 사용
    • 오프라인 실험 결과 positional encoding은 효과적이지 않아 제외
  • Random Time Window Mask
    • 모델이 사용자의 최근 상호작용과 유사한 콘텐츠만을 추천하는 rabbit hole 효과를 방지하고 다양성을 향상시키기 위해 도입
    • 학습 중에만 적용되며, 0에서 24시간 사이의 랜덤 time window 가 샘플링되어 요청 타임스탬프 를 기준으로 내에서 발생한 모든 행동은 마스킹함
  • Transformer Output Compression: 과도한 시간 복잡도를 피하기 위함
    • 행동 100개 transformer 인코더 100개의 벡터 = 너무 많음(다음 단계인 DCN v2에 그대로 넣기에)
    • Transformer 인코더 출력 에서 첫 번째 개 열 을 전체 시퀀스에 대한 맥스 풀링 벡터 와 concat한 다음 벡터 로 flatten
      • 개는 사용자의 가장 최근 관심사를 포착하고 맥스 풀링 벡터는 전체 시퀀스의 전반적인 선호도를 포착하여 성능과 지연 시간 사이의 균형을 맞출 수 있음

Productionize

  • retraining
    • 실시간 특성을 사용하는 모델은 사용자 행동 변화에 민감하므로 staleness방지하기 위해 주 2회 전체 재훈련을 수행
  • GPU 서빙
    • TransAct를 도입하면서 계산 복잡도가 65배 증가했으나 다음 최적화를 통해 latency와 cost를 neutral하게 유지
      • nvFuser 및 cuCollections(ID embedding lookup을 효율적으로 할 수 있게 해주는 NVIDIA library) 활용, 맞춤형 임베딩 테이블 조회 모듈 구현으로 수백 개의 개별 연산을 하나로 통합하여 오버헤드 최소화
      • CPU에서 GPU로의 수백 개의 개별 텐서 복사 오버헤드를 줄이기 위해 여러 텐서를 하나의 연속적인 버퍼로 결합하여 전송
      • 더 큰 배치를 생성(효율적 추론), 캐시 용량 손실을 보완하기 위해 DRAM과 SSD를 결합한 하이브리드 캐시를 구현
        • 자주 사용되는 데이터(Hot Data)는 빠른 DRAM에 저장하고, 덜 자주 사용되지만 여전히 필요한 데이터(Warm Data)는 더 크고 저렴한 SSD에 저장
      • 나머지 작은 연산 오버헤드를 완전히 제거하기 위해 모델 추론 프로세스를 단일 단위로 실행하는 정적 그래프로 캡처하는 CUDA Graphs 사용
  • 실시간 feature 처리
    • Flink 기반의 애플리케이션이 프론트엔드 이벤트에서 생성된 Kafka 스트림을 소비하여 사용자 행동 기록을 Rockstore(Pinterest에서 사용하는 key-value store)에 저장
    • 서빙 시에는 시퀀스 특성을 모델에서 활용 가능한 형식으로 변환

Experiment

offline

  • setting
    • Pinterest Homefeed View Log(FVL)의 3주치 데이터를 사용하여 2주치 데이터로 모델을 훈련하고 3주치 데이터로 평가
    • 학습 데이터는 사용자 상태 및 레이블에 따라 샘플링되었으며, 불균형한 데이터셋을 보완하기 위해 음성 샘플을 다운샘플링함
    • 평가는 HIT@3 지표를 사용
    • 평가 데이터셋에서는 위치 편향을 제거하기 위해 핀 순서를 무작위화
  • results
    • TransAct는 기존의 순차 추천 방식(WDL + 시퀀스, BST)을 크게 능가함
    • 특히 숨기기 예측에서 TransAct의 성능이 압도적으로 우수했으며, 이는 행동 유형 인코딩 능력 덕분
    • 특히 비핵심 사용자(non-core user)의 경우 실시간 사용자 행동 특성이 제한된 과거 상호작용 정보를 보완해주므로 모든 사용자 그룹보다 더 높은 성능 향상을 보임

  • Ablation Study
    • 하이브리드 랭킹 모델: TransAct(실시간)와 PinnerFormer(배치) 중 TransAct가 더 중요한 요소였지만, PinnerFormer 역시 장기적인 사용자 선호도를 포착하여 모델 성능에 기여함. 두 요소를 모두 사용하는 하이브리드 모델이 최상의 성능
    • 기본 시퀀스 인코더 아키텍처: Transformer가 평균 풀링, CNN, RNN, LSTM보다 우수한 성능을 보임
    • early fusion : concat 방식이 append 방식보다 우수함
    • 시퀀스 길이가 길어질수록 성능이 향상되지만 증가율은 sub-linear하므로 100 정도로

online

  • TransAct가 도입된 Pinnability 모델과 실시간 사용자 시퀀스 특성이 없는 Pinnability 모델을 대상으로 1.5%의 사용자 트래픽에 대해 A/B 테스트를 수행
    • re-pin 11.0% 증가, 숨기기 10.0% 감소, 전반적인 Pinterest 체류 시간이 2.0% 증가
      • 이 경우에도 비핵심 사용자의 참여도 향상이 더 컸음
  • 모델을 재훈련하지 않을 경우 참여도 지표가 시간이 지남에 따라 감소하는 현상이 관찰
    • 주 2회와 같은 빈번한 재훈련이 참여율을 안정적으로 유지하는 데 필수적이었음
  • TransAct 도입으로 인해 추천 다양성이 2~3% 감소하는 문제가 발생했으나 Random Time Window 을 통해 다양성 감소를 1%로 완화하면서도 relevance 지표를 떨어뜨리지 않고 유지함