Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

なぜ実験管理が必要か

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

SageMaker Experimentsとは?

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

SageMaker Experimentsとは?

Slide 13

Slide 13 text

SageMaker Experimentsとは?

Slide 14

Slide 14 text

ミニマムな実験管理ツールとしての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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

再現性のための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)

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

実験結果の活用方法

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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の場合

Slide 28

Slide 28 text

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]

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

さいごに

Slide 34

Slide 34 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 35

Slide 35 text

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