Slide 1

Slide 1 text

© commmune Inc. All rights reserved コミュニティプラットフォームの バッチレコメンドを支える機械学習基盤 2023/10/31 第35回 MLOps 勉強会 Masataka Kashiwagi

Slide 2

Slide 2 text

© commmune Inc. All rights reserved 自己紹介 柏木 正隆 Commmune - Machine Learning Engineer お仕事 ● 機械学習システムの開発(推薦システム...etc) ● MLOps の推進 ● チーム組成 / 採用 SNS ● X (旧 Twitter):@asteriam_fp ● Podcast:@double_m2ml その他 MLOps 勉強会の運営メンバーとしても活動してます MLOps 勉強会での登壇は第18回の登壇以来久しぶりです! Masataka Kashiwagi X (旧 Twitter) アイコン

Slide 3

Slide 3 text

会社とサービスの紹介

Slide 4

Slide 4 text

© commmune Inc. All rights reserved 会社紹介 コミュニティ作りに 特化したプロダクト commmune(コミューン) 営業・CSのアクションを 最速で効率化するプロダクト SuccessHub(サクセスハブ) あらゆる組織とひとが融け合う未来をつくる VISION

Slide 5

Slide 5 text

© commmune Inc. All rights reserved 企業とユーザーの「距離と垣根」をなくし コミュニケーションを集約統合・双方向化 するコミュニティ施策 企業とユーザーが融け合うカスタマーサクセスプラットフォーム 最大効率でLTV向上 = × 課題 解決 利用度 向上

Slide 6

Slide 6 text

© commmune Inc. All rights reserved コミュニケーションが一気通貫 発信は双方向 データに基づいた個別最適なアクションが可能 接点がバラバラ 発信は一方通行 ツールごとに分断が起こり個別最適は難しい Before With commmune サービス紹介 顧客コミュニティを軸に個別最適な顧客コミュニケーションをスケールするかたちで実現し、カスタマーサ クセスのROIを最大化

Slide 7

Slide 7 text

Agenda © commmune Inc. All rights reserved ● 自己紹介 ● 会社・サービス紹介 ● はじめに ● コミュニティプラットフォームにおける機械学習の活用 ● 機械学習プロジェクトをどう進めるか ● 機械学習基盤の紹介 ● まとめ ※ 本資料は後ほど公開します!

Slide 8

Slide 8 text

© commmune Inc. All rights reserved はじめに 今日お話しする内容の前提 ● プロダクトに機械学習の機能(レコメンド機能)を初めて導入する ● 何もないところから機械学習システムを一人で開発し運用している ○ 開発期間は3ヶ月程度,運用してまだ2ヶ月程度 まずはミニマム・シンプルな作りで改善可能な土台の構築に専念し,高度な MLOps はこれから! そのため,MLOps の入門的な位置付けで見て頂ければと思います! その上で今日お話しすること ● 1人目の MLE として,プロジェクトをどう進めたか ● マルチテナントでの機械学習の大変さ ● 機械学習基盤の全体紹介

Slide 9

Slide 9 text

コミュニティプラットフォームにおける 機械学習の活用

Slide 10

Slide 10 text

© commmune Inc. All rights reserved コミュニティプラットフォームにおける機械学習の活用 コミュニティにおいて,管理者(運営)とユーザー(メンバー)の2つの視点があり,それぞれ関心事 は異なる 管理者(運営) ● コミュニティを効率よく運営したい ● ユーザーと効果的にコミュニケー ションを取りたい ● コミュニティ内のユーザー行動を知 りたい ● etc… ユーザー(メンバー) ● 自分に合う or 色々な興味のあ るコンテンツを見つけたい ● コミュニティ内のメンバーと仲 良くしたい ● コミュニティに貢献したい ● etc…

Slide 11

Slide 11 text

© commmune Inc. All rights reserved コミュニティプラットフォームにおける機械学習の活用 コミュニティにおいて,管理者(運営)とユーザー(メンバー)の2つの視点があり,それぞれ関心事 は異なる 管理者(運営) ● コミュニティを効率よく運営したい ● ユーザーと効果的にコミュニケー ションを取りたい ● コミュニティ内のユーザー行動を知 りたい ● etc… ユーザー(メンバー) ● 自分に合う or 色々な興味のあ るコンテンツを見つけたい ● コミュニティ内のメンバーと仲 良くしたい ● コミュニティに貢献したい ● etc… LLM / ML を活用した取り組み 機械学習を使った推薦システム 今回はこちらの紹介

