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

  2. 自己紹介 名前:柏木 正隆(Masataka Kashiwagi) 所属:コネヒト株式会社 - 機械学習エンジニア 出身:大阪府 SNS Twitter:@asteriam_fp

    Podcast:@double_m2ml お仕事 • レコメンドエンジンの開発 • 検索システムのデータ整備(←最近のメインのお仕事) • MLOpsの推進 MLOps勉強会の運営メンバーとしても活動してます! Twitterアイコン
  3. アジェンダ ☑ 自己紹介 □ SageMaker Experimentsで始める機械学習モデルの実験管理(古い情報も入ってます󰢛) - なぜ実験管理が必要か - SageMaker

    Experimentsとは? - 実験結果の活用方法 - プロジェクトの管理方法 - 実験結果をダッシュボードに連携 - (時間に余裕があれば)Callback関数をカスタマイズしてロギング □ まとめ ※ 本資料は後ほど公開します!
  4. なぜ実験管理が必要か

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

  6. モデル開発の特徴 機械学習のモデル開発の性質として,以下のような特徴がある • Experimentation(何度も実験を繰り返すイテレーティブな取り組み) ◦ アルゴリズムの選択 ◦ ハイパーパラメータの設定 ◦ 特徴量エンジニアリング

    ◦ 評価指標 • Randomization(一定のランダム要素が加わる) ◦ 初期値 ◦ ノイズ・オーグメント
  7. ここで問題になってくるのが... • あの実験の結果ってどうだったかな? • この実験って以前やったような? • AとBの実験結果の比較をしたいな... • 情報整理するの大変だな... etc...

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

  9. 機械学習における再現性とは何か? 再現性を成す要素として以下があげられる • Code ◦ 実験中のコードとアルゴリズム • Data ◦ 実験に使用したデータセット(学習・検証・テスト)

    • Environment ◦ フレームワークの依存関係,バージョン,使用したハードウェアなど • Model parameters ◦ 学習プロセスに関連するハイパーパラメータやシードなどのパラメータ Ref. 1. Why reproducibility is important for ML
  10. SageMaker Experimentsとは?

  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
  12. SageMaker Experimentsとは?

  13. SageMaker Experimentsとは?

  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
  15. ミニマムな実験管理ツールとしてのsmexperiments ※ 最新のアップデート情報と乖離する場合があるかもしれないです SageMaker Experimentsの特徴: • SageMaker StudioのUIからチーム間で情報を共有できる • SageMakerの機能の一つなので,専用のサーバーを立てて管理する必要はない

    ◦ OSSの実験管理ツールをホスティングするより,運用の手間が省ける • APIが用意されているので,メタデータをcsvにして保存できる • SageMaker Training Jobによるモデル学習で,自動的にメトリクスを保存できる ◦ metric_definitionsの引数に正規表現を駆使して定義する ◦ 最新のアップデートでは,run.log_metricで簡単にロギングできる • 実験単位で情報を分割しながら記録できる
  16. 参考:実験管理コンポーネント SageMaker Experimentsの3つのコンポーネント - Experiment・Trial・Trial Components 左側から順番に上位の概念(クラス) e.g. あるプロジェクトを考えてみると... -

    1つのExperimentを作成する(1プロジェクトに相当) - Tracker.createでTrackerを作成 - Experimentのメタデータを記録&追跡 - Trial.createで実行するジョブ毎にTrialを作成 - Experimentに紐づく実験単位 - Tracker情報を付与 コンポーネントの仕組み
  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)
  18. SageMakerを使ったモデル学習 → ミニマムに実験管理を始めるなら,   SageMaker Experimentsの選択もあり

  19. smexperimentsの少し物足りない or 使いづらい部分 • 実装方法がSageMakerのフレームワークに依存する ◦ 特有のお作法があってそれに則る必要があり,その理解に時間がかかる ◦ Experiment・Trial・Trial Componentsの関係性

    • 全く不要な実験結果の削除がUIからできない ◦ コマンド実行で削除できるが,順番に削除していく必要があり大変 • (実験後の結果に対するコメント記入) • 世の中にそもそもSageMaker Experimentsに関する情報が少ない
  20. 実験結果の活用方法

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

  22. プロジェクトの管理方法 どの単位で「Experiment・Trial・Trial Components」を分割すればいいか? - 我々のチームの一例を紹介(他にも良い方法があると思います...) - レコメンドシステムを例にすると Experiment Trial Trial

    Components Trial Trial Components Experiment • Experiment ◦ 複数あるレコメンドシステム毎に作成 • Trial ◦ バージョン毎に作成(e.g. アルゴリズムが変わ るとバージョンを更新) • Trial Components ◦ モデルの作成タイミング毎に作成(日毎に作ら れていく)
  23. 実験結果をダッシュボードに連携してみる

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

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

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

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

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

    • 欲しい情報を取得するために,Callback関数をカスタマイズするのも一つの方法
  31. SageMaker Experimentsを使った機械学習モデルの実験管理 • 詳しくはテックブログを見て頂ければ!(最新の情報ではないので,ご注意を!) ◦ https://tech.connehito.com/entry/2021/12/15/181332

  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
  33. さいごに

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

    or Wantedly経由など...ご連絡お待ちしています!   Twitter: https://twitter.com/asteriam_fp   Wantedly: https://www.wantedly.com/companies/connehito/projects
  35. おわり ご静聴ありがとうございました!