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.9k
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
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
1.2k
対戦におけるポケモンの “意味変化”を追う_リモートポケモン学会
fufufukakaka
0
210
機械学習を用いたポケモン対戦選出予測
fufufukakaka
1
1.3k
Poke_Battle_Logger の紹介: リモポケ学会20230714
fufufukakaka
1
1k
Poke_Battle_Loggerの紹介
fufufukakaka
0
380
Cookpad TechConf2022 / Machine-Learning-At-Cookpad-Mart
fufufukakaka
1
3.4k
RedshiftML in Cookpad
fufufukakaka
2
7.9k
Other Decks in Technology
See All in Technology
はじめての OSS コントリビューション 〜小さな PR が世界を変える〜
chiroito
3
190
Redux → Recoil → Zustand → useSyncExternalStore: 状態管理の10年とReact本来の姿
zozotech
PRO
9
4.4k
Black Hat USA 2025 Recap ~ クラウドセキュリティ編 ~
kyohmizu
0
520
「データ無い! 腹立つ! 推論する!」から 「データ無い! 腹立つ! データを作る」へ チームでデータを作り、育てられるようにするまで / How can we create, use, and maintain data ourselves?
moznion
7
3.7k
マイクロリブート ~ACEマインドセットで実現するアジャイル~
sony
0
270
us-east-1 の障害が 起きると なぜ ソワソワするのか
miu_crescent
PRO
2
810
コンピューティングリソース何を使えばいいの?
tomokusaba
1
140
コミュニティと共に変化する 私とFusicの8年間
ayasamind
0
450
フライトコントローラPX4の中身(制御器)を覗いてみた
santana_hammer
1
140
re:Invent完全攻略ガイド
junjikoide
1
280
Spring Boot利用を前提としたJavaライブラリ開発方法の提案
kokihoshihara
PRO
2
140
AIと共に開発する時代の組織、プロセス設計 freeeでの実践から見えてきたこと
freee
3
600
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
How GitHub (no longer) Works
holman
315
140k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
How to Ace a Technical Interview
jacobian
280
24k
Making Projects Easy
brettharned
120
6.4k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
How to train your dragon (web standard)
notwaldorf
97
6.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
320
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