Slide 12

Slide 12 text

© commmune Inc. All rights reserved 自分に合う or 色々な興味のあるコンテンツを見つけたい エンドユーザーへの機械学習活用の第一歩として,ある投稿に関連した投稿を出す投稿レコメンド機 能を開発した 投稿レコメンドのイメージ ● 課題感 ○ コミュニティを回遊する導線が存在しない ○ コミュニティ内での滞在時間 ○ コンテンツが知られていない ● 期待する効果 ○ 他のコミュニティメンバーの投稿を知ってもらう ○ 投稿内容に対するリアクションなどを通して,コミュニ ティに対するエンゲージメントを高めてもらう

Slide 13

Slide 13 text

© commmune Inc. All rights reserved 自分に合う or 色々な興味のあるコンテンツを見つけたい エンドユーザーへの機械学習活用の第一歩として,ある投稿に関連した投稿を出す投稿レコメンド機 能を開発した 投稿レコメンドのイメージ ● 課題感 ○ コミュニティを回遊する導線が存在しない ○ コミュニティ内での滞在時間 ○ コンテンツが知られていない ● 期待する効果 ○ 他のコミュニティメンバーの投稿を知ってもらう ○ 投稿内容に対するリアクションなどを通して,コミュニ ティに対するエンゲージメントを高めてもらう まずはシンプルな方法で改善サイクルを作る!

Slide 14

Slide 14 text

機械学習プロジェクトをどう進めるか

Slide 15

Slide 15 text

© commmune Inc. All rights reserved 15 プロダクト初の機械学習プロジェクト を成功させるために

Slide 16

Slide 16 text

© commmune Inc. All rights reserved 機械学習プロジェクトやシステム化を行う上での問題 機械学習プロジェクトで上手く行かないケースとして... ● タスクや問題の設定(定義)が曖昧 ● プロジェクトゴールの基準が不明確 ● プロジェクトのスコープが過大 ● ステークホルダーとのコミュニケーション不足 ● データの品質とアクセシビリティの問題 ● モデルの精度不足 ● etc…

Slide 17

Slide 17 text

© commmune Inc. All rights reserved 機械学習プロジェクトやシステム化を行う上での問題 さらにシステム化を見越した場合には,機械学習の改善サイクルを回すために「継続的な改善 (CI・CD・CT・CM)」が行える仕組みが必要で,所謂 MLOps の動きが求められる! ※ CI: continuous integration, CD: continuous delivery / deployment, CT: continuous training, CM: continuous monitoring MLOps - CI/CD/CT/CM for ML System

Slide 18

Slide 18 text

© commmune Inc. All rights reserved 機械学習プロジェクトやシステム化を行う上での問題 プロダクトへの機械学習活用が初期(立ち上げ)フェーズの場合,以下のような不安もある ● 機械学習プロジェクトに関するナレッジが社内にない ● 一人目の ML エンジニア・MLOps エンジニアの経験に強く依存する ○ 品質にバラツキが出るかも? ○ 本番環境への導入を考えた場合,考慮漏れがあったりするかも? ● MLOps の取り組みが未成熟(そもそもない) ○ 何から始めればいいか,どう動けばいいかわからない ○ どこまで仕組みを用意すればいいかわからない ● 社内に味方が居るか ● etc…

Slide 19

Slide 19 text

© commmune Inc. All rights reserved 機械学習プロジェクトやシステム化を行う上での問題 プロダクトへの機械学習活用が初期(立ち上げ)フェーズの場合,以下のような不安もある ● 機械学習プロジェクトに関するナレッジが社内にない ● 一人目の ML エンジニア・MLOps エンジニアの経験に強く依存する ○ 品質にバラツキが出るかも? ○ 本番環境への導入を考えた場合,考慮漏れがあったりするかも? ● MLOps の取り組みが未成熟(そもそもない) ○ 何から始めればいいか,どう動けばいいかわからない ○ どこまで仕組みを用意すればいいかわからない ● 社内に味方が居るか ● etc… 本番環境にシステムをデプロイし, 最低限の MLOps を回せる状態にしたい

