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

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

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

MoT/コネヒト/Kanmu が語るプロダクト開発xデータ分析の登壇スライドです.
https://kanmu.connpass.com/event/270440/

プロジェクト推進・データ分析から機械学習システムの開発まで一人で複数ロールを担って進めていく苦労話とそこでの経験・知見を紹介しています.

Masataka Kashiwagi

January 26, 2023
Tweet

More Decks by Masataka Kashiwagi

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. 会社とサービスの紹介

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. コネヒトにおけるMLエンジニアの役割
    Ref.
    1. コネヒトにおける機械学習関連業務の紹介資料
    データアナリスト・データサイエンティスト的な役割

    必要に応じてデータエンジニア的な役割も担う
    MLエンジニア的な役割

    システム運用のフェーズに入ると
    MLOpsエンジニア的な役割も担う
    Model Development & Operations Business and Data Understanding
    CRISP-MLのフェーズで
    ざっくり分けてみると...

    View Slide

  13. コネヒトにおけるMLエンジニアの役割
    Ref.
    1. コネヒトにおける機械学習関連業務の紹介資料
    データアナリスト・データサイエンティスト的な役割

    必要に応じてデータエンジニア的な役割も担う
    MLエンジニア的な役割

    システム運用のフェーズに入ると
    MLOpsエンジニア的な役割も担う
    機械学習に関連する全方位の役割😊

    View Slide

  14. コネヒトにおけるMLエンジニアの役割
    Ref.
    1. コネヒトにおける機械学習関連業務の紹介資料
    データアナリスト・データサイエンティスト的な役割

    必要に応じてデータエンジニア的な役割も担う
    MLエンジニア的な役割

    システム運用のフェーズに入ると
    MLOpsエンジニア的な役割も担う
    普通にめっちゃ大変!😂

    View Slide

  15. ここ最近の経験を紹介

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. 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
    は大事な要素!

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. 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

    View Slide

  37. さいごに

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide