Slide 1

Slide 1 text

MLOpsに関する事例を集めた MLOps Practicesを公開した話 2022/04/19 第18回 MLOps 勉強会 Masataka Kashiwagi

Slide 2

Slide 2 text

自己紹介 名前:柏木正隆(Masataka Kashiwagi) 所属:コネヒト株式会社の機械学習エンジニア 出身:大阪府    @asteriam_fp    Double-M2.fm(@double_m2ml) - 前職では,製造業向けに異常検知の自社製品のML機能の 開発やPoCなどでデータ分析してました - 現職は,サービスグロースのためのレコメンドエンジン の開発やMLOpsの推進をしています - 現在生後2ヶ月の娘👶の育児に奮闘中です(育休中) 妻によるお手製アイコン Twitter Podcast用

Slide 3

Slide 3 text

サービス紹介

Slide 4

Slide 4 text

「mamari」について “悩み” と ”共感” を軸にママに寄り添う toC向けサービス アプリ・Web・SNSと多角的にサービスを展開しています

Slide 5

Slide 5 text

「家族ノート」について mamari内の検索/Q&Aデータを分析できる toB向けサービス 子育て家庭の抱える「課題」などの分析が可能

Slide 6

Slide 6 text

機械学習タスクの紹介

Slide 7

Slide 7 text

コミュニティーの検閲システム ● 不適切な質問や投稿を “機械学習モデル” を用いて事前に検知 ● モデルが不適切だと判断した投稿だけを人間がチェック ○ 投稿内容を全て人間が確認することは時間がかかり,物理的にも厳しい 検閲システムの流れ e.g.) 仕事の斡旋など勧誘を行う行為はNG 簡単に稼ぐ方法を教えます! 機械学習 - 分類モデル この投稿は0.5%の確率で不適切な コンテンツです! この投稿は90.5%の確率で不適切 なコンテンツです! 閾値の設定 不適切な投稿かどうかの 確率を出力 OK NG モデルが不適切と判定した投稿 を人間が目視で確認 フィードバックループ Human-in-the-Loop

Slide 8

Slide 8 text

コミュニティーの検閲システム ● 不適切な質問や投稿を “機械学習モデル” を用いて事前に検知 ● モデルが不適切だと判断した投稿だけを人間がチェック ○ 投稿内容を全て人間が確認することは時間がかかり,物理的にも厳しい コスト削減! サービス品質の向上!(回答率向上)

Slide 9

Slide 9 text

コンテンツのレコメンデーション ● ユーザーの行動履歴からそのユーザーに合ったオススメの質問や記事などのコ ンテンツをレコメンド ● “機械学習”を使ってユーザー毎にレコメンドリストを生成 行動履歴 レコメンドシステム レコメンドエンジン ユーザー毎にオススメの コンテンツのレコメンド リストを生成 データ抽出・前処理 アプリからのリクエスト に対してリストを返す 「質問」のレコメンド 「記事」のレコメンド

Slide 10

Slide 10 text

コンテンツのレコメンデーション ● ユーザーの行動履歴からそのユーザーに合ったオススメの質問や記事などのコ ンテンツをレコメンド ● “機械学習”を使ってユーザー毎にレコメンドリストを生成 CTRの向上! 滞在時間の向上!

Slide 11

Slide 11 text

この他にも 「カテゴリーの類推」・「投稿内容の分析」など 色々あります!

Slide 12

Slide 12 text

アジェンダ ❏ 自己紹介 ❏ コネヒトのサービスと機械学習タスクの紹介 ❏ MLOps Practicesの紹介 ❏ MLOps PracticesというWebsiteを公開しようと思った背景 ❏ MLOps Practicesについて ❏ 今後の取り組み ❏ (おまけ)コネヒトでのMLOpsに関する取り組み ❏ ML Test Scoreによる機械学習システムのスコアリング ❏ SageMakerとStep Functionsで構築した検閲システム

Slide 13

Slide 13 text

本日話さないこと ● 個々のMLOpsに関する事例の紹介 ● MLOpsを構成するコンポーネントの細かな説明 ● MLOpsで使用する各サービス・ライブラリなど ※ 本資料は後ほど公開します!!

Slide 14

Slide 14 text

MLOps Practicesの紹介

Slide 15

Slide 15 text

MLOpsとは? ● “MLOps is an ML engineering culture and practice that aims at unifying ML system development (Dev) and ML system operation (Ops).” (Defined by Google) ○ 機械学習システムにおけるDevOpsとエンジニアリングカルチャーとイテレーティブ な実践 ● 従来のDevOpsだけでなく,ML特有の課題もありそれらを意識した取り組みが必要になっ ている! 引用: MLOps: Continuous delivery and automation pipelines in machine learning ・Design → 要件設定・優先順位・データの利用性 ・Model Development → データエンジニアリング・モデル開発/評価 ・Operations → モデルデプロイ・CI/CD・モニタリング Ref.:MLOps Principles

Slide 16

Slide 16 text

機械学習の特有の課題 ● 機械学習モデルを一度開発して終わりではなく,継続的な取り組みが必要 ● Continuous X ○ Continuous Integration (CI) ■ コード・データ・データスキーマ・モデルなどのテストと検証を行う ○ Continuous Delivery (CD) ■ 別のサービス(モデル予測サービス)を自動的にデプロイするシステム ○ Continuous Training (CT) ■ 再デプロイのためにMLモデルの再学習を自動的に行う ○ Continuous Monitoring (CM) ■ 本番環境のシステムエラー・データの品質/ドリフト・モデルのパフォーマンスなどのモニタリングを行う

Slide 17

Slide 17 text

機械学習を用いたシステム開発 ● 機械学習コードの実装はごく一部で,データ(特徴量)の管理だっだり,インフラの整備 やテストなど複雑でやることが色々とある → どのフェーズでも継続的な改善が必要とされている! 引用:Hidden Technical Debt in Machine Learning Systems

Slide 18

Slide 18 text

機械学習を用いたシステム開発 ● 機械学習コードの実装はごく一部で,データ(特徴量)の管理だっだり,インフラの整備 やテストなど複雑でやることが色々とある → どのフェーズでも継続的な改善が必要とされている! 引用:Hidden Technical Debt in Machine Learning Systems どこから手をつけていいのか? 何をすればいいのか? 他社はどんなことしてるのか?

Slide 19

Slide 19 text

MLOps Practicesを公開しようと思った背景 ● 海外では,ApplyingML や Awesome MLOps といったWebsiteやRepositoryがあり,ト ピック毎に各社の事例が整理されている ○ 色々と網羅的に整理されており,サーベイの参考になるものが多くある Ref.: 1. https://applyingml.com/ 2. https://github.com/visenger/awesome-mlops ApplyingML Awesome MLOps

Slide 20

Slide 20 text

MLOps Practicesを公開しようと思った背景 ● INNOQが公開している ml-ops.org ● MLOpsの考え方や各コンポーネントの指針 などが整理されている ● ガイドラインとしてもとても良い Ref.:https://ml-ops.org/

Slide 21

Slide 21 text

MLOps Practicesを公開しようと思った背景 ● 一方,日本で各社が取り組んでいるMLOpsの事例やTipsは点在していて,まとめられてい るWebsiteやRepositoryはない?(僕の観測範囲では...) ● Twitterやテックブログなどで流れてきて,いいね!やブックマークするけどきちんとス トックできていないので,どこにあったかすぐ忘れてしまう😅

Slide 22

Slide 22 text

MLOps Practicesを公開しようと思った背景 ● 一方,日本で各社が取り組んでいるMLOpsの事例やTipsは点在していて,まとめられてい るWebsiteやRepositoryはない?(僕の観測範囲では...) ● Twitterやテックブログなどで流れてきて,いいね!やブックマークするけどきちんとス トックできていないので,どこにあったかすぐ忘れてしまう😅 特定のWebsiteやRepositoryを追っておけばある程度の情報が手に入ると便利! 日本でのMLOpsのユースケース集あると嬉しいな〜 特に実務で実際に取り組んで本番導入されている事例が欲しい!!!

Slide 23

Slide 23 text

MLOps Practicesを公開しようと思った背景 ● 一方,日本で各社が取り組んでいるMLOpsの事例やTipsは点在していて,まと められているWebsiteやRepositoryはない?(僕の観測範囲では...) ● Twitterやテックブログなどで流れてきて,いいね!やブックマークするけどき ちんとストックできていないので,どこにあったかすぐ忘れてしまう😅 特定のWebsiteやRepositoryを追っておけばある程度の情報が手に入ると便利! 日本での各社が取り組んでいるMLOpsのユースケース集あると嬉しいな〜 自分のリファレンス用も兼ねて 作ってみるか!

Slide 24

Slide 24 text

MLOps Practicesについて ● 項目としては,「Knowledge」と「Tips」の2 つで構成 ● Knowledge: こちらがメイントピック ○ MLOpsの概要やガイドライン ○ 各コンポーネント毎のユースケースの整理 ○ etc... ● Tips: ○ ツールやフレームワークの使用法などの Tipsを取り上げて整理しようと考え中(現 在は未整備) Ref.:https://masatakashiwagi.github.io/mlops-practices/

Slide 25

Slide 25 text

MLOps Practicesについて: ~Knowledge~ ● 「Knowledge」の各コンテンツに関して... ● Guides: ○ MLOpsの概要や全体の理解を進めるためのガイドラインが載った記事をピックアップ ● Practices: ○ 各社のユースケースをコンポーネント毎に整理 ● MLOps projects & wiki ○ 各コンポーネントに対応したツールの紹介やプロジェクトなど ● 勉強会 ○ 国内でのMLOpsに関連した勉強会をピックアップ ● Conferences ○ MLOpsに関連する国際会議をピックアップ ● 書籍 ○ MLOps関連の書籍を記載 ● References ○ 参考URLリンク

Slide 26

Slide 26 text

MLOps Practicesについて: ~Knowledge~ ● 「Practices」に関してもう少し... ● ユースケースを以下の9つに区分け ○ All in one ○ Feature Store ○ 実験管理 ○ パイプライン ○ CI/CD ○ CT ○ モニタリング ○ サービング ○ Others トピック毎でオーバーラップ してる部分も... トピック分けで取り組みたいステップでの他社のユースケースを知ることができる!

Slide 27

Slide 27 text

MLOps Practicesについて: ~Knowledge~ ● 「Practices」に関してもう少し... ● ユースケースを以下の9つに区分け ○ All in one ○ Feature Store ○ 実験管理 ○ パイプライン ○ CI/CD ○ CT ○ モニタリング ○ サービング ○ Others トピック毎でオーバーラップ してる部分も... トピック分けで取り組みたいステップでの他社のユースケースを知ることができる! 新しいユースケースが増える とコンテンツが充実!🎉

Slide 28

Slide 28 text

で,どこから始めるのがいいの?

Slide 29

Slide 29 text

どこから始めるのがいいのか? ● 「MLOpsの概要と初学者が気をつけたほうが良いこと」の9スライド目からが参考になる ○ https://www.slideshare.net/shotanaka7161/mlops-249893157 ● アプローチ ○ 実現可能性 ■ スキルセット・リソース ○ 費用対効果(ROI) ■ コスト・インパクト ○ 興味のある技術 ■ モチベーションベース ○ 今までの経験と親和性がある領域 ■ ex) データ分析をやってきた人→実験管理

Slide 30

Slide 30 text

小さく始めて大きく育てる気持ちで!🌱

Slide 31

Slide 31 text

今後の取り組み ● 項目の精査 ○ 「Knowledge」のPracticesに関して,どれぐらいの区分で整理していくか ● コンテンツの拡充 ○ MLOpsのタグが付いたブログや登壇資料しか拾えていない ● 各ユースケースに対する一言説明の追加など ● 「Tips」の整理 ○ 各ツールやフレームワークのTipsは世の中に膨大にあるので,どの粒度でキュレー ションするか考え中 ● etc... 絶賛ワンオペなので,お手伝いしてくれる人が居たら嬉しいですー! 気づけていない事例もあると思うので, リポジトリへのPRやTwitterなどで教えて頂けると大変助かります!! リポジトリ: https://github.com/masatakashiwagi/mlops-practices スターして頂けると励みになります󰢛

Slide 32

Slide 32 text

コネヒトでのMLOpsに関する取り組み

Slide 33

Slide 33 text

MLOpsに関する取り組み ❏ ML Test Scoreによる機械学習システムのスコアリング ❏ SageMakerとStep Functionsで構築した検閲システム

Slide 34

Slide 34 text

ML Test Scoreによる 機械学習システムのスコアリング

Slide 35

Slide 35 text

ML Test ScoreによるMLシステムのスコアリング ● 現在稼働している機械学習システムに対して ,ML Test Scoreに基づいたスコアリングを実施 ● テスト項目 ○ 特徴量とデータのテスト ○ モデル開発のテスト ○ 機械学習インフラのテスト ○ 機械学習のモニタリングテスト ● 現状を把握することで,自分達のチームに何が足 りていないかを知ることができる → 次に何をすれば良いのかの指針になる Ref. 1. The ML Test Score: A Rubric for ML Production Readiness and Technical Debt Reduction 2. https://tech.connehito.com/entry/2021/09/30/181145

Slide 36

Slide 36 text

AWS SageMakerとStep Functionsで 構築した検閲システム

Slide 37

Slide 37 text

SageMakerとStep Functionsで構築した検閲システム ● 検閲システムの概要 ○ 1ヶ月で約130万件のQ&Aが投稿される ○ 全ての投稿を目視確認することはできない(現実的でない) ○ 荒らし投稿やガイドライン違反の投稿のみを人間がチェックする運用 ● 今回構築したシステムは「特定のユーザークラスターに対して機械学習モデル を適用」し,不適切な投稿のみを人間がさらに判断する ○ 別のユーザークラスターに対しては既存の検閲システムが存在している ○ 既存の検閲システムは数年前に構築され技術的な負債もあり,別のアーキテクチャー を採用する方が望ましい状況 ○ 課題は今回割愛します...

Slide 38

Slide 38 text

SageMakerとStep Functionsで構築した検閲システム ● 今回新しくSageMakerとStep Functionsで構築した機械学習システム アーキテクチャー概要

Slide 39

Slide 39 text

SageMakerとStep Functionsで構築した検閲システム ● 今回新しくSageMakerとStep Functionsで構築した機械学習システム 独自のカスタムコンテナ イメージを利用

Slide 40

Slide 40 text

SageMakerとStep Functionsで構築した検閲システム ● 今回新しくSageMakerとStep Functionsで構築した機械学習システム 実験管理はSageMaker Experimentsを使用 Step Functionsを用いてパイプライン全体を管理 学習プロセスにはSageMaker Training Jobを利用し,実験結果をExperimentsとシームレスに接続 それ以外のプロセスはProcessing Jobを利用し,SageMakerのリソースをフル活用 アーティファクトはS3に保存

Slide 41

Slide 41 text

SageMakerとStep Functionsで構築した検閲システム ● 今回新しくSageMakerとStep Functionsで構築した機械学習システム モデルのデプロイまでStep Functions内で完結 デプロイ後はSageMakerでエンドポイントをホスティング カスタムコンテナイメー ジを利用し,独自の推論 処理を実装

Slide 42

Slide 42 text

SageMakerとStep Functionsで構築した検閲システム ● 今回新しくSageMakerとStep Functionsで構築した機械学習システム 推論結果を受け取り, OK/NG結果をclientに返す

Slide 43

Slide 43 text

データ抽出からモデル学習,デプロイまで 一気通貫した機械学習パイプラインを構築!!

Slide 44

Slide 44 text

データ抽出からモデル学習,デプロイまで 一気通貫した機械学習パイプラインを構築!! コスト削減! サービス品質の向上!(回答率向上) CSチームの心理的な負荷軽減!

Slide 45

Slide 45 text

SageMakerとStep Functionsで構築した検閲システム ● 詳しくはテックブログを見て頂ければ! ○ https://tech.connehito.com/entry/2022/03/24/173719 ○ https://tech.connehito.com/entry/2022/03/28/190436

Slide 46

Slide 46 text

まとめ ● 日本でのMLOpsユースケース集が欲しいと思ったので,「MLOps Practices」 を作って公開しました! ○ まだまだ検討することがあるので,もっと良くしていきたい ○ 継続して更新します! ● 自社でのMLOpsに関する取り組みの紹介 ○ ML Test Scoreを使ったAs-Is/To-Beの理解 ○ AWS SageMakerとStep Functionsを用いたMLパイプラインによる検閲システムの構 築

Slide 47

Slide 47 text

References URL ● https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machi ne-learning ● https://ml-ops.org/content/mlops-principles ● https://dl.acm.org/doi/10.5555/2969442.2969519 ● https://applyingml.com/ ● https://github.com/visenger/awesome-mlops ● https://ml-ops.org/ ● https://masatakashiwagi.github.io/mlops-practices/ ● https://www.slideshare.net/shotanaka7161/mlops-249893157 ● https://github.com/masatakashiwagi/mlops-practices ● https://research.google/pubs/pub46555/ ● https://tech.connehito.com/entry/2021/09/30/181145 ● https://tech.connehito.com/entry/2022/03/24/173719 ● https://tech.connehito.com/entry/2022/03/28/190436

Slide 48

Slide 48 text

さいごに

Slide 49

Slide 49 text

We are hiring! 機械学習エンジニア絶賛募集中です!!! Wantedlyの募集ページに飛びます ・ライフイベント/ライフスタイルの課題解決をするサービスに興味がある方 ・データ基盤に関する意思決定や,MLプロダクト開発に興味のある方   もし興味を持たれましたら,まずはカジュアルにお話させてもらえると嬉しいです!   Twitter DM or Wantedly経由など...ご連絡お待ちしています!   Twitter: https://twitter.com/asteriam_fp   Wantedly: https://www.wantedly.com/companies/connehito/projects

Slide 50

Slide 50 text

おわり ご静聴ありがとうございました!