Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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