Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Yahoo!ショッピングのレコメンデーション・システムにおけるML実践の一例 

 Yahoo!ショッピングのレコメンデーション・システムにおけるML実践の一例 

LINEヤフーでは、様々なサービスの基盤に機械学習(ML)技術が使用され ています。サービスの一つであるYahoo!ショッピングでは、数多くの商 品を扱うレコメンデーション・システム向けに、大規模なデータ処理と MLモデルの学習と推論を日々行っています。本発表では大規模なレコメ ンデーション・システムならではの構成と、使用しているML技術の概要 について解説します。

More Decks by LINEヤフーTech (LY Corporation Tech)

Other Decks in Technology

Transcript

  1. © LY Corporation LINEヤフー株式会社 コマースドメイン・コマースCTOコマースサイエンスユニット ソフトウェアエンジニア 山下 直晃 / Naoaki

    Yamashita Yahoo!ショッピングのレコメンデーション・ システムにおけるML実践の一例 「候補選び(Retrieval)」から「並べ替え(Ranking)」までのバッ チ処理パイプライン
  2. © LY Corporation 5 商品との出会い方 @ Yahoo!ショッピング • 検索 ユーザーのキーワード入力

    • デイレクトリー ユーザーのカテゴリー選択 • レコメンデーション 各種の“おすすめ”を自動で
  3. © LY Corporation 6 レコメンデーション @ Yahoo!ショッピング レコメンデーション(商品の”おすすめ”)の例 • 閲覧中の商品に合わせて

    • 閲覧の履歴から • ユーザー情報や購入の履歴から • カート内の商品に合わせて などなど 受動的な情報の表示のため、待ち時間なく表示する必要がある https://lohaco.yahoo.co.jp/store/h-lohaco/item/u254244
  4. © LY Corporation 7 System Design: 一般論 ✓ 数多くのアイテム ✓

    高速にレスポンス ✓ レコメンド・アイテム毎の順序づけ → 段階的に数を減らして順序集合を作成 = Multi-Stage Recommender System • 自動化・最適化のために複数の機械学習(ML)モデルを使用 • モデルの推論などの処理はbatch(事前)からonline(逐次)と段階的に • ステージごとに改善・修正が可能 (全体的な改善・修正は大変) Xun Yang, Yunli Wang, Cheng Chen, Qing Tan, Chuan Yu, Jian Xu, Xiaoqiang Zhu. 2021. Computation Resource Allocation Solution in Recommender Systems
  5. © LY Corporation 8 System Design: Yahoo!ショッピング (1/2) 1. MLでレコメンド可能な商品集合の作成

    - 集計:Collaborative Filtering(CF) 2. 似た商品ごとに集合を作成 - ML:Retrieval/Recall Model (coverage x depth) 3. クリック(CT)や購買(CV)しやすさで順序づけ - ML:Ranking/Precision Model (KPI) 4. ビジネス・ロジック / ユーザー/KPI に合わせて Online フィルター、ソート、User2Item(KPI) - ML:Ranking/Precision Model (KPI) batch online items depth: 10^1 depth: 10^8 depth: 10^2
  6. © LY Corporation 9 System Design: Yahoo!ショッピング (2/2) Online Re-ranking

    Model Key-Value Store Online Search Engine Log Batch CF Retrieval Model Ranking Model DB 3. 2. 1. 4. Front End API Endpoint
  7. © LY Corporation 10 Batch: Item-to-Item の RecSys 閲覧中の商品(アイテム)に合わせて、別の商品(アイテム)をレコメンド item-to-item

    = 基本のレコメンド • アイテムごと ➔ Batch処理で概ね完了 • 多数のアイテムを高い頻度で更新 高スループット(=時間当たりの処理数)な手法 • MLモデルの学習・推論は、 大きなデータを並列で扱える(=スケールする)手法 item-to-itemでのbatch処理でのML利用法の紹介 Batch CF Retrieval Model Ranking Model 3. 2. 1. batch items depth: 10^8 depth: 10^2
  8. © LY Corporation 11 Item-to-Itemのステージ・タスクの概要 1. レコメンド可能な商品集合の作成 共起イベントの頻度の集計 = Collaborative

    Filtering(CF) 2. 似た商品ごとに集合を作成 ML:Retrieval/Recall Model (A) ( < 25 models) - item embedding (listwise contrastive) / similarity search 3. クリック(CT)や購買(CV)の傾向で順序づけ ML:Ranking/Precision Model (B) ( 4-5 models) - GBDT + learning to rank (pairwise - lambda rank) - DNN MLP/DCN + learning to rank (listwise - contrastive) - ML Feature: BERT-score (cross encoder, fine tune) CF (ETL) B-1:Ranking GBDT: B-2:Ranking DNN C:Ranking-Featrure BERT A: Retrieval item embedding
  9. © LY Corporation 12 Item-to-Item 計算環境 社内データ・センター(オンプレミス)の共用環境を使用 Hadoop環境: CPUノード 分散ストレージ(HDFS)

    分散処理 (Spark on YARN): ETL, 学習・推論 Kubernetes環境: GPUノード & CPUノード 分散処理(Ray/KubeRay): - マルチノードGPU学習・推論 - マルチノードCPU推論 シングルノードGPU学習 タスクはデータのI/OをHDFSとするbatch処理
  10. © LY Corporation 13 Scaling 1. 各バッチ・ジョブはAirflowで管理、ジョブ内のタスクを場合に応じて並列化 • カテゴリー毎(<25)の学習や推論 2.

    GBDTの学習/推論はYARN Spark上でSynapseML LightGBM を使用 • 学習は並列/直列でOptunaでハイパーパラメーター探索 3. Embedding model/ DNNの学習・推論はRay clusterはKubeRayを使用 • タスク単位でRayクラスター(GPU + CPU or CPU)を独立にデプロイ • タスク毎のデータ量に応じてGPUやCPUの学習の並列数やデバイス・タイプを 設定
  11. © LY Corporation 14 Item-to-Item ジョブ・パイプライン CF (ETL) データ 処理

    (ETL) Spark/T rino A: Emb学習 GPU Ray/KubeRay A:Emb 推論 CPU Ray/KubeRay B-1:GBDT推論 CPU: Spark/YARN B-1: GBDT 学習 CPU: Spark/YARN B-2: DNN推論 CPU: Ray/KubeRay B-1:DNN学習 GPU: Ray/KubeRay C:BERT学習 GPU C:BERT推論 GPU:Ray/KubeRay
  12. © LY Corporation 15 ML実行環境 1. 基本的にはnotebook + papermillでタスク実行 •

    実行結果でレポーティング(実行結果・グラフなどの可視化) • 開発と本番の実行環境が近い:エラーの再現・解決やオンボーディングが容易 2. 主なバッチ・ジョブは隔日程度で実行. 各ジョブを結果の再利用や再実行が容易な タスク毎に分解 • 計算リソースの制約 + メンテナンス対応 • A/Bテストのタスクの挿入を容易に 3. メトリック・モニターと学習モデルの自動更新 • タスク分割により、手動更新・介入も容易に
  13. © LY Corporation 16 MLシステムの更新: 1/2 今まで5年++ MLシステムを発展的に運用 Retrieval model:

    2回の大規模更新 (PyTorch/Pairwise -> TensorFlow/Listwise), Ray cluster導入 Ranking model: GBDT on YARN Spark: XGBoost → LightGBM : Scala->Python DNN: single node GPU 学習 + Spark on YARN推論(Intel BigDL) → Ray cluster (マルチノードGPU学習、マルチノードCPU推論) Airflow, Spark, Rayなどの更新対応、社内のプラットフォームのEOL対応 更新前のシステムとメトリック・KPIが低下しないかをテストしつつ更新・追加
  14. © LY Corporation 17 MLシステム更新: 2/2 MLモデル + システム: ハイパースケーラーやトップアカデミアの論文

    vs 現場 - リソースの非対称性:計算資源と人的資源 - データの質と規模の乖離: 実データ vs ベンチマーク、異なるサービス 目的の優先度:メトリック, 安定性、コスト、汎用性, などなど 運用: デバッグや改善サイクルの実施可能性: pip install fancy_recsys パイプラインのスケールアップ、安定性・再実行性: End-to-End→分離、チェックポイント 技術的な負債と返済: i.e. *_recommenders, *_ranking
  15. © LY Corporation 18 まとめ • Yahoo!ショッピングのレコメンデーション・システムは多段構成 • Item-to-itemのbatch処理では、主にretrieval model、ranking

    modelのMLモ デルが連携 • オンプレミスのHadoopとKubernetes環境でAirflowを用いてジョブを管理・ 実行 • MLシステムの更新は、KPI維持と運用上の課題解決を両立させながら実施
  16. © LY Corporation 19 Materials References • https://techblog.lycorp.co.jp/ja/20250129a • https://medium.com/@Jason.dai/optimized-large-scale-item-search-with-intel-bigdl-at-yahoo-Japan-shopping-

    c2399801a143 Logos Apache project logos Hadoop, Spark, Airflow: https://www.apache.org/logos/ Kubernetes https://github.com/Kubernetes/Kubernetes/tree/master/logo Ray: https://raw.githubusercontent.com/ray-project/ray/master/doc/source/images/