Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20221116_MLOps勉強会_クックパッドマートにおける推薦タスクとMLOps

 20221116_MLOps勉強会_クックパッドマートにおける推薦タスクとMLOps

第25回 MLOps 勉強会 でお話した内容です。
https://mlops.connpass.com/event/262549/

Yusuke Fukasawa

November 16, 2022
Tweet

More Decks by Yusuke Fukasawa

Other Decks in Technology

Transcript

  1. © 2022 Cookpad Inc.
    クックパッドマートにおける

    推薦タスクとMLOps

    Recommendation and MLOps at Cookpad-Mart
    2022/11/16
    Cookpad R&D Department
    Yusuke Fukasawa

    View full-size slide

  2. © 2022 Cookpad Inc. 2
    Speaker

    ● Yusuke Fukasawa ( twitter @fukkaa1225 ) 

    ○ 自然言語処理・レコメンド・テーブルデータ

    ● 前職: リクルート

    ○ 中途転職サイトでの機械学習システム開発

    ○ サイト横断データの分析、モデル開発

    ● 現職: クックパッド

    ○ クックパッドマートにおけるレコメンド

    ○ レシピタイトルから材料を推薦するモデル

    ○ 2021年は新卒エンジニア採用担当も兼任

    ● 趣味はテニス・ゲーム 

    ○ どちらも試合のデータを記録するのが趣味 

    ○ Apex の様子→


    View full-size slide

  3. © 2022 Cookpad Inc. 3
    Cookpad

    https://speakerdeck.com/cookpadhr/cookpad-introduction

    View full-size slide

  4. © 2022 Cookpad Inc. 4
    Cookpad

    https://speakerdeck.com/cookpadhr/cookpad-introduction

    View full-size slide

  5. © 2022 Cookpad Inc. 5
    Cookpad

    https://speakerdeck.com/cookpadhr/cookpad-introduction

    View full-size slide

  6. © 2022 Cookpad Inc. 6
    Cookpad-Mart

    https://speakerdeck.com/cookpadhr/cookpad-introduction

    View full-size slide

  7. © 2022 Cookpad Inc. 7
    Cookpad R&D Department

    https://research.cookpad.com
    人数は多くないですが、広い分野を担える人材が
    揃っています

    ● データ分析・レポーティング 

    ● モデルの開発

    ● プロダクトへの実装

    ● 関わった施策の効果測定 

    ● 社内ツールの開発・OSS公開 

    ● 論文執筆・研究発表 


    View full-size slide

  8. Recommendation at Cookpad-Mart

    © 2022 Cookpad Inc. 8

    View full-size slide

  9. © 2022 Cookpad Inc. 9
    Item-to-Item Recommendation

    ● 商品詳細下部に「よく一緒に購入されている商
    品」を表示する


    View full-size slide

  10. © 2022 Cookpad Inc. 10
    User-to-Item Recommendation

    ● ユーザごとに、お気に入りタブに推薦商品を表
    示する

    ● アーキテクチャ・モデル共に Item-to-Itemと同
    じ


    View full-size slide

  11. © 2022 Cookpad Inc. 11
    Overview


    View full-size slide

  12. 今日お話する MLOps

    © 2022 Cookpad Inc. 12

    View full-size slide

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

    ● 推薦モデルの結果をユーザに届けるまでの過程で必要な実装・オペレーションをすべて MLOps と捉
    えて話します

    ○ モデルを開発する際に 

    ■ 再現性・実験管理はどうしているのか 

    ■ コードの治安をどのように保っているのか 

    ○ モデルをデプロイする際に 

    ■ モデルを定期的に更新しているのか、しているならどうやっているのか 

    ■ 定期実行に必要なデータはどこにあって、どのように取得しているのか 

    ■ モデルはどんな環境で動かしているのか 

    ○ モデルを運用する際に 

    ■ 監視をしているのか 

    ■ どんなメトリクスを見ているのか 


    View full-size slide

  14. MLOps: Model Development

    © 2022 Cookpad Inc. 14

    View full-size slide

  15. © 2022 Cookpad Inc. 15
    MLOps: Model Development

    ● コード管理: Git(GHE) 

    ● コード構成

    ○ Makefile で実行タスクを定義 

    ○ Pysen (black・isort・flake8・mypy) 

    ■ CI: ghe-actions

    ○ Poetry

    ● Notebook … EDA のみ、極力避ける 

    ● 実験管理

    ○ WandB → MLFlow


    View full-size slide

  16. © 2022 Cookpad Inc. 16
    MLOps: Model Development

    ● RecBole

    ○ Number of Models : 70+ 

    ○ Build by PyTorch

    ■ シンプルな実装・比較しやすいメトリクス設計 

    ● 必要な準備: 以下の形式でCSVを用意する(+α) 

    ○ UserID, ItemID, Interaction TimeStamp 


    View full-size slide

  17. © 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

    View full-size slide

  18. © 2022 Cookpad Inc. 18
    MLOps: Model Development

    ● User-to-Item Recommend Model: RecVAE 

    ○ 同じく RecVAE

    ○ 現在の実装上、学習データで確認したユーザにしか推薦できない

    ○ 直近6ヶ月のデータで学習した後、レコメンドが出ていないユーザへの拡
    張処理を実施

    注文データ

    (6ヶ月)

    RecVAE 

    を学習

    レコメンドあり

    ユーザ群A

    レコメンドなし

    ユーザ群B

    レコメンドあり

    ユーザ群A

    ユーザ群B について

    ユーザ群A の誰に近いのか? を

    全購入履歴データを使って計算

    (Via Item2Vec)

    推薦結果
    を出力

    近傍ユーザに紐づいて

    レコメンド結果を集約する

    (直近の販売実績で更に重み付け)

    View full-size slide

  19. MLOps: Model Deployment

    © 2022 Cookpad Inc. 19

    View full-size slide

  20. © 2022 Cookpad Inc. 20
    MLOps: Model Deployment

    ● パイプラインの殆どが社内で開発されたツールを使用 

    ○ バッチ管理システム... Kuroko2 (OSS) 

    ○ Redshift からのデータ取得... Queuery (OSS) 

    ○ バッチ実行環境... Hako(OSS) 


    View full-size slide

  21. © 2022 Cookpad Inc. 21
    MLOps: Model Deployment

    ● Kuroko2

    ○ web ベースのバッチ管理システム 

    ■ OSS https://github.com/cookpad/kuroko2 

    ○ 主な役割はコンテナの起動・コマンドの実行 

    ■ 近年のクックパッドのシステムは殆どコンテナで 動い
    ている

    https://speakerdeck.com/eisuke/kuroko2falsejin-kuang-tokutukupatudofalsebatutizhou-rifalsegai-kuang

    View full-size slide

  22. © 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

    View full-size slide

  23. © 2022 Cookpad Inc. 23
    MLOps: Model Deployment

    ● Hako 

    ○ OSS

    ○ コンテナを ECS にデプロイするためのツール 

    ○ jsonnet を書いてデプロイする 

    ● Hako-console

    ○ 社内ツール

    ○ デプロイすると専用のページが生成される 

    ○ そこからメトリクス監視の Grafana などを確認できる 

    https://github.com/eagletmt/hako/blob/master/examples/hello.jsonnet

    View full-size slide

  24. MLOps: Monitoring

    © 2022 Cookpad Inc. 24

    View full-size slide

  25. © 2022 Cookpad Inc. 25
    MLOps: Monitoring

    ● オフラインテスト指標 

    ○ RecBole に定義されたメトリクスを使用 

    ■ NDCG@k

    ■ MRR@k

    ■ Precision@k

    ■ Recall@k

    ■ Hits@k

    ■ AveragePopularity@k 

    ■ ItemCoverage@k

    ● オンライン指標

    ○ レコメンド経由でのカート追加数 

    ○ Tableau で追跡


    View full-size slide

  26. © 2022 Cookpad Inc. 26
    MLOps: Offline Metrics Monitoring

    ● 社内ツール: Metrics Tracer 

    ○ S3 にあるメトリクス(json) を取得し可視化 

    ○ TODO: サマリーレポート・異常検知・slack 通知 


    View full-size slide

  27. © 2022 Cookpad Inc. 27
    MLOps: Data Drift Monitoring(Future Work)

    ● データドリフトのモニタリング → × 

    ○ Evidently AI・Whylogs が対応していない

    ● レコメンドの入力データ→ user-item のインタラクションを観測する
    ことが重要

    ○ ネットワークグラフ的なデータだと言える

    ○ そのため、現状は利用できるOSSがない

    ● RecBole が計算してくれる Basic Stats を利用していきたい 

    RecBole が計算している Basic Stats

    View full-size slide

  28. © 2022 Cookpad Inc. 28

    View full-size slide

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

    View full-size slide