Slide 1

Slide 1 text

分析から機械学習システムの開発まで 一人で複数ロールを担う大変さ 2023/01/26 MoT/コネヒト/Kanmu が語るプロダクト開発xデータ分析 Masataka Kashiwagi

Slide 2

Slide 2 text

自己紹介 名前:柏木 正隆(Masataka Kashiwagi) 所属:コネヒト株式会社 - 機械学習エンジニア 出身:大阪府 SNS Twitter:@asteriam_fp(あと50人ぐらいでフォロワー数1000人🙏) Podcast:@double_m2ml お仕事 ● レコメンドエンジンの開発 ● 検索システムのデータ整備(←最近のメインのお仕事) ● MLOpsの推進 MLOps勉強会の運営メンバーとしても活動してます! Twitterアイコン

Slide 3

Slide 3 text

会社とサービスの紹介

Slide 4

Slide 4 text

「コネヒトの事業」について 「あなたの家族像が実現できる社会をつくる」 というVISIONに基づく中期的な目標として 子どもを望む家族像の多様性を実現するために日々取り組んでいます

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

アジェンダ ☑ 自己紹介 ☑ 会社・サービス紹介 □ 分析から機械学習システムの開発まで一人で複数ロールを担う大変さ - 機械学習のライフサイクルとロール - ここ最近の経験を紹介 - プロジェクト初期フェーズの話 - 機械学習モデル開発の話 - 機械学習システム運用の話 □ まとめ 本発表はデータ分析要素あまり無くてすいません󰢛 ※ 本資料は後ほど公開します!

Slide 7

Slide 7 text

機械学習のライフサイクルとロール

Slide 8

Slide 8 text

機械学習のライフサイクルとロール Ref. 1. CRISP-ML(Q). The ML Lifecycle Process. データアナリスト データサイエンティスト 機械学習エンジニア ROLE

Slide 9

Slide 9 text

フェーズ毎の実施内容 Business and Data Understanding ● ビジネス課題の整理 ○ MLタスクへの落とし込み ● 施策立案/KPIの設定 ● PoCの実施/プロトタイプ作成 ● データ収集/加工/整備/可視化 Model Development ● 特徴量の整備 ● モデル作成/評価 ● モデルデプロイ ● サービング Model Operations ● モニタリング ○ データドリフト ○ モデルの性能 ○ パフォーマンス ● CI/CD/CT ● MLプロセスの見直し データアナリスト データサイエンティスト データサイエンティスト 機械学習エンジニア 機械学習エンジニア

Slide 10

Slide 10 text

フェーズ毎の実施内容 Business and Data Understanding ● ビジネス課題の整理 ○ MLタスクへの落とし込み ● 施策立案/KPIの設定 ● PoCの実施/プロトタイプ作成 ● データ収集/加工/整備/可視化 Model Development ● 特徴量の整備 ● モデル作成/評価 ● モデルデプロイ ● サービング Model Operations ● モニタリング ○ データドリフト ○ モデルの性能 ○ パフォーマンス ● CI/CD/CT ● MLプロセスの見直し データアナリスト データサイエンティスト データサイエンティスト 機械学習エンジニア 機械学習エンジニア 各フェーズ,専門的な知識・経験が求められる!

Slide 11

Slide 11 text

一方で,コネヒトでのロールの割り当ては?

Slide 12

Slide 12 text

コネヒトにおけるMLエンジニアの役割 Ref. 1. コネヒトにおける機械学習関連業務の紹介資料 データアナリスト・データサイエンティスト的な役割 + 必要に応じてデータエンジニア的な役割も担う MLエンジニア的な役割 + システム運用のフェーズに入ると MLOpsエンジニア的な役割も担う Model Development & Operations Business and Data Understanding CRISP-MLのフェーズで ざっくり分けてみると...

Slide 13

Slide 13 text

コネヒトにおけるMLエンジニアの役割 Ref. 1. コネヒトにおける機械学習関連業務の紹介資料 データアナリスト・データサイエンティスト的な役割 + 必要に応じてデータエンジニア的な役割も担う MLエンジニア的な役割 + システム運用のフェーズに入ると MLOpsエンジニア的な役割も担う 機械学習に関連する全方位の役割😊

Slide 14

Slide 14 text

コネヒトにおけるMLエンジニアの役割 Ref. 1. コネヒトにおける機械学習関連業務の紹介資料 データアナリスト・データサイエンティスト的な役割 + 必要に応じてデータエンジニア的な役割も担う MLエンジニア的な役割 + システム運用のフェーズに入ると MLOpsエンジニア的な役割も担う 普通にめっちゃ大変!😂

Slide 15

Slide 15 text

ここ最近の経験を紹介

Slide 16

Slide 16 text

主なプロジェクトをピックアップ ● レコメンドシステムの新規開発 ○ フェーズ:PdMとの施策立案段階する初期フェーズから(Business and Data Understanding) ○ ロール:データサイエンティスト・MLエンジニア(・データエンジニア) ● 検閲システムのプロダクション導入 ○ フェーズ:PoCを終えてプロダクションに移行するフェーズから(Model Development) ○ ロール:MLエンジニア ● 検索システムのデータ基盤の構築 ○ フェーズ:検索基盤を1から構築するフェーズから(Business and Data Understanding) ○ ロール:データエンジニア(・検索エンジニア?)

Slide 17

Slide 17 text

レコメンドシステムの新規開発において... 機械学習のライフサイクル毎に見てみると... Business and Data Understanding Model Development Model Operations ● As is ~ To beなどの議論 with PdM ○ ユーザーへの良い影響とは? ○ 発散→徐々にスコープを絞る ○ ROIが本当にあるか? ● 要件・制約条件のヒアリング ○ どんなアイテム出すか ○ 除外したいアイテムは? ○ 期待値調整 ● KPIの設定 ○ CTR?滞在時間? ● ABテストの実験計画 ● プロジェクトのスケジューリング ● データ分析 ● レコメンド提供形態の検討 ● レコメンドモデルの開発 ○ 実験管理 ● モデル評価 ● 学習パイプラインの構築 ○ 設計 & 検証 ● ML-APIの開発 ● デプロイメント ● アラート設定 ● システム運用手順の整理 ○ 再学習手順 ○ エラー時の対応 ● モニタリング ○ パフォーマンス確認用のダッ シュボード作成 ○ オフライン評価指標とビジネ スメトリクスの連携 ● 改善案のプランニング

Slide 18

Slide 18 text

DS & DEで苦労したことの一例 Business and Data Understandingのフェーズでは,2つの役割を担う必要があった データサイエンティスト - スケジューリング → 大抵予定通りに行かない😇 - ログがアプリ側で出力できていない...アプリ ケーションエンジニアに依頼 & 開発期間を 確保 - (当たり前だが)ドメインの理解 - 指標一つ決めるにも,なぜPdMはそれを選択 しているのか... データエンジニア - 機能・非機能要件の整理 - フィジビリティスタディ & チェック - 運用を意識した仕組み作り - 安定的なデータインジェスト - コード管理

Slide 19

Slide 19 text

● What・Whyを意識してPdMと議論する ○ ついついHowの事を考えがちになる → どんなMLモデルを作ればいいか? ○ スコープ決め・期待値調整・ML導入によるROIの確認などは特に大事! ● 定性・定量の両面で議論できるようにするのが大事 ○ レコメンドモデルのオフライン指標は良いが,定性的にも良さげか ○ ダッシュボードを作成し,数値をチーム内で確認できるようにする ● データの品質・信頼性といった観点 ○ 後段の機械学習モデルの性能やパイプラインのエラーに繋がる → ユーザー影響にも繋がる ○ データの話はPdM含めてもっと議論しても良いと思う プロジェクトで大事 & 意識してたこと

Slide 20

Slide 20 text

● 再現性(実験管理/情報のトラッキング)の担保 - 元々共通の実験管理は行われていなかった状態 ● モデルデプロイメントの仕組みを構築 - 元々モデルデプロイメントの仕組みはほとんど整っておらず,手動オ ペが入って運用が難しい状態だった モデルを本番環境に出す難しさ

Slide 21

Slide 21 text

Ref. 1. ML Experiment Tracking: What It Is, Why It Matters, and How to Implement It Experiment tracking vs ML model management vs MLOps Model Managementにおいて ● Experiment Tracking ● Model Deployment は大事な要素!

Slide 22

Slide 22 text

再現性(実験情報のトラッキング)の担保

Slide 23

Slide 23 text

実験管理や情報のトラッキングが出来ていないと... - せっかくPoCで良い感じのモデルが出来ても,パラメータなどの情報が わからないと振り出しに戻る → 無駄に時間を費やすことになる - どの実験でどの結果になったかわからないので,議論できない - モデルの再現が取れない - モデリングとシステム導入する人が違う場合は特に大変 - Jupyter Notebookから本番システムに合わせたコード生成 再現性(実験情報のトラッキング)の担保

Slide 24

Slide 24 text

再現性を担保するための取り組み “実験管理ツールを導入して,必要な情報を記録しチームで情報を共有できる仕組みが必要” ※ 元々共通の実験管理は行われていなかった状態 実験管理ツール(SageMaker Experiments)を導入 - 再現性に必要な情報を記録可能🎉 - Code/Data/Environment/Model parameters - 本番への接続がスムーズに! - メトリクスを使った議論が可能に🎉 - チーム内で実験結果の共有が可能に🎉 - 一方で,コード管理は未だ上手い方法を模索中 Amazon SageMaker Experiments

Slide 25

Slide 25 text

モデルデプロイメントの仕組みを構築

Slide 26

Slide 26 text

モデル学習後のデプロイメントが複雑だと... - メンテナンスコストが高い - プロセスが複雑だと,オペレーションミスが発生する可能性も - 素早くモデルをプロダクションに適用できない場合も - e.g. 既存のものだと... - ETLは自動化されているが,モデル作成 & デプロイは手動 モデルデプロイメントの仕組みを構築 (モデルデプロイの話はレコメンドシステムとは別システムの話になりますが,MLエンジニアとしての苦労話として...)

Slide 27

Slide 27 text

モデル学習からデプロイメントまで自動化 独自のカスタムコンテナ イメージを利用 実験管理はSageMaker Experimentsを使用 Step Functionsを用いてパイプライン全体を管理 ・学習にはSageMaker Training Jobを利用 ・実験結果をExperimentsとシームレスに接続 ・それ以外はProcessing Jobを利用 アーティファクトはS3に保存 モデルのデプロイまでStep Functions内で完結 デプロイ後はSageMakerでエンドポイントをホスティング カスタムコンテナイメージを利 用し,独自の推論処理を実装 Ref. 1. SageMakerとStep Functionsを用いた機械学習パイプラインで構築した検閲システム(前編) 2. SageMakerとStep Functionsを用いた機械学習パイプラインで構築した検閲システム(後編)

Slide 28

Slide 28 text

モデル学習からデプロイメントまで自動化 “複雑なステップを踏まずにプロセスをシンプルにしたい” ※ 元々モデルデプロイメントの仕組みは整っていなかった状態 SageMakerとStep Functionsによる一気通貫したパイプラインの構築 - 低コストでモデル学習からデプロイメントまで可能🎉 - AWS特有の記述を意識せずシンプルにできる - 手動オペレーションが入らないので,素早くサービスインできる状態までいける🎉 - ML-APIからのエンドポイントの切り替えでいつでも使える状態に! - パイプラインにすることで,実験結果を取得するジョブも簡単に追加可能🎉

Slide 29

Slide 29 text

MLSysの運用と改善 機械学習システムが稼働した後は運用のフェーズ - アラート通知 - システム運用手順の整理 - モニタリングダッシュボード作成 - MLシステムの継続的な改善 - ML Test Scoreなどを参考

Slide 30

Slide 30 text

MLSysの運用と改善 ● システム運用手順の整理 - アラートやエラーが発生した場合に,どのように動くか対応はどう するかなど曖昧になっている部分が多かった → ユーザー影響 - 取り組み: - テンプレートを作成し,ドキュメンテーション - アラートパターン(エラーパターン)毎の対応を定義 - アラートレベル:warn or critical - エラー時に実際どのように動くかを予め決めておく - 関係者同士での合意形成 - 何を監視すべきか,通常の業務の中でどのように取り入れてい くかを議論することで運用レベルを上げる 手順書(runbook)

Slide 31

Slide 31 text

MLSysの運用と改善 ● オンライン/オフラインメトリクスを横断して見れるダッシュボードの作成 - モデルの改善がビジネスメトリクスの改善に繋がっているのかわかりにくい → 紐付けて見れると分析しやすい - 取り組み: - モデル学習のパイプラインに実験結果を抽出して保存できる処理を追加 → S3にデータを保存 - S3 → Athena → redashと連携し,BIツールで見れる仕組みを構築 - 連携項目 - ハイパーパラメータ,オフラインメトリクス,モデルパス,学習時間 ...etc メトリクスダッシュボード アーキテクチャー

Slide 32

Slide 32 text

色んなことを紹介しましたが...

Slide 33

Slide 33 text

色んなことを紹介しましたが... ● ユーザーにとって何がベストなのかを考えるので,正直ロールはあまり気にしていない ○ 専門的なポジションの人が居るなら,その人に任せる ○ 居ない & その人が忙しいなら,自分がする気持ち ■ わからないことは聞いて教えて貰う & 勉強する ○ What & Whyを大事に,Howから入らずバランス良く(エンジニアとしてこだわりは持ちたいが柔軟に!) ● 属人化しない取り組みが大事! ○ 人が少ないと属人化しがちだが,少しでもいいのでできることを増やす ■ チームでオーバーラップする部分を増やす ○ 自動化することも考えるが,使われない & メンテナンスされないと負債になるので注意 ○ 統一化されたドキュメントでの合意形成 ■ 再現性 / テンプレート活用(Design Doc) ● キャプチャー/gifなどを使って,わかりやすく

Slide 34

Slide 34 text

最後にプロダクト貢献も少しだけ紹介 CTR100%改善 (リリース後1年間の平均) レコメンドシステムの新規開発 コスト削減 検閲システムのプロダクション導入 サービス品質向上(回答率向上) CSチームの心理的な負荷軽減

Slide 35

Slide 35 text

まとめ ● 複数の役割に関する仕事をしてきたが,ユーザーにとってベストなことを常に意識して動くよう にしている ● 機械学習を活用してプロダクト・サービスへ貢献するために,必要なことは全方位でやる ○ 機械学習ってやっぱり価値高い・必要不可欠だよね!と言われるような状態にしたい! ● 機械学習はサービスインしてからが本番だと思うので,MLOpsによる継続改善が必要 ● 役割が多いとやっぱり大変😅 ○ コンテキストの切り替え ○ やりたいことに取り組む時間が足りない → 中途半端になることも... ○ 広く浅くになる(スキルは一通り身に付くが...)

Slide 36

Slide 36 text

References URL ● https://ml-ops.org/content/crisp-ml ● https://neptune.ai/blog/ml-experiment-tracking ● https://speakerdeck.com/connehito/konehitoniokeruji-jie-xue-xi-guan-lian-ye-wu-falseshao-jie-zi-lia o?slide=26 ● https://tech.connehito.com/entry/2022/03/24/173719 ● https://tech.connehito.com/entry/2022/03/28/190436

Slide 37

Slide 37 text

さいごに

Slide 38

Slide 38 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 39

Slide 39 text

イベントの告知 MLエンジニアが語る、プロダクトを成長させる技術と組織:オフライン開催のみ 【開催日時】2月3日 (金) 19:00〜22:00 (21:00より懇親会を予定) 【会場】https://place.lp-note.com/ 【ハッシュタグ】#MLとプロダクト成長を考える 【イベントページ】https://pieceofcake.connpass.com/event/271740/ イベントページ QRコード

Slide 40

Slide 40 text

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