Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20221116_MLOps勉強会_クックパッドマートにおける推薦タスクとMLOps
Search
Yusuke Fukasawa
November 16, 2022
Technology
2
1.7k
20221116_MLOps勉強会_クックパッドマートにおける推薦タスクとMLOps
第25回 MLOps 勉強会 でお話した内容です。
https://mlops.connpass.com/event/262549/
Yusuke Fukasawa
November 16, 2022
Tweet
Share
More Decks by Yusuke Fukasawa
See All by Yusuke Fukasawa
機械学習を用いたポケモン対戦選出予測
fufufukakaka
1
560
Poke_Battle_Logger の紹介: リモポケ学会20230714
fufufukakaka
1
790
Poke_Battle_Loggerの紹介
fufufukakaka
0
230
Cookpad TechConf2022 / Machine-Learning-At-Cookpad-Mart
fufufukakaka
1
3k
RedshiftML in Cookpad
fufufukakaka
2
5.2k
Other Decks in Technology
See All in Technology
JBUG岡山 #6 WordCamp男木島の チームビルディング
takeshifurusato
0
150
ソフトウェアエンジニアリングの知見を活かして データ基盤をいい感じにする on Snowflake [MIERUNE BBQ #10]
mtpooh
2
150
推薦システムを本番導入する上で一番優先すべきだったこと~NewsPicks記事推薦機能の改善事例を元に~
morinota
0
120
ここがすごいよ! AWS Systems Manager!
saichan11
0
1.8k
Classmethod Odyssey 登壇資料
yamahiro
0
390
LINE WORKSへ簡単通知!Incoming Webhookアプリの紹介
mmclsntr
0
110
Azure AI ことはじめ
tsubakimoto_s
0
130
[NIKKEI Tech Talk] KDDI/KAG Scrum & Community for Engineering Training
curanosuke
2
220
AWSで”最小権限の原則”を実現するための考え方 /20240722-ssmjp-aws-least-privilege
opelab
10
4.3k
Azure Pipelinesを使用したCICDベースラインアーキテクチャ実践
yuriemori
0
190
セキュリティ研修 Day1【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
150
Flutter研修【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
160
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.9k
BBQ
matthewcrist
82
9k
Agile that works and the tools we love
rasmusluckow
325
20k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
224
21k
Making the Leap to Tech Lead
cromwellryan
127
8.7k
Gamification - CAS2011
davidbonilla
78
4.9k
Music & Morning Musume
bryan
43
5.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
24
1.8k
The Power of CSS Pseudo Elements
geoffreycrofte
64
5.2k
Unsuck your backbone
ammeep
666
57k
Why Our Code Smells
bkeepers
PRO
332
56k
What's in a price? How to price your products and services
michaelherold
239
11k
Transcript
© 2022 Cookpad Inc. クックパッドマートにおける 推薦タスクとMLOps Recommendation and MLOps at
Cookpad-Mart 2022/11/16 Cookpad R&D Department Yusuke Fukasawa
© 2022 Cookpad Inc. 2 Speaker • Yusuke Fukasawa (
twitter @fukkaa1225 ) ◦ 自然言語処理・レコメンド・テーブルデータ • 前職: リクルート ◦ 中途転職サイトでの機械学習システム開発 ◦ サイト横断データの分析、モデル開発 • 現職: クックパッド ◦ クックパッドマートにおけるレコメンド ◦ レシピタイトルから材料を推薦するモデル ◦ 2021年は新卒エンジニア採用担当も兼任 • 趣味はテニス・ゲーム ◦ どちらも試合のデータを記録するのが趣味 ◦ Apex の様子→
© 2022 Cookpad Inc. 3 Cookpad https://speakerdeck.com/cookpadhr/cookpad-introduction
© 2022 Cookpad Inc. 4 Cookpad https://speakerdeck.com/cookpadhr/cookpad-introduction
© 2022 Cookpad Inc. 5 Cookpad https://speakerdeck.com/cookpadhr/cookpad-introduction
© 2022 Cookpad Inc. 6 Cookpad-Mart https://speakerdeck.com/cookpadhr/cookpad-introduction
© 2022 Cookpad Inc. 7 Cookpad R&D Department https://research.cookpad.com 人数は多くないですが、広い分野を担える人材が
揃っています • データ分析・レポーティング • モデルの開発 • プロダクトへの実装 • 関わった施策の効果測定 • 社内ツールの開発・OSS公開 • 論文執筆・研究発表
Recommendation at Cookpad-Mart © 2022 Cookpad Inc. 8
© 2022 Cookpad Inc. 9 Item-to-Item Recommendation • 商品詳細下部に「よく一緒に購入されている商 品」を表示する
© 2022 Cookpad Inc. 10 User-to-Item Recommendation • ユーザごとに、お気に入りタブに推薦商品を表 示する
• アーキテクチャ・モデル共に Item-to-Itemと同 じ
© 2022 Cookpad Inc. 11 Overview
今日お話する MLOps © 2022 Cookpad Inc. 12
© 2022 Cookpad Inc. 13 今日お話する MLOps • 推薦モデルの結果をユーザに届けるまでの過程で必要な実装・オペレーションをすべて MLOps
と捉 えて話します ◦ モデルを開発する際に ▪ 再現性・実験管理はどうしているのか ▪ コードの治安をどのように保っているのか ◦ モデルをデプロイする際に ▪ モデルを定期的に更新しているのか、しているならどうやっているのか ▪ 定期実行に必要なデータはどこにあって、どのように取得しているのか ▪ モデルはどんな環境で動かしているのか ◦ モデルを運用する際に ▪ 監視をしているのか ▪ どんなメトリクスを見ているのか
MLOps: Model Development © 2022 Cookpad Inc. 14
© 2022 Cookpad Inc. 15 MLOps: Model Development • コード管理:
Git(GHE) • コード構成 ◦ Makefile で実行タスクを定義 ◦ Pysen (black・isort・flake8・mypy) ▪ CI: ghe-actions ◦ Poetry • Notebook … EDA のみ、極力避ける • 実験管理 ◦ WandB → MLFlow
© 2022 Cookpad Inc. 16 MLOps: Model Development • RecBole
◦ Number of Models : 70+ ◦ Build by PyTorch ▪ シンプルな実装・比較しやすいメトリクス設計 • 必要な準備: 以下の形式でCSVを用意する(+α) ◦ UserID, ItemID, Interaction TimeStamp
© 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
© 2022 Cookpad Inc. 18 MLOps: Model Development • User-to-Item
Recommend Model: RecVAE ◦ 同じく RecVAE ◦ 現在の実装上、学習データで確認したユーザにしか推薦できない ◦ 直近6ヶ月のデータで学習した後、レコメンドが出ていないユーザへの拡 張処理を実施 注文データ (6ヶ月) RecVAE を学習 レコメンドあり ユーザ群A レコメンドなし ユーザ群B レコメンドあり ユーザ群A ユーザ群B について ユーザ群A の誰に近いのか? を 全購入履歴データを使って計算 (Via Item2Vec) 推薦結果 を出力 近傍ユーザに紐づいて レコメンド結果を集約する (直近の販売実績で更に重み付け)
MLOps: Model Deployment © 2022 Cookpad Inc. 19
© 2022 Cookpad Inc. 20 MLOps: Model Deployment • パイプラインの殆どが社内で開発されたツールを使用
◦ バッチ管理システム... Kuroko2 (OSS) ◦ Redshift からのデータ取得... Queuery (OSS) ◦ バッチ実行環境... Hako(OSS)
© 2022 Cookpad Inc. 21 MLOps: Model Deployment • Kuroko2
◦ web ベースのバッチ管理システム ▪ OSS https://github.com/cookpad/kuroko2 ◦ 主な役割はコンテナの起動・コマンドの実行 ▪ 近年のクックパッドのシステムは殆どコンテナで 動い ている https://speakerdeck.com/eisuke/kuroko2falsejin-kuang-tokutukupatudofalsebatutizhou-rifalsegai-kuang
© 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
© 2022 Cookpad Inc. 23 MLOps: Model Deployment • Hako
◦ OSS ◦ コンテナを ECS にデプロイするためのツール ◦ jsonnet を書いてデプロイする • Hako-console ◦ 社内ツール ◦ デプロイすると専用のページが生成される ◦ そこからメトリクス監視の Grafana などを確認できる https://github.com/eagletmt/hako/blob/master/examples/hello.jsonnet
MLOps: Monitoring © 2022 Cookpad Inc. 24
© 2022 Cookpad Inc. 25 MLOps: Monitoring • オフラインテスト指標
◦ RecBole に定義されたメトリクスを使用 ▪ NDCG@k ▪ MRR@k ▪ Precision@k ▪ Recall@k ▪ Hits@k ▪ AveragePopularity@k ▪ ItemCoverage@k • オンライン指標 ◦ レコメンド経由でのカート追加数 ◦ Tableau で追跡
© 2022 Cookpad Inc. 26 MLOps: Offline Metrics Monitoring •
社内ツール: Metrics Tracer ◦ S3 にあるメトリクス(json) を取得し可視化 ◦ TODO: サマリーレポート・異常検知・slack 通知
© 2022 Cookpad Inc. 27 MLOps: Data Drift Monitoring(Future Work)
• データドリフトのモニタリング → × ◦ Evidently AI・Whylogs が対応していない • レコメンドの入力データ→ user-item のインタラクションを観測する ことが重要 ◦ ネットワークグラフ的なデータだと言える ◦ そのため、現状は利用できるOSSがない • RecBole が計算してくれる Basic Stats を利用していきたい RecBole が計算している Basic Stats
© 2022 Cookpad Inc. 28
© 2022 Cookpad Inc. 29 https://speakerdeck.com/cookpadhr/cookpad-introduction