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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yusuke Fukasawa
November 16, 2022
Technology
1.9k
2
Share
20221116_MLOps勉強会_クックパッドマートにおける推薦タスクとMLOps
第25回 MLOps 勉強会 でお話した内容です。
https://mlops.connpass.com/event/262549/
Yusuke Fukasawa
November 16, 2022
More Decks by Yusuke Fukasawa
See All by Yusuke Fukasawa
ポケモン対戦を自動で 記録する PCBL(Pokémon Champions Battle Logger) の紹介
fufufukakaka
1
120
機械学習で作った ポケモン対戦bot で 遊ぼう!
fufufukakaka
0
230
LLMアプリケーションの透明性について
fufufukakaka
0
230
やるべきときにMLをやる AIエージェント開発
fufufukakaka
2
1.4k
社内データ分析AIエージェントを できるだけ使いやすくする工夫
fufufukakaka
1
1.1k
コミューンのデータ分析AIエージェント「Community Sage」の紹介
fufufukakaka
0
2.6k
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
2.4k
対戦におけるポケモンの “意味変化”を追う_リモートポケモン学会
fufufukakaka
0
290
機械学習を用いたポケモン対戦選出予測
fufufukakaka
2
2.4k
Other Decks in Technology
See All in Technology
Platform Engineering as a Product: Criteria for Improvement and Multi-Tenant Design
kumorn5s
0
400
開発を止めない CI/CD ~CI Visibilityによる継続的最適化~
pensuke628
0
220
テストコードのないプロジェクトにテストを根付かせる
tttol
0
230
なぜハノーバーメッセに行くべきなのか 〜初参加だから語れること〜
tanakaseiya
0
180
オンコールの負荷軽減のためのBits Assistant 活用方法 / How to Use Bits Assistant to Reduce the Workload on On-Call Staff
sms_tech
1
350
AI フレンドリーなエラー監視を TypeScript で実現する
shinyaigeek
2
190
Kaggle未経験社員をメダリストに育てる「AIドラゴン桜」
lycorptech_jp
PRO
0
670
個人の発見を、組織の知恵に 〜生成AI活用を"探索"から"組織の仕組み"へ〜
kintotechdev
2
180
Unlocking the Apps
pimterry
0
120
Anthropic AIネイティブ・スタートアップ構築のプレイブック を理解する
nagatsu
0
230
はじめてのDatadog
kairim0
0
240
AI駆動開発でなんでもハンズオン環境をつくってみた
yoshimi0227
0
180
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.2k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
210
Done Done
chrislema
186
16k
My Coaching Mixtape
mlcsv
0
140
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Believing is Seeing
oripsolob
1
140
Why Our Code Smells
bkeepers
PRO
340
58k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
190
First, design no harm
axbom
PRO
2
1.2k
Navigating Team Friction
lara
192
16k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
190
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