Slide 20

Slide 20 text

© commmune Inc. All rights reserved MLOps Maturity Assessment を使った取り組み MLOps Maturity Assessment ● 本番環境で確実にデプロイするために最低限必要なことが記されている ● MLOps を実行可能な状態に持っていくことができる ● プロジェクトレベルで何をすべきか,どういった項目を抑えておくべきかがチェックシートのように使 える(全部で7項目ある) 1. Documentation 2. Traceability & Reproducibility 3. Code quality 4. Monitoring & Support 5. Data transformation pipelines & Feature store 6. Model explainability 7. A/B testing & Feedback loop 最低限抑えておきたい項目 Ref. 1. MLOps Maturity Assessment

Slide 21

Slide 21 text

© commmune Inc. All rights reserved MLOps Maturity Assessment を使った取り組み MLOps Maturity Assessment ● 本番環境で確実にデプロイするために最低限必要なことが記されている ● MLOps を実行可能な状態に持っていくことができる ● プロジェクトレベルで何をすべきか,どういった項目を抑えておくべきかがチェックシートのように使 える(全部で7項目ある) 1. Documentation 2. Traceability & Reproducibility 3. Code quality 4. Monitoring & Support 5. Data transformation pipelines & Feature store 6. Model explainability 7. A/B testing & Feedback loop Ref. 1. MLOps Maturity Assessment 後述する機械学習基盤の説明の中で紹介

Slide 22

Slide 22 text

© commmune Inc. All rights reserved MLOps Maturity Assessment を使った取り組み ● Documentation ○ Project documentation ○ ML model documentation ○ Technical documentation ● Traceability & Reproducibility ○ Infrastructure traceability and reproducibility ○ ML code traceability and reproducibility ● Code quality ○ Infrastructure code quality requirements ○ ML model code quality requirements ● Monitoring & Support ○ Infrastructure monitoring requirements ○ Application monitoring requirements ○ KPI & model performance monitoring requirements ○ Data drift & Outliers monitoring

Slide 23

Slide 23 text

© commmune Inc. All rights reserved MLOps Maturity Assessment を使った取り組み - Documentation 1. Documentation (with Notion) ● Design Doc をドキュメントハブとして活用している ● プロジェクト,機械学習モデル / システムに関するドキュメントを紐付けている ● PdM/PO, Dev Team とのコミュニケーション用途としても利用している 良い点 ● このドキュメント1つで会話ができる with PdM/PO, Dev Team ○ 複数のドキュメントを共有する必要がないので,ドキュメントの行方不明が減る 改善できそうな点 ● スケジュールとの紐付け ○ どれぐらいの期間で開発できたか(開発後),するのかが(開発中)が見えない ● 議論の形跡,個別ミーティングでの議事録とのリンク

Slide 24

Slide 24 text

© commmune Inc. All rights reserved 機械学習プロジェクトを成功させるために 今回のファーストプロジェクトでは,MLOps Maturity Assessment を活用して最低限の品質を担保しなが ら進めたが,まだまだ改善できる点・レベルアップできる点は多くある 成功の確度を上げるためには, ● オーナーシップを持つ ● 素早くシンプルに改善サイクルを回せる仕組みを作る ● イテレーティブに改善を回す が大事だと感じる

Slide 25

Slide 25 text

機械学習基盤の紹介

Slide 26

Slide 26 text

© commmune Inc. All rights reserved 26 その前に...

Slide 27

Slide 27 text

© commmune Inc. All rights reserved 27 マルチテナントで実現する機械学習

Slide 28

Slide 28 text

© commmune Inc. All rights reserved マルチテナントの特性を考えてみると... マルチテナントのコミュニティの場合... ● 企業毎にコミュニティが立ち上がるため,コンテンツはそれぞれ独立している ● 使い方もコミュニティ毎に変わったりする(toC, toB) ● ユーザーがコミュニティ管理者とコミュニティに属するエンドユーザーの2種類ある ● 投稿などのイベントデータ / 行動ログのデータ量がコミュニティ毎に大小がある ● etc…

