eBay上のマーケットプレイスでの機械学習を用いたパーソナライズレコメンデーションを提供するためにどのようにシステムを構築したかの話.

3つのフェーズに分けて紹介してくれている.

Phase 1: Offline

今回のレコメンドモデルとしては,Two-TowerのDNNモデルを採用している.1つがアイテムの埋め込み表現,もう1つがユーザーの埋め込み表現で入力のユーザーの埋め込み表現に対して,kNNで最近傍のアイテムの埋め込み表現をサーチ方法で実現している.

論文があるので,時間がある時にでも読みたい.

今回構築したTwo-TowerのDNNモデル

今回構築したTwo-TowerのDNNモデル

候補の計算はオフラインで行い,結果をキャッシュして高速なランタイムアクセスができるようにしているとのこと.バッチでする場合の定番の方法.

フェーズ1において,生データをレコメンドリストに変換する過程は以下の手順になっている.

  1. 生のアイテムのメタデータとユーザーの行動履歴データをETLジョブで集約している.
  2. GPU環境でユーザーやアイテムの埋め込み表現を計算している.eBayでは,PyTorchとPytorch-Lightningでモデルを学習するコードを書いている.
  3. ユーザーの埋め込み表現を入力として,オフラインでkNNを使った検索を行い,アイテムの候補を探索している.eBayでは,Faissを使って近傍探索を行っている.
  4. レコメンドの方法としては,ユーザーからリクエストがあった際に,ユーザーIDをキーとしてCouchbaseを呼び出してレコメンドリストを取得し,レスポンスを返している.

パイプラインのスケジューリングは,cron / Jenkins / Airflowを組み合わせて実現している.

Architectural diagram for the Phase 1 recommender system.

Architectural diagram for the Phase 1 recommender system.

Phase 2: Offline / Near Real Time (NRT) Hybrid

フェーズ2での重要な要素はリアルタイムでのkNN検索を実現することで,HNSW or ScaNNのようなANN手法を用いることでそれを実現できるようにしている.