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

20221116_MLOps勉強会_クックパッドマートにおける推薦タスクとMLOps

 20221116_MLOps勉強会_クックパッドマートにおける推薦タスクとMLOps

第25回 MLOps 勉強会 でお話した内容です。
https://mlops.connpass.com/event/262549/

Yusuke Fukasawa

November 16, 2022
Tweet

More Decks by Yusuke Fukasawa

Other Decks in Technology

Transcript

  1. © 2022 Cookpad Inc. 2 Speaker
 • Yusuke Fukasawa (

    twitter @fukkaa1225 ) 
 ◦ 自然言語処理・レコメンド・テーブルデータ
 • 前職: リクルート
 ◦ 中途転職サイトでの機械学習システム開発
 ◦ サイト横断データの分析、モデル開発
 • 現職: クックパッド
 ◦ クックパッドマートにおけるレコメンド
 ◦ レシピタイトルから材料を推薦するモデル
 ◦ 2021年は新卒エンジニア採用担当も兼任
 • 趣味はテニス・ゲーム 
 ◦ どちらも試合のデータを記録するのが趣味 
 ◦ Apex の様子→

  2. © 2022 Cookpad Inc. 7 Cookpad R&D Department
 https://research.cookpad.com 人数は多くないですが、広い分野を担える人材が

    揃っています
 • データ分析・レポーティング 
 • モデルの開発
 • プロダクトへの実装
 • 関わった施策の効果測定 
 • 社内ツールの開発・OSS公開 
 • 論文執筆・研究発表 

  3. © 2022 Cookpad Inc. 13 今日お話する MLOps
 • 推薦モデルの結果をユーザに届けるまでの過程で必要な実装・オペレーションをすべて MLOps

    と捉 えて話します
 ◦ モデルを開発する際に 
 ▪ 再現性・実験管理はどうしているのか 
 ▪ コードの治安をどのように保っているのか 
 ◦ モデルをデプロイする際に 
 ▪ モデルを定期的に更新しているのか、しているならどうやっているのか 
 ▪ 定期実行に必要なデータはどこにあって、どのように取得しているのか 
 ▪ モデルはどんな環境で動かしているのか 
 ◦ モデルを運用する際に 
 ▪ 監視をしているのか 
 ▪ どんなメトリクスを見ているのか 

  4. © 2022 Cookpad Inc. 15 MLOps: Model Development
 • コード管理:

    Git(GHE) 
 • コード構成
 ◦ Makefile で実行タスクを定義 
 ◦ Pysen (black・isort・flake8・mypy) 
 ▪ CI: ghe-actions
 ◦ Poetry
 • Notebook … EDA のみ、極力避ける 
 • 実験管理
 ◦ WandB → MLFlow

  5. © 2022 Cookpad Inc. 16 MLOps: Model Development
 • RecBole


    ◦ Number of Models : 70+ 
 ◦ Build by PyTorch
 ▪ シンプルな実装・比較しやすいメトリクス設計 
 • 必要な準備: 以下の形式でCSVを用意する(+α) 
 ◦ UserID, ItemID, Interaction TimeStamp 

  6. © 2022 Cookpad Inc. 17 MLOps: Model Development
 • Item-to-Item

    Recommend Model: RecVAE 
 ◦ オフライン・オンライン(Interleaving) テストを経て決定
 ◦ Item2Vec → RecVAE でコンバージョン数が数倍に増加
 A User Item1 Item2 Item3 Day a
 Item1 Item2 Item1 Item3 Item2 Item3
  7. © 2022 Cookpad Inc. 18 MLOps: Model Development
 • User-to-Item

    Recommend Model: RecVAE 
 ◦ 同じく RecVAE
 ◦ 現在の実装上、学習データで確認したユーザにしか推薦できない
 ◦ 直近6ヶ月のデータで学習した後、レコメンドが出ていないユーザへの拡 張処理を実施
 注文データ
 (6ヶ月)
 RecVAE 
 を学習
 レコメンドあり
 ユーザ群A
 レコメンドなし
 ユーザ群B
 レコメンドあり
 ユーザ群A
 ユーザ群B について 
 ユーザ群A の誰に近いのか? を 
 全購入履歴データを使って計算 
 (Via Item2Vec)
 推薦結果 を出力
 近傍ユーザに紐づいて 
 レコメンド結果を集約する 
 (直近の販売実績で更に重み付け) 

  8. © 2022 Cookpad Inc. 20 MLOps: Model Deployment
 • パイプラインの殆どが社内で開発されたツールを使用

    
 ◦ バッチ管理システム... Kuroko2 (OSS) 
 ◦ Redshift からのデータ取得... Queuery (OSS) 
 ◦ バッチ実行環境... Hako(OSS) 

  9. © 2022 Cookpad Inc. 21 MLOps: Model Deployment
 • Kuroko2


    ◦ web ベースのバッチ管理システム 
 ▪ OSS https://github.com/cookpad/kuroko2 
 ◦ 主な役割はコンテナの起動・コマンドの実行 
 ▪ 近年のクックパッドのシステムは殆どコンテナで 動い ている
 https://speakerdeck.com/eisuke/kuroko2falsejin-kuang-tokutukupatudofalsebatutizhou-rifalsegai-kuang
  10. © 2022 Cookpad Inc. 22 MLOps: Model Deployment
 • Queuery


    ◦ Redshift に直接接続することなくデータを取得するための仕 組み(OSS)
 ▪ Unload → S3 → Application 
 ▪ with Redshift Data API 
 https://techlife.cookpad.com/entry/2021/12/03/093000 https://github.com/bricolages/queuery_client_python
  11. © 2022 Cookpad Inc. 23 MLOps: Model Deployment
 • Hako

    
 ◦ OSS
 ◦ コンテナを ECS にデプロイするためのツール 
 ◦ jsonnet を書いてデプロイする 
 • Hako-console
 ◦ 社内ツール
 ◦ デプロイすると専用のページが生成される 
 ◦ そこからメトリクス監視の Grafana などを確認できる 
 https://github.com/eagletmt/hako/blob/master/examples/hello.jsonnet
  12. © 2022 Cookpad Inc. 25 MLOps: Monitoring
 • オフラインテスト指標 


    ◦ RecBole に定義されたメトリクスを使用 
 ▪ NDCG@k
 ▪ MRR@k
 ▪ Precision@k
 ▪ Recall@k
 ▪ Hits@k
 ▪ AveragePopularity@k 
 ▪ ItemCoverage@k
 • オンライン指標
 ◦ レコメンド経由でのカート追加数 
 ◦ Tableau で追跡

  13. © 2022 Cookpad Inc. 26 MLOps: Offline Metrics Monitoring
 •

    社内ツール: Metrics Tracer 
 ◦ S3 にあるメトリクス(json) を取得し可視化 
 ◦ TODO: サマリーレポート・異常検知・slack 通知 

  14. © 2022 Cookpad Inc. 27 MLOps: Data Drift Monitoring(Future Work)


    • データドリフトのモニタリング → × 
 ◦ Evidently AI・Whylogs が対応していない
 • レコメンドの入力データ→ user-item のインタラクションを観測する ことが重要
 ◦ ネットワークグラフ的なデータだと言える
 ◦ そのため、現状は利用できるOSSがない
 • RecBole が計算してくれる Basic Stats を利用していきたい 
 RecBole が計算している Basic Stats