116 Views
January 12, 21
スライド概要
Yahoo! JAPANトップページでは、ユーザーの興味関心に応えるレコメンドをタイムラインとして提供しています。
本セッションでは、トップページタイムラインにおけるレコメンドの特徴と、高精度なレコメンドモデルを利用するに当たって避けられない技術的課題、そして技術的課題を解決するために採用しているロジックについてご紹介します。また、安定稼働するシステムを提供するための取り組みに関してもご紹介します。
Yahoo! JAPAN Tech Conference 2021 は2021年1月22日に開催しました。
https://techconference.yahoo.co.jp/2021/
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
トップページタイムラインの裏側 ~ www.yahoo.co.jpのレコメンドはどのように作られているか ~ ヤフー株式会社 メディア統括本部 メディアプラットフォーム開発本部 加藤 慎悟 ©2021 Yahoo Japan Corporation All rights reserved.
加藤 慎悟 メディアプラットフォーム開発本部 2018年新卒入社 メディア系のレコメンドシステムを開発しています (トップページ、ニュースなど) 趣味は料理と散歩です 犬より猫派です ©2021 Yahoo Japan Corporation All rights reserved.
このセッションについて Yahoo! JAPANトップページタイムラインの特徴はなにか 技術的な難しさはどこで、どんなロジック/システムで実現しているか ©2021 Yahoo Japan Corporation All rights reserved.
Yahoo! JAPANトップページタイムラインの紹介 ©2021 Yahoo Japan Corporation All rights reserved.
Yahoo! JAPANトップページタイムラインの紹介 Yahoo! JAPANトップページ お手元の端末で www.yahoo.co.jp をご覧ください (他にもiOS、Androidでアプリがあります) ©2021 Yahoo Japan Corporation All rights reserved.
Yahoo! JAPANトップページタイムラインの紹介 Yahoo! JAPANトップページのタイムライン タイムライン:スクロールすると次々出てくる記事リスト ©2021 Yahoo Japan Corporation All rights reserved.
Yahoo! JAPANトップページタイムラインの紹介 タイムラインで日本をもっと便利に 良いタイムラインは日々の生活を豊かにします • 気になる情報で、退屈しらずで楽しく時間を過ごせる • お得な情報で、週末の行動が変わる • 知らなかった情報で、世の中の見方がすこし変わる スクロール中に「どれからみようかな、あれもこれも気になる……」と 迷うくらいのタイムラインを届けたいと考えています ©2021 Yahoo Japan Corporation All rights reserved.
Yahoo! JAPANトップページタイムラインの紹介 最近のトピック 新しいタイムラインが続々提供されています。ぜひつかってみてください! • タブ追加機能:グルメ、ファッションなど14種類のタブが追加 好きなタブを選んで表示できる • 地域タブ:設定した地域のタブが追加 新機能 好みのタブが 追加できる https://about.yahoo.co.jp/pr/release/2020/09/23a/ 新機能 地域タブで くらしを豊かに https://about.yahoo.co.jp/pr/release/2020/10/06b/ ©2021 Yahoo Japan Corporation All rights reserved.
トップページタイムラインの特徴 ©2021 Yahoo Japan Corporation All rights reserved.
トップページタイムラインの特徴 Yahoo! JAPANトップページタイムラインの特徴 1. ユーザーひとりひとりの興味関心に応じたレコメンドを提供 2. 作成されたばかりの記事もレコメンドとして提供 ©2021 Yahoo Japan Corporation All rights reserved.
トップページタイムラインの特徴 特徴1 ひとりひとりの興味関心に応じたレコメンド ユーザーの履歴を利用してひとりひとりの興味関心に応じたレコメンドを作成 年代ごと、性別ごと、クラスタごと、ではなく 本当にひとりひとりの興味に応じたタイムラインになっている! 使えば使うほど興味にマッチしたレコメンドが出るようになっている ©2021 Yahoo Japan Corporation All rights reserved.
トップページタイムラインの特徴 特徴2 作成されたばかりの記事もレコメンド 新しく作成された記事がすぐにレコメンドの対象になる 「1時間ごとに反映」「半日ごとに反映」ではない トップページタイムラインの記事は鮮度が重要! 新しい記事もすぐレコメンドの対象になってタイムラインに出る ©2021 Yahoo Japan Corporation All rights reserved.
トップページタイムラインの特徴 Yahoo! JAPANトップページタイムラインの特徴 1. ユーザーひとりひとりの興味関心に応じたレコメンドを提供 2. 作成されたばかりの記事もレコメンドとして提供 ユーザー目線だと両方当然に思えるが、 実現するシステムを作るのは容易ではない ©2021 Yahoo Japan Corporation All rights reserved.
トップページタイムラインの特徴 レコメンドシステムに求められること 二点の特徴を実現しようとすると かなり欲張ったシステムを作らざるをえない 想定リクエスト数 • 数千 requests / sec (日中平常時) • 数千 requests * 2 / sec (デイリーピーク時) • 数千 requests * n / sec (Push通知時) レイテンシ • 数十ミリ秒 (平均) • 数百ミリ秒 (99%ile) 機械学習を利用した高精度なレコメンドを作成・返却 ©2021 Yahoo Japan Corporation All rights reserved.
トップページタイムラインの特徴 リクエスト数について ユーザーごとのレコメンドを提供したいので 作成したレコメンドを使い回すことができない レコメンドシステムへのリクエスト数は タイムラインのリクエスト数と同程度になる (つまりとても多い) 想定リクエスト数 • 数千 requests / sec (日中平常時) • 数千 requests * 2 / sec (デイリーピーク時) • 数千 requests * n / sec (Push通知時) レイテンシ • 数十ミリ秒 (平均) • 数百ミリ秒 (99%ile) 機械学習を利用した高精度なレコメンドを作成・返却 ©2021 Yahoo Japan Corporation All rights reserved.
トップページタイムラインの特徴 レイテンシについて 最新の記事をレコメンドするために、 リアルタイムにレコメンドを作成している (あらかじめ作り置きすると時差が発生する) ユーザーがトップページを開いてからタイムラ インを表示するまでの一瞬で、 最適化されたレコメンドを作成する必要がある 想定リクエスト数 • 数千 requests / sec (日中平常時) • 数千 requests * 2 / sec (デイリーピーク時) • 数千 requests * n / sec (Push通知時) レイテンシ • 数十ミリ秒 (平均) • 数百ミリ秒 (99%ile) 機械学習を利用した高精度なレコメンドを作成・返却 ©2021 Yahoo Japan Corporation All rights reserved.
トップページタイムラインの特徴 レコメンドについて リクエスト数やレイテンシの要求が厳しいが、 簡単なロジックやモデルでレコメンドしたら本 末転倒 複雑で高精度なモデルを利用したレコメンドを 提供したい 想定リクエスト数 • 数千 requests / sec (日中平常時) • 数千 requests * 2 / sec (デイリーピーク時) • 数千 requests * n / sec (Push通知時) レイテンシ • 数十ミリ秒 (平均) • 数百ミリ秒 (99%ile) 機械学習を利用した高精度なレコメンドを作成・返却 ©2021 Yahoo Japan Corporation All rights reserved.
トップページタイムラインの特徴 考えるべきポイントとその対策 ポイント • レイテンシの制約が厳しい • リクエスト数が多く安定性の面で不安 • どうしても運用が重くなる 対策 • ベクトルを利用したレコメンド • 検索エンジンの利用 想定リクエスト数 • 数千 requests / sec (日中平常時) • 数千 requests * 2 / sec (デイリーピーク時) • 数千 requests * n / sec (Push通知時) レイテンシ • 数十ミリ秒 (平均) • 数百ミリ秒 (99%ile) 機械学習を利用した高精度なレコメンドを作成・返却 ©2021 Yahoo Japan Corporation All rights reserved.
ベクトルを利用したレコメンド ©2021 Yahoo Japan Corporation All rights reserved.
ベクトルを利用したレコメンド レコメンドロジック 1. 記事内容の特徴を抽出 → 「記事ベクトル」 2. ユーザーの嗜好を抽出 → 「ユーザーベクトル」 3. 作成したベクトルを使って、ユーザーが興味ありそうな記事を推薦 ©2021 Yahoo Japan Corporation All rights reserved.
ベクトルを利用したレコメンド 記事ベクトルの作成 記事タイトル・本文を用いて、記事内容が集約された「記事ベクトル」を作成 あらかじめ、記事を在庫に追加するタイミングで作成 記事 タイトル 本文 賢い単語表現 賢いAttention 賢い単語表現 賢いAttention 効率的に記事内容が抽出されたベクトル表現 Self Attention BERT ©2021 Yahoo Japan Corporation All rights reserved.
ベクトルを利用したレコメンド ユーザーベクトルの作成 ユーザーの閲覧履歴を用いて、ユーザーの嗜好が集約された「ユーザーベクトル」を作成 あらかじめ、定期的なバッチ処理で全てのユーザーについて作成 ニュース閲覧履歴 記事ベクトル 賢い興味嗜好の集約 現在の興味嗜好の反映されたベクトル表現 RNN LSTM GRU ©2021 Yahoo Japan Corporation All rights reserved.
ベクトルを利用したレコメンド レコメンドの計算 ユーザーのリクエストに同期で実行する唯一の処理 最新の在庫記事に対して記事ベクトルとユーザーベクトルの内積を計算。内積が大きい順に掲出 掲出対象のニュース 記事ベクトル ユーザーへのレコメンド ユーザーベクトル ©2021 Yahoo Japan Corporation All rights reserved.
ベクトルを利用したレコメンド ※ ロジックの詳細について 興味のある方は以下発表をご確認ください (現在のモデルと基本は同じはずです) Okura, Shumpei, et al. "Embedding-based news recommendation for millions of users." Proceedings of the 23rd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 2017. ベクトル間の内積でランキングするだけだと発生する問題にも対応している • 似たような話題ばかりが出てしまう → 記事ベクトルを利用した類似情報の抑制 • Hotな話題が出ない → PV予測値によるスコアのブースト ©2021 Yahoo Japan Corporation All rights reserved.
ベクトルを利用したレコメンド レコメンドの計算 ユーザーのリクエストに同期で実行する唯一の処理 最新の在庫記事に対して記事ベクトルとユーザーベクトルの内積を計算。内積が大きい順に掲出 複雑で高精度な機械学習モデルを利用したレコメンドが、 ごく簡単な処理に落とし込まれている!! システムとして実装・運用する上で非常に重要なポイント! ©2021 Yahoo Japan Corporation All rights reserved.
ベクトルを利用したレコメンド レイテンシに効く レコメンドが簡単な処理で実現できると・・・ 低レイテンシ (数十ミリ秒) でのレコメンド作成が現実的になる! • ベクトルの次元数と記事数、二つの要素に計算量が依存する • 適切に値を定めれば、低レイテンシでレコメンドを作成できる ©2021 Yahoo Japan Corporation All rights reserved.
ベクトルを利用したレコメンド 安定稼働に効く レコメンドが簡単な処理で実現できると・・・ 数千 requests / sec の安定稼働が現実的になる! • 記事やユーザーの情報、モデルなど変動しやすく見積もりが難しい要素に計算量が依存しない • どのくらいのリソースを確保すればどれくらいのリクエストが捌けるか見積もりが立つ ©2021 Yahoo Japan Corporation All rights reserved.
ベクトルを利用したレコメンド 高精度なモデル作成に効く レコメンドが簡単な処理で実現できると・・・ モデル改善に必要なオンライン検証のハードルが下がる! • モデルを変えるとレイテンシやCPU使用率が変わる場合 • 「新しいモデル試したいんですけど」→「システム影響調査する時間ないから厳しいです」 • モデルを変えてもレイテンシやCPU使用率が変わらないわれわれの場合 • 「新しいモデル試しますね」→「了解です!」 ©2021 Yahoo Japan Corporation All rights reserved.
ベクトルを利用したレコメンド 運用負荷軽減に効く レコメンドが簡単な処理で実現できると・・・ 検索エンジンを利用したレコメンド作成がやりやすくなる! • (がんばれば) 汎用の検索エンジンでレコメンド作成を実行できる • フルマネージドな検索エンジンを利用することで運用負荷を下げられる! ©2021 Yahoo Japan Corporation All rights reserved.
検索エンジンの利用 ©2021 Yahoo Japan Corporation All rights reserved.
検索エンジンの利用 検索エンジンの利用 レコメンドの作成処理はApache Solrとそのプラグインで実行している 周囲を取り巻くシステムも存在するが、レコメンドシステムの核は検索エンジン 記事評価API群 更新通知MQ 記事Feeder 検索エンジン ユーザーベクトル DB ユーザー レコメンドAPI 1. 記事が入稿される 2. 記事評価を実行 (記事ベクトルなど作成) 3. 検索エンジンを更新 1. ユーザーからリクエストを受ける 2. ユーザーベクトルを取得する 3. 検索エンジンにリクエストする 4. レスポンスをユーザーに返却 ©2021 Yahoo Japan Corporation All rights reserved.
検索エンジンの利用 社内プラットフォームの利用 • フルマネージドなSolrクラスタを提供する社内プラットフォームが提供されている • 簡単な手続きでSolrのクラスタが利用できる。運用もすべてお任せ • 社内のPFなのでイレギュラーな要求にもある程度応えてもらえる Solr ©2021 Yahoo Japan Corporation All rights reserved.
検索エンジンの利用 イレギュラーな要求 負荷が高い • 一般的に、検索エンジンの処理はマッチング→ランキング • ほぼ全件マッチした状態でランキングしている、しかもそもそも内積計算が重い → リソースを積んでもらって解決 素のSolrにない機能が欲しい • 利用しているロジックの全てがSolrの機能で実現できるわけではない • 内積の計算だけならできなくはないが、他にもロジックは存在している → 社内の専門チームと連携してプラグイン開発をしてもらって解決 ©2021 Yahoo Japan Corporation All rights reserved.
検索エンジンの利用 安定稼働のためにやっていること パフォーマンステストを徹底している • リソースが十分かは試してみないとわからない • パフォーマンステスト用のクラスタを使って最悪条件で必ず事前に実施する • レイテンシ・リクエスト数の要求に余裕をもって耐えられないならリソースを積む クエリ設計 パフォーマンス テスト リソース追加 改修・リリース ©2021 Yahoo Japan Corporation All rights reserved.
まとめ ©2021 Yahoo Japan Corporation All rights reserved.
まとめ • Yahoo! JAPANトップページタイムラインは、ユーザーひとりひとりの興味関心に応じたレ コメンドをリアルタイムに作成して提供している • あらかじめ作成した記事ベクトル・ユーザーベクトルを利用することで、複雑な機械学習モ デルによるレコメンド作成を、単純な処理に落としこんでいる • レコメンド作成の処理を検索エンジンで実行することで、運用負荷を下げつつ、安定稼働を 提供している ©2021 Yahoo Japan Corporation All rights reserved.
Yahoo! JAPAN Tech Conference 2021 ©2021 Yahoo Japan Corporation All rights reserved.