Slide 29

Slide 29 text

© commmune Inc. All rights reserved マルチテナントの特性を考えてみると... マルチテナントのコミュニティの場合... ● 企業毎にコミュニティが立ち上がるため,コンテンツはそれぞれ独立している ● 使い方もコミュニティ毎に変わったりする(toC, toB) ● ユーザーがコミュニティ管理者とコミュニティに属するエンドユーザーの2種類ある ● 投稿などのイベントデータ / 行動ログのデータ量がコミュニティ毎に大小がある ● etc… 各コミュニティに機械学習を適用するとなると...

Slide 30

Slide 30 text

© commmune Inc. All rights reserved マルチテナントでの機械学習適用を考えてみると... モデルは コミュニティ毎 に必要? パイプラインは コミュニティ毎に 必要? エラー時の リカバリーは どうしようか? コンポーネントも コミュニティ毎に 用意する? テナントの 追加/削除された時 のリソース どうしようかな?

Slide 31

Slide 31 text

© commmune Inc. All rights reserved マルチテナントで実現する機械学習の難しさ ● 機械学習モデル開発について考えると ○ なるべく共通化したいが,コミュニティの規模や活性度合いで個別モデルが必要になる場面も出てくる ■ ルールベースでも良い場合もある ■ モデルアーキテクチャが共通の場合もある ■ モデルアーキテクチャが異なる場合もある ○ 共通モデルで効果が出ればめっちゃ嬉しい! ● 機械学習パイプラインについて考えると ○ モデルとの関係で前処理/後処理なども変化するが,テンプレート or カタログを用意し,それに当てはめるテナン トの情報で上手く制御する ○ 効率的な運用方法が必要で,スケーラビリティが大事になってくる ○ パイプラインの場合は連動するシステムとの関係も考える必要がある ■ スケジューラー・CI/CD・コンポーネント...etc ○ 対応可能なエラーの場合の自動リカバリー

Slide 32

Slide 32 text

© commmune Inc. All rights reserved マルチテナントで実現する機械学習の難しさ ● 機械学習モデル開発について考えると ○ なるべく共通化したいが,コミュニティの規模や活性度合いで個別モデルが必要になる場面も出てくる ■ ルールベースでも良い場合もある ■ モデルアーキテクチャが共通の場合もある ■ モデルアーキテクチャが異なる場合もある ○ 共通モデルで効果が出ればめっちゃ嬉しい! ● 機械学習パイプラインについて考えると ○ モデルとの関係で前処理/後処理なども変化するが,テンプレート or カタログを用意し,それに当てはめるテナン トの情報で上手く制御する ○ 効率的な運用方法が必要で,スケーラビリティが大事になってくる ○ パイプラインの場合は連動するシステムとの関係も考える必要がある ■ スケジューラー・CI/CD・コンポーネント...etc ○ 対応可能なエラーの場合の自動リカバリー 共通化&自動化&スケーラビリティは大事!!

Slide 33

Slide 33 text

© commmune Inc. All rights reserved 33 バッチレコメンドシステムにおける 機械学習基盤の紹介

Slide 34

Slide 34 text

© commmune Inc. All rights reserved MLOps Lifecycle を確認しておくと... MLOps Lifecycle: Machine Learning Life Cycle in MLOps era Ref. 1. MLOps: Machine Learning Life Cycle

Slide 35

Slide 35 text

© commmune Inc. All rights reserved 機械学習基盤の紹介 MLOps Lifecycle に沿った改善ができる仕組みが必要 継続的学習のための 機械学習パイプライン 機械学習パイプライン&システムパフォー マンスモニタリング 機械学習システムのための CI/CD

Slide 36

Slide 36 text

© commmune Inc. All rights reserved 36 アーキテクチャ

Slide 37

Slide 37 text

© commmune Inc. All rights reserved バッチレコメンドシステムのアーキテクチャ

Slide 38

Slide 38 text

© commmune Inc. All rights reserved 機械学習システムの全体像 GCP のマネージドサービスをフル活用しています(1人 MLE の環境だと非常にありがたい🙏) ● 機械学習パイプライン:Vertex AI Pipelines ● 実験管理:Vertex AI Experiments ● 機械学習 API(ML-API):Cloud Run(フレームワーク:FastAPI) ● DWH:BigQuery ● データベース:Firestore(レコメンド結果保存用) ● ストレージ:Cloud Storage(アーティファクト保存用) ● モニタリング:Cloud Scheduler + Cloud Functions(パイプライン), Cloud Monitoring ● CI/CD:GitHub Actions ● スケジューラー:Cloud Scheduler + Cloud Functions(パイプライン定期実行用) ● コンテナレジストリ:Artifact Registry

Slide 39

Slide 39 text

© commmune Inc. All rights reserved 機械学習パイプライン

Slide 40

Slide 40 text

© commmune Inc. All rights reserved 継続的な学習のための機械学習パイプライン(=バッチ推薦システム用のパイプライン) エンドユーザーへ投稿レコメンド機能を提供するためにレコメンドリストを毎日生成する役割 機械学習パイプラインには GCP の Vertex AI Pipelines を採用しました 選定理由として,以下が挙げられます ● マネージドサービスである ○ 会社全体で GCP を活用しているというのもあります ○ 他の GCP サービスや Vertex AI のエコシステムとの連携が容易 ● コンポーネント毎に独立して管理でき,適切なスペックのマシンを割り当てることができる ● コンポーネントを柔軟に組み合わせてパイプライン化ができる → モジュラー化の考え方 一方で,コンポーネント毎にエラー通知処理を簡単に行えないのは Bad Point 😢

Slide 41

Slide 41 text

© commmune Inc. All rights reserved 学習パイプラインの処理フロー 1. BigQuery から投稿データを抽出 2. 投稿ベクトルを計算 ○ BERT 系の学習済みモデルを用いて Embedding を作成 3. 各投稿に対して,関連度(類似度が高い)投稿 をランキング化 ○ annoy という ANN ライブラリを使用 4. レコメンド結果を Firestore へ保存 ○ ML-API でレコメンド結果を素早く取得できるよ うに,Key-Value Store にデータを保存 ● パラメータ & メタデータは Vertex AI Experiments に保存 ○ 日々の学習履歴が残るので分析にも活用 ● アーティファクトは全て Cloud Storage に保存

Slide 42

Slide 42 text

© commmune Inc. All rights reserved レコメンド結果の保存に Firestore を採用した理由 ML-API を配置している関係で,レコメンド結果を低レイテンシーで読み取りができるデータストアが必要 → NoSQL が使えると便利!GCP での選択肢として,Firestore / Bigtable / Memorystore がある Firestore を選定した理由 ● コスト面(コストは圧倒的に Firestore の方が安く,Bigtable はインスタンスの管理が必要になってくる) ● ドキュメントとコレクション構造を上手く設計することで要件を満たせそう(Document DB) ● 静的なデータを保存する用途として使うだけ ※ Firestore は書き込みが1セッションあたり500件しか入らないので,一度に大量データを保存しにくい面もある   Datastore モードの場合は Key-Value Store として使うことができる ドキュメントとコレクションの構造設計 ● 複数のサービスにも対応可能 ○ Manage multiple Firestore databases in a project ● サブコレクションの活用で AB Test の結果保存にも柔軟に対応可能 Firestore Bigtable 特徴 スキーマレスな データベース ワイドカラム型 データベース インデックスの設計 が可能 高スループット / 低レイ テンシー 自動スケーリング より大規模向け

Slide 43

Slide 43 text

© commmune Inc. All rights reserved 定期実行用のスケジューラー開発 機械学習パイプラインを定期実行するために,Cloud Scheduler + Cloud Functions でスケジューラーを実 装しました(Vertex AI でも最近 scheduler API を使ってのパイプラインのスケジュール実行が可能) 自前実装している理由は,2つあります ● マルチテナントの用途に対応するため ● パイプラインを動かす対象となるテナントの自動追加と削除を行うため ○ 不要なパイプラインの起動はコストが無駄になる ○ 手動による追加と削除は人的限界がくる

Slide 44

Slide 44 text

© commmune Inc. All rights reserved パイプライン開発で苦労したこと ● Vertex AI Pipelines とライブラリ等との相性 ○ Python のバージョンとパイプラインで使用するライブラリの組み合わせによっては,Vertex AI Pipelines のカ スタムコンテナが動かない状態に陥った ○ Python 3.11 → Python 3.9 で落ち着きました ● Vertex AI Pipelines のカスタムコンテナを動かすサービスアカウント ○ Vertex AI Custom Code Service Agent(カスタムトレーニングコードを実行する場合) ○ 足りていない権限は適宜ロールに付与する必要がある ● マルチテナントに対応するための開発 ○ マルチテナントでどうやってスケールさせるか,効率化できるか,そしてそれらを上手く管理できるかを考えて実 践するのが難しい

Slide 45

Slide 45 text

© commmune Inc. All rights reserved パイプライン開発について... モジュール単位での管理で良いか?より拡張性がある方法はあるか? ● チームでの開発を考えた時に,モジュール単位で分割することが必ずしも効率的ではない ● 汎用コンポーネントもあるが,全てがそういったわけではない ● バッチ/リアルタイムな要件の両方を満たすことを考えるとベストとは限らないかも Feature/Training/Inference Pipelines (FTI Pipelines) の考え方もある? ● Feature Store を介した構造 ○ アーティファクト ● パイプライン単位での管理 ○ パイプライン単位で独立 ○ 一貫した開発が可能 Ref. 1. From MLOps to ML Systems with Feature/Training/Inference Pipelines

Slide 46

Slide 46 text

© commmune Inc. All rights reserved モニタリング

Slide 47

Slide 47 text

© commmune Inc. All rights reserved モニタリング - 基本的なところから抑える 機械学習パイプライン ● パイプラインの成否を監視するために,Cloud Scheduler + Cloud Functions で定時に確認 ○ 失敗時には Slack に連携する ■ Vertex AI Pipelines では,コンポーネント毎に処理が失敗した場合の Slack 連携が個別にできない ● Vertex AI Pipelines の API (ListPipelineJobsRequest) を叩いてパイプラインのステータス情報を取得している 機械学習 API(ML-API) ● Cloud Monitoring を使ったシステムパフォーマンスの計測 ○ リクエスト数 ○ レイテンシー ○ CPU 使用率 ○ インスタンス数 ○ メモリ使用量 ○ etc… パイプラインのSlack エラー通知

Slide 48

Slide 48 text

© commmune Inc. All rights reserved より信頼性高いシステムにするため...今後の取り組み with SRE Team モニタリング ● ビジネス KPI とデータ&モデルの予測結果などの紐付け (オフライン&オンラインメトリクス) ● APM の強化 ● プロアクティブな問題検出 ○ RecSysOps[2] のような取り組み オブザーバビリティ ● ML Observability の実践 ● エラーに対して問題の特定と分析できる状態を作る ○ Datadog with OpenTelemetry ○ ML-API のトレーシングとメトリクス収集など Ref. 1. A Comprehensive Guide on How to Monitor Your Models in Production 2. RecSysOps: Best Practices for Operating a Large-Scale Recommender System

Slide 49

Slide 49 text

© commmune Inc. All rights reserved CI/CD

Slide 50

Slide 50 text

© commmune Inc. All rights reserved GitHub Actions for CI/CD CI (Continuous Integration) ● Linter & Formatter ○ flake8, isort, black ● 単体テスト ○ コンポーネントの動作 ○ ML-API ● Vertex AI Pipelines のコンパイルチェック 改善できそうな点 ● カバレッジ ● コンポーネント間の結合テスト ● End2End のテスト ● モデルのテスト ● etc… CD (Continuous Delivery / Deployment) ● パイプライン・ML-API に関連するコードが修正さ れると,マージされたタイミングで自動的にステー ジング,プロダクション環境にデプロイ ○ Cloud Functions, Cloud Run, Cloud Scheduler ○ Vertex AI Pipelines はコンテナのイメージ ビルドとパイプラインのコンパイル ● デプロイ通知は Slack 連携される 改善できそうな点 ● ビルド時間の短縮:Cloud Build に移行を検討 ● 各コンポーネント毎に用意している Dockerfile の 管理

Slide 51

Slide 51 text

© commmune Inc. All rights reserved 機械学習パイプラインの各コンポーネント毎に Dockerfile を用意すべきか? 課題感 ● カスタムコンテナ毎に Dockerfile, poetry の管理ファイルを用意す るのが効率的ではない & コンポーネント間で設定が崩れる可能性が ある(バージョンが統一できないなど,技術的負債になりうる) 対処法 ● イメージを1つにして,コンテナ起動時の引数で切り替える? ● コンポーネント毎に用意する? ● etc… まだ対応できていないですが,今後解消していく予定です! (こういった議論ができる X ありがたいです🙏)

Slide 52

Slide 52 text

© commmune Inc. All rights reserved ML-API レコメンドログ設計

Slide 53

Slide 53 text

© commmune Inc. All rights reserved バッチレコメンドにおける ML-API の役割 本体アプリケーションと機械学習システムとのインターフェースとして機能している ML-API を置いている理由 ● AB Test のためのテナント・ユーザーの振り分けを行う ● 必要なログ出力を ML-API からも行う ● 必要に応じてレコメンドリストのフィルタリングやハンドリングを行う → 能動的な改善を ML チームだけで完結できる!(毎回開発チームにお世話にならなくても良い) 一方で,メンテナンス対象が増えるので,API に対してのモニタリングやシステム管理が発生し,ML チーム が一人だけの状態だと手離れはしにくくなります

Slide 54

Slide 54 text

© commmune Inc. All rights reserved 改善のためのレコメンドログ設計 モデル改善にレコメンドログを活用するため,ログ基盤を設計し運用しています! 課題感 ● ユーザーがレコメンドを選択した際に,表示されているレコメンドリストはどんなものだったか ● どんなロジックやモデルで出力されたリストなのか これらを把握できないと改善の分析が回しにくい... 3種類のログを活用 ● ML-API からのログ ● 本体アプリケーションからのログ ● エンドユーザーの行動ログ ログは Cloud Logging から BigQuery に連携

Slide 55

Slide 55 text

© commmune Inc. All rights reserved 改善のためのレコメンドログ設計 横断した分析を可能にするために... ● どのテナントの ● どのユーザーに ● どんなロジックで ● どんなレコメンドリストを提供したか ● どの位置のレコメンドリストをクリックしたか を取得しています(3つのログを繋ぐための一意のキーを用意) どんなログを取得しているかは,推薦システム実践入門を参考にしつつ,AB テストを実施する時は追加で必 要な Variant の情報などを含めています! この辺りはデータチームや開発チームと上手くコラボレーションしながら開発しています! Ref. 1. 推薦システム実践入門 - 6.2 ログの設計

Slide 56

Slide 56 text

© commmune Inc. All rights reserved 56 まだまだ MLOps への取り組みはこれから! (やりたいことはいっぱいあります🚀)

Slide 57

Slide 57 text

© commmune Inc. All rights reserved まとめ ● プロダクトへの初めての機械学習導入において,初期から MLOps を意識した取り組みを実施した ○ MLOps Maturity Assessment の活用 ● まずは改善が回る最低限の仕組みを用意した ○ モデルの改善や分析に集中し,AB Test を通した改善の繰り返し ● MLOps の取り組み方は各社の規模・フェーズ・環境に依るため,それぞれの状況に合わせた取り組み を実践していくのが大事! ○ オーバーエンジニアリング󰢃 ○ 攻め⚔と守り🛡のバランス良く

Slide 58

Slide 58 text

© commmune Inc. All rights reserved References URL ● https://mlops.community/mlops-maturity-assessment/ ● https://www.ml4devs.com/articles/mlops-machine-learning-life-cycle ● https://tech.commmune.jp/entry/2023/09/27/173000 ● https://netflixtechblog.medium.com/recsysops-best-practices-for-operating-a-large-scale- recommender-system-95bbe195a841 ● https://www.hopsworks.ai/post/mlops-to-ml-systems-with-fti-pipelines

Slide 59

Slide 59 text

© commmune Inc. All rights reserved 59 Thank you for your listening!! 🚀カジュアル面談募集中🚀 X (旧 Twitter) で直接 DM して頂いても大丈夫です👍 ※ MLE の JD は年末ぐらいには用意する予定です🙏 採用情報 / Careers https://commmune-careers.studio.site/ カジュアル面談 / Casual Interview