Slide 1

Slide 1 text

© 2022 Cookpad Inc. クックパッドマートにおける
 推薦タスクとMLOps
 Recommendation and MLOps at Cookpad-Mart 2022/11/16 Cookpad R&D Department Yusuke Fukasawa

Slide 2

Slide 2 text

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


Slide 3

Slide 3 text

© 2022 Cookpad Inc. 3 Cookpad
 https://speakerdeck.com/cookpadhr/cookpad-introduction

Slide 4

Slide 4 text

© 2022 Cookpad Inc. 4 Cookpad
 https://speakerdeck.com/cookpadhr/cookpad-introduction

Slide 5

Slide 5 text

© 2022 Cookpad Inc. 5 Cookpad
 https://speakerdeck.com/cookpadhr/cookpad-introduction

Slide 6

Slide 6 text

© 2022 Cookpad Inc. 6 Cookpad-Mart
 https://speakerdeck.com/cookpadhr/cookpad-introduction

Slide 7

Slide 7 text

© 2022 Cookpad Inc. 7 Cookpad R&D Department
 https://research.cookpad.com 人数は多くないですが、広い分野を担える人材が 揃っています
 ● データ分析・レポーティング 
 ● モデルの開発
 ● プロダクトへの実装
 ● 関わった施策の効果測定 
 ● 社内ツールの開発・OSS公開 
 ● 論文執筆・研究発表 


Slide 8

Slide 8 text

Recommendation at Cookpad-Mart
 © 2022 Cookpad Inc. 8

Slide 9

Slide 9 text

© 2022 Cookpad Inc. 9 Item-to-Item Recommendation
 ● 商品詳細下部に「よく一緒に購入されている商 品」を表示する


Slide 10

Slide 10 text

© 2022 Cookpad Inc. 10 User-to-Item Recommendation
 ● ユーザごとに、お気に入りタブに推薦商品を表 示する
 ● アーキテクチャ・モデル共に Item-to-Itemと同 じ


Slide 11

Slide 11 text

© 2022 Cookpad Inc. 11 Overview


Slide 12

Slide 12 text

今日お話する MLOps
 © 2022 Cookpad Inc. 12

Slide 13

Slide 13 text

© 2022 Cookpad Inc. 13 今日お話する MLOps
 ● 推薦モデルの結果をユーザに届けるまでの過程で必要な実装・オペレーションをすべて MLOps と捉 えて話します
 ○ モデルを開発する際に 
 ■ 再現性・実験管理はどうしているのか 
 ■ コードの治安をどのように保っているのか 
 ○ モデルをデプロイする際に 
 ■ モデルを定期的に更新しているのか、しているならどうやっているのか 
 ■ 定期実行に必要なデータはどこにあって、どのように取得しているのか 
 ■ モデルはどんな環境で動かしているのか 
 ○ モデルを運用する際に 
 ■ 監視をしているのか 
 ■ どんなメトリクスを見ているのか 


Slide 14

Slide 14 text

MLOps: Model Development
 © 2022 Cookpad Inc. 14

Slide 15

Slide 15 text

© 2022 Cookpad Inc. 15 MLOps: Model Development
 ● コード管理: Git(GHE) 
 ● コード構成
 ○ Makefile で実行タスクを定義 
 ○ Pysen (black・isort・flake8・mypy) 
 ■ CI: ghe-actions
 ○ Poetry
 ● Notebook … EDA のみ、極力避ける 
 ● 実験管理
 ○ WandB → MLFlow


Slide 16

Slide 16 text

© 2022 Cookpad Inc. 16 MLOps: Model Development
 ● RecBole
 ○ Number of Models : 70+ 
 ○ Build by PyTorch
 ■ シンプルな実装・比較しやすいメトリクス設計 
 ● 必要な準備: 以下の形式でCSVを用意する(+α) 
 ○ UserID, ItemID, Interaction TimeStamp 


Slide 17

Slide 17 text

© 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

Slide 18

Slide 18 text

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


Slide 19

Slide 19 text

MLOps: Model Deployment
 © 2022 Cookpad Inc. 19

Slide 20

Slide 20 text

© 2022 Cookpad Inc. 20 MLOps: Model Deployment
 ● パイプラインの殆どが社内で開発されたツールを使用 
 ○ バッチ管理システム... Kuroko2 (OSS) 
 ○ Redshift からのデータ取得... Queuery (OSS) 
 ○ バッチ実行環境... Hako(OSS) 


Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

© 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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

MLOps: Monitoring
 © 2022 Cookpad Inc. 24

Slide 25

Slide 25 text

© 2022 Cookpad Inc. 25 MLOps: Monitoring
 ● オフラインテスト指標 
 ○ RecBole に定義されたメトリクスを使用 
 ■ NDCG@k
 ■ MRR@k
 ■ Precision@k
 ■ Recall@k
 ■ Hits@k
 ■ AveragePopularity@k 
 ■ ItemCoverage@k
 ● オンライン指標
 ○ レコメンド経由でのカート追加数 
 ○ Tableau で追跡


Slide 26

Slide 26 text

© 2022 Cookpad Inc. 26 MLOps: Offline Metrics Monitoring
 ● 社内ツール: Metrics Tracer 
 ○ S3 にあるメトリクス(json) を取得し可視化 
 ○ TODO: サマリーレポート・異常検知・slack 通知 


Slide 27

Slide 27 text

© 2022 Cookpad Inc. 27 MLOps: Data Drift Monitoring(Future Work)
 ● データドリフトのモニタリング → × 
 ○ Evidently AI・Whylogs が対応していない
 ● レコメンドの入力データ→ user-item のインタラクションを観測する ことが重要
 ○ ネットワークグラフ的なデータだと言える
 ○ そのため、現状は利用できるOSSがない
 ● RecBole が計算してくれる Basic Stats を利用していきたい 
 RecBole が計算している Basic Stats 


Slide 28

Slide 28 text

© 2022 Cookpad Inc. 28

Slide 29

Slide 29 text

© 2022 Cookpad Inc. 29 https://speakerdeck.com/cookpadhr/cookpad-introduction