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

JAWS-UG AI/ML #15 - SageMaker Experimentsで始める機械学習モデルの実験管理

JAWS-UG AI/ML #15 - SageMaker Experimentsで始める機械学習モデルの実験管理

JAWS-UG AI/ML #15の登壇スライドです.
https://jawsug-ai.connpass.com/event/263957/

SageMakerを使った機械学習モデルの学習の際に,ミニマムな実験管理ツールとして,SageMaker Experimentsを使った例を紹介しています.

Masataka Kashiwagi

January 17, 2023
Tweet

More Decks by Masataka Kashiwagi

Other Decks in Technology

Transcript

  1. SageMaker Experimentsで始める
    機械学習モデルの実験管理
    2023/01/17
    JAWS-UG AI/ML #15
    Masataka Kashiwagi

    View full-size slide

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

    View full-size slide

  3. アジェンダ
    ☑ 自己紹介
    □ SageMaker Experimentsで始める機械学習モデルの実験管理(古い情報も入ってます󰢛)
    - なぜ実験管理が必要か
    - SageMaker Experimentsとは?
    - 実験結果の活用方法
    - プロジェクトの管理方法
    - 実験結果をダッシュボードに連携
    - (時間に余裕があれば)Callback関数をカスタマイズしてロギング
    □ まとめ
    ※ 本資料は後ほど公開します!

    View full-size slide

  4. なぜ実験管理が必要か

    View full-size slide

  5. 機械学習におけるモデル開発の特徴とは?

    View full-size slide

  6. モデル開発の特徴
    機械学習のモデル開発の性質として,以下のような特徴がある
    ● Experimentation(何度も実験を繰り返すイテレーティブな取り組み)
    ○ アルゴリズムの選択
    ○ ハイパーパラメータの設定
    ○ 特徴量エンジニアリング
    ○ 評価指標
    ● Randomization(一定のランダム要素が加わる)
    ○ 初期値
    ○ ノイズ・オーグメント

    View full-size slide

  7. ここで問題になってくるのが...
    ● あの実験の結果ってどうだったかな?
    ● この実験って以前やったような?
    ● AとBの実験結果の比較をしたいな...
    ● 情報整理するの大変だな...
    etc...

    View full-size slide

  8. なぜ実験管理が必要なのか?
    ● 効率良く開発
    ● 再現性を担保
    → 大量の実験情報を管理する必要がある!

    View full-size slide

  9. 機械学習における再現性とは何か?
    再現性を成す要素として以下があげられる
    ● Code
    ○ 実験中のコードとアルゴリズム
    ● Data
    ○ 実験に使用したデータセット(学習・検証・テスト)
    ● Environment
    ○ フレームワークの依存関係,バージョン,使用したハードウェアなど
    ● Model parameters
    ○ 学習プロセスに関連するハイパーパラメータやシードなどのパラメータ
    Ref.
    1. Why reproducibility is important for ML

    View full-size slide

  10. SageMaker Experimentsとは?

    View full-size slide

  11. SageMaker Experimentsとは?
    公式ドキュメントによると
    “Amazon SageMaker Experiments is a capability of Amazon SageMaker that lets you
    organize, track, compare, and evaluate your machine learning experiments.”
    機械学習モデルの再現性を担保するために必要な情報を収集して管理することができる機能で,
    記録をGUI上から確認することができる
    2022年12月16日に大幅アップデート!
    Next generation Amazon SageMaker Experiments – Organize, track, and compare your
    machine learning trainings at scale
    Ref.
    1. Manage Machine Learning with Amazon SageMaker Experiments
    2. Next generation Amazon SageMaker Experiments – Organize, track, and compare your machine learning trainings at scale

    View full-size slide

  12. SageMaker Experimentsとは?

    View full-size slide

  13. SageMaker Experimentsとは?

    View full-size slide

  14. ミニマムな実験管理ツールとしてのsmexperiments
    実験管理ツールに期待すること...(最低限,パラメータやメトリクスを保存できつつ)
    ● チームで情報を共有することができる
    ● 運用管理に時間が取られない
    ● 結果をcsvなどでエクスポートできる
    ● 実験結果のトラッキング
    ● アーティファクトの情報
    ...etc
    Ref.
    1. ML Experiment Tracking: What It Is, Why It Matters, and How to Implement It
    Experiment tracking vs ML model management vs MLOps

    View full-size slide

  15. ミニマムな実験管理ツールとしてのsmexperiments
    ※ 最新のアップデート情報と乖離する場合があるかもしれないです
    SageMaker Experimentsの特徴:
    ● SageMaker StudioのUIからチーム間で情報を共有できる
    ● SageMakerの機能の一つなので,専用のサーバーを立てて管理する必要はない
    ○ OSSの実験管理ツールをホスティングするより,運用の手間が省ける
    ● APIが用意されているので,メタデータをcsvにして保存できる
    ● SageMaker Training Jobによるモデル学習で,自動的にメトリクスを保存できる
    ○ metric_definitionsの引数に正規表現を駆使して定義する
    ○ 最新のアップデートでは,run.log_metricで簡単にロギングできる
    ● 実験単位で情報を分割しながら記録できる

    View full-size slide

  16. 参考:実験管理コンポーネント
    SageMaker Experimentsの3つのコンポーネント
    - Experiment・Trial・Trial Components
    左側から順番に上位の概念(クラス)
    e.g. あるプロジェクトを考えてみると...
    - 1つのExperimentを作成する(1プロジェクトに相当)
    - Tracker.createでTrackerを作成
    - Experimentのメタデータを記録&追跡
    - Trial.createで実行するジョブ毎にTrialを作成
    - Experimentに紐づく実験単位
    - Tracker情報を付与
    コンポーネントの仕組み

    View full-size slide

  17. 再現性のための4要素 - smexperiments
    ● Code
    ○ 実験中のコードとアルゴリズム → この部分は管理が難しいが,Gitリポジトリ連携可能
    ● Data
    ○ sagemaker.inputs.TrainingInputでS3のデータを指定可能
    ■ パスなどをメタデータとしても残すことも可能(log_input, log_output)
    ○ モデルの保存場所などアーティファクトの情報は自動的に記録される(log_artifact)
    ● Environment
    ○ ジョブ実行に関連したインスタンス情報は取得可能
    ● Model parameters
    ○ Scikit Learn/TensorFlow/PyTorch Estimatorのhyperparameters引数に指定 or
    set_hyperparametersでパラメータをセット(log_parameters, log_metric)

    View full-size slide

  18. SageMakerを使ったモデル学習
    → ミニマムに実験管理を始めるなら,
      SageMaker Experimentsの選択もあり

    View full-size slide

  19. smexperimentsの少し物足りない or 使いづらい部分
    ● 実装方法がSageMakerのフレームワークに依存する
    ○ 特有のお作法があってそれに則る必要があり,その理解に時間がかかる
    ○ Experiment・Trial・Trial Componentsの関係性
    ● 全く不要な実験結果の削除がUIからできない
    ○ コマンド実行で削除できるが,順番に削除していく必要があり大変
    ● (実験後の結果に対するコメント記入)
    ● 世の中にそもそもSageMaker Experimentsに関する情報が少ない

    View full-size slide

  20. 実験結果の活用方法

    View full-size slide

  21. プロジェクトの管理方法はどうするか?

    View full-size slide

  22. プロジェクトの管理方法
    どの単位で「Experiment・Trial・Trial Components」を分割すればいいか?
    - 我々のチームの一例を紹介(他にも良い方法があると思います...)
    - レコメンドシステムを例にすると
    Experiment
    Trial
    Trial Components
    Trial
    Trial Components
    Experiment
    ● Experiment
    ○ 複数あるレコメンドシステム毎に作成
    ● Trial
    ○ バージョン毎に作成(e.g. アルゴリズムが変わ
    るとバージョンを更新)
    ● Trial Components
    ○ モデルの作成タイミング毎に作成(日毎に作ら
    れていく)

    View full-size slide

  23. 実験結果をダッシュボードに連携してみる

    View full-size slide

  24. 実験結果をダッシュボードに連携
    実験結果のオフラインメトリクスとビジネスメトリクスの関係が知りたい!
    - モデルの改善がビジネスメトリクスの改善に繋がるかどうかを把握する
    How:
    ● 実験結果のcsvファイルをS3に配置し,そのファイルをAthenaに連携
    ● データソースをAthenaとして,redashで実験結果を可視化

    View full-size slide

  25. 実験結果をダッシュボードに連携
    ● モデルの情報や実験中に取得したメトリクス情報などを連携
    ● ダッシュボードに連携することで,ビジネスサイドのメンバーも確認できる
     → 連携したことで,ビジネスメトリクスとの紐付けが可能になり,モデルとの関係性
      を知ることができるように!
    連携した情報見れるredashの画面

    View full-size slide

  26. Callback関数をカスタマイズしてみる

    View full-size slide

  27. Callback関数をカスタマイズしてロギング
    SageMaker Experimentsで実験結果のメトリクス(loss, acc, rmse...etc)を上手く収集するためには
    ,Callback関数のカスタマイズが良い → metric_definitionsで指定が容易になる
    e.g. TrainとValidationのLossやMetricsを両方残したい場合
    Tensorflow:
    - model.fit(callbacks=[CustomCallback()])
    PyTorch:
    - trainer = Trainer(callbacks=[CustomCallback()])
    Tensorflow PyTorch (pytorch_lightning)
    tf.keras.callbacks.Callback pytorch_lightning.callbacks.Callback
    Tensorflowの場合

    View full-size slide

  28. Callback関数をカスタマイズしてロギング:Tensorflowの例
    Ref.
    1. TensorflowのCallback関数をカスタマイズ
    2. Train an TensorFlow model with a SageMaker Training Job and track it using SageMaker Experiments
    以前のログ取得方法であるmetric_definitionsを使う場合[1]
    - Training JobのEstimator引数のmetric_definitionsに
    NameとRegexを指定することで,実験ログを記録できる
    現在はrun.log_metricに必要な値をセットすることでより簡単
    に実験ログを記録することができる![2]

    View full-size slide

  29. Callback関数をカスタマイズしてロギング:SageMaker Studio
    SageMaker Experimentsの結果画面
    - metric_definitionsで指定したログがSageMaker StudioのUIから確認できる
    Metrics
    Parameters

    View full-size slide

  30. まとめ
    ● 機械学習モデルの開発において再現性はとても大事な要素!
    ● SageMakerでモデル学習を行うなら,ミニマムな実験管理ツールとしてSageMaker
    Experimentsを選択するのもあり
    ● プロジェクトの管理単位は慎重に!
    ● 実験結果はダッシュボードに連携しておくと,ビジネスメトリクスとの比較も可能
    ● 欲しい情報を取得するために,Callback関数をカスタマイズするのも一つの方法

    View full-size slide

  31. SageMaker Experimentsを使った機械学習モデルの実験管理
    ● 詳しくはテックブログを見て頂ければ!(最新の情報ではないので,ご注意を!)
    ○ https://tech.connehito.com/entry/2021/12/15/181332

    View full-size slide

  32. References URL
    ● https://www.qwak.com/post/why-reproducibility-is-important-for-ml
    ● https://docs.aws.amazon.com/sagemaker/latest/dg/experiments.html
    ● https://aws.amazon.com/jp/blogs/machine-learning/next-generation-amazon-sagemaker-experiments-
    organize-track-and-compare-your-machine-learning-trainings-at-scale/
    ● https://neptune.ai/blog/ml-experiment-tracking
    ● https://masatakashiwagi.github.io/portfolio/post/customize-tf-callback/
    ● https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-experiments/sagemaker_j
    ob_tracking/tensorflow_script_mode_training_job.ipynb

    View full-size slide

  33. さいごに

    View full-size slide

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

    View full-size slide

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

    View full-size slide