19P by xguru 8시간전 | ★ favorite | 댓글 2개
  • X "For You" 피드의 개인화된 콘텐츠 추천 품질을 높이기 위해 개발된 머신러닝 기반 추천 시스템
  • 팔로우한 계정(Thunder)비팔로우 콘텐츠(Phoenix Retrieval) 2가지 소스를 결합해 피드 구성
  • 모든 후보 게시물을 Grok 기반 Transformer 모델인 Phoenix로 평가해 최종 순위를 산출
    • 이 모델은 각 게시물의 참여 확률을 예측함
  • 시스템에서 수작업으로 설계된 모든 기능 및 대부분의 휴리스틱 알고리듬은 제거
  • 사용자의 활동 내역(좋아요, 답글, 공유)을 분석하여 관련성있는 콘텐츠를 파학함

시스템 아키텍처

  • Home Mixer는 전체 파이프라인을 조정하는 오케스트레이션 계층
    • 사용자 행동 이력과 팔로잉 정보를 수집하는 Query Hydration 단계 포함
    • 후보 수집, 데이터 보강, 필터링, 점수화, 최종 선택까지 일련의 단계 관리
    • gRPC 기반 ScoredPostsService로 사용자별 정렬된 게시물 반환
  • Thunder는 인메모리 저장소로, Kafka 이벤트 스트림을 통해 실시간 게시물 수집
    • 원본 게시물, 답글/재게시물, 동영상 게시물에 대한 사용자별 저장소 관리
    • 요청하는 사용자가 팔로우하는 계정에서 "In-네트워크" 게시물 후보를 제공
    • 팔로우한 계정의 최신 게시물을 초저지연으로 제공
    • 외부 데이터베이스 접근 없이 서브밀리초 수준 조회 성능 확보
  • Phoenix 는 추천의 핵심 ML 컴포넌트로, RetrievalRanking 두 단계로 구성
    • 검색: Two-Tower 모델을 사용해 사용자 특징/참여기록 임베딩과 게시물 임베딩 간 유사도 계산하여 Top-K 게시물 조회
    • 랭킹: Transformer with Candidate Isolation 구조로 각 후보가 독립적으로 평가되도록 설계
      • 사용자 컨텍스트(참여 이력) 및 Candidate 게시물을 입력으로 받고
      • 각 게시물에 대해 좋아요, 리플, 리포스트, 클릭 등 다중 행동 확률 예측
  • Candidate Pipeline은 재사용 가능한 추천 파이프라인 프레임워크
    • Source, Hydrator, Filter, Scorer, Selector 등 Trait들 정의
    • 병렬 실행과 오류 처리, 로깅 기능을 내장해 확장성과 안정성 확보

작동 방식

  • 파이프라인 단계

    • 1. 쿼리 데이터 가져오기 : 사용자의 최근 활동 내역 및 메타데이터(예: 팔로우 목록)를 가져옴
    • 2. 후보 발굴 : 다음 소스에서 후보 글(candidate post)을 검색
      • Thunder : 팔로우하는 계정(네트워크 내부)의 최근 게시물
      • Phoenix Retrieval : 글로벌 코퍼스에서 머신러닝으로 발견된 게시물(네트워크 외부)
    • 3. 다음 정보를 활용해 후보자 추출(Hydration) :
      • 핵심 게시물 데이터(텍스트, 미디어 등)
      • 작성자 정보(사용자 이름, 인증 상태)
      • 동영상 길이 (동영상 게시물의 경우)
      • 구독 상태
    • 4. 사전 점수 필터 : 다음 조건을 만족하는 게시물을 제거
      • 중복
      • 너무 오래된 것
      • 시청자 본인의 것
      • 차단/음소거된 계정의 것
      • 음소거된 키워드 포함한 것
      • 이전에 봤거나 최근에 서빙된 것
      • 구독 불가한 콘텐츠
    • 5. 채점 방식 : 여러 채점기를 순차적으로 적용
      • Phoenix Scorer : Phoenix 트랜스포머 모델을 이용한 머신러닝 예측 결과를 가져옴
      • 가중 점수 계산기 : 예측 결과를 종합하여 최종 관련성 점수를 산출
      • 저자 다양성 점수 계산기 : 다양성을 위해 중복된 저자 점수의 영향을 줄임
      • OON 스코어러 : 네트워크 외부 콘텐츠에 대한 점수를 조정
    • 6. 선택 : 점수순으로 정렬하고 상위 K명의 후보자를 선택
    • 7. 선택 후 절차 : 후보 글에 대한 최종 검증
  • 스코어링과 랭킹

    • Phoenix 모델의 예측값을 가중합 방식으로 결합
    • 긍정적 행동(좋아요, 공유 등)은 가중치를 높이고, 부정적 행동(차단, 신고 등)은 감점 처리
  • 두단계 필터링

    • 점수 계산 전 필터 : 중복, 기준보다 오래된 게시물, 본인 글, 못보는 유료 콘텐츠, 이미 보거나 서빙된 글, 차단 계정, 뮤트된 키워드 등 제거
    • 선택 후 필터: 삭제된 게시물, 스팸 게시물, 폭력성 콘텐츠, 잔인한 게시물 및 동일한 대화 스레드의 여러 분기 중복을 제거

핵심 설계 원칙

  • 수작업 피처 엔지니어링 제거, Transformer가 사용자 행동 시퀀스에서 직접 학습
  • 후보 독립 평가(Candidate Isolation) 로 일관된 점수 산출 및 캐싱을 용이하게 함
  • Hash 기반 임베딩으로 검색과 순위 매기기 모두 임베딩 조회에 여러 해시 함수를 사용
  • 다중 행동 예측(Multi-Action Prediction) 으로 단일 "관련성" 점수가 아닌 여러 행동에 대해 예측
  • 모듈형 파이프라인 아키텍처
    • 파이프라인 실행 및 모니터링을 비즈니스 로직과 분리
    • 독립적인 단계의 병렬 실행 및 오류에 대한 적절한 처리
    • 새로운 소스, 하이드레이션, 필터 및 점수기를 쉽게 추가 가능

라이센스

https://news.hada.io/topic?id=8854
이거랑은 또 다른걸까요? 주말에 시간 내서 읽어봐야겠네요...