[レポート]AIM362-R1 – Amazon SageMakerを使った構築、学習&デバッグ、デプロイ&モニタリング #reinvent
どうも、DA事業本部の大澤です。
本エントリはAWS re:Invent 2019のワークショップ「AIM362-R1 - [NEW LAUNCH!] [REPEAT 1] Build, train & debug, and deploy & monitor with Amazon SageMaker」のレポートです。
セッション概要
Amazon SageMaker is a fully managed service that removes the heavy lifting from each step of the machine learning (ML) workflow and provides every developer and data scientist with the ability to build, train, and deploy ML models quickly. In this interactive workshop, we work on the different aspects of the ML workflow to build, train, and deploy a model using all the capabilities of Amazon SageMaker, including the ones that we announced at re:Invent this week. We use Amazon SageMaker to build and share notebooks, train and debug models with Amazon SageMaker Debugger, and deploy and monitor with Amazon SageMaker Model Monitor. Let’s build together!
意訳
Amazon SageMaker は機械学習(ML)ワークフローの各ステップから重荷を取り除き、開発者とデータサイエンティストにクイックなMLモデルの構築や学習、デプロイを可能にするフルマネージドサービスです。このインタラクティブなワークショップでは、今週のre:Inventで発表されたものを含むAmazon SageMakerでできることを活用し、モデルの構築や学習、デプロイのMLワークフローの様々な面に取り組みます。ノートブックの作成と共有にノートブックを、モデルの学習とデバッグにAmazon SageMaker Debuggerを、デプロイとモニタリングにAmazon SageMaker Model Monitorを使用します。一緒に構築しましょう!
スピーカー
- Giuseppe Angelo Porcelli - Principal, Specialist Solutions Architect - Machine Learning, Amazon Web Services
- Paul Armstrong - Principal Solutions Architect, Amazon Web Services
レポート
ワークショップの
ワークショップの前に次のような内容の説明がありました。
- Amazon SageMakerの概要
- 機械学習モデルの構築からホスティングまでをサポートしたフルマネージドサービス
- 機能に応じた様々な周辺サービスがある
- 例えばAmazon SageMaker Studio、Amazon SageMaker Model、 Amazon SageMaker Debuggerなど
- 機能に応じた様々な周辺サービスがある
- 参考: What Is Amazon SageMaker? - Amazon SageMaker
- 機械学習モデルの構築からホスティングまでをサポートしたフルマネージドサービス
- 機械学習モデルの学習時とホスティング時ではそれぞれ困難が待ち受けている
- Amazon SageMaker Debugger
- モデル学習時の困難を解消
- モデルを分析する
- モデルの理解を促す
- 学習時に異常がないかチェックする
- 例えば過学習や勾配消失など
- 参考: Amazon SageMaker Debugger - Amazon SageMaker
- Amazon SageMaker Model Monitor
- モデルのホスティング時の困難の解消
- 入力データを分析し、ホスティング時に異常がないかチェックする
- 例えば入力データの変化など
- 参考: Amazon SageMaker Model Monitor - Amazon SageMaker
ワークショップ
ネットワークトラフィックのデータセットを使った分類モデルを作成するというのがテーマです。
- やること
- Amazon SageMakerでモデルを学習し、Amazon SageMaker Debuggerを使ってデバッグを行う
- Amazon SageMakerでモデルをデプロイし、Amazon SageMaker Model Monitorを使ってモニタリングを行う
- 資料/ノートブック
- データセット
ここからはワークショップで実行したノートブックの内容を抜粋して紹介します。
モデルの学習とデバッグ
使用するデータはこんな感じです。
Debuggerコンフィグと満たしているか確認したいルールを設定し、モデルを学習させます。学習ジョブと一緒にルールの評価ジョブもAmazon SageMaker Processingで実行されます。
ルールの評価ジョブを確認します。
7ステップ目でロスが減少しなくなっているようです。過学習の可能性があります。
Amazon SageMaker Debugger用のSDKを使用して、手動での分析も行ってみます。 学習ジョブをトライアルとして扱い、データを取得します。
トライアルデータからメトリクスのログを取り出し、プロットします。
同様にトライアルデータから特徴量の重要度を取り出し、プロットします。
最後にトライアルデータの推論結果とそのラベルから混同行列をプロットしてみます。
モデルのデプロイとモニタリング
次にモデルのデプロイとモニタリングを行います。
モデルのモニタリングを行うため、デプロイ時にdata_capture_config
を設定します。
デプロイしたモデルで推論してみます。
データキャプチャの設定をしていたので、推論時の入出力データはS3に保存されています。 保存されたデータを確認します。
モデルのモニタリングは基本的にまずは各特徴量ごとに基準となるデータの統計情報を求めます。定期的にモデルへの入力データを集計し、入力データの統計情報を求めます。基準となるデータ情報と新しく集計して得た入力データの統計情報が異なっていた場合に制限(constraint
)違反となります。入力データの統計情報がどう異なると制限違反になるかは制限ルールによって変わります。
まずはModelMonitor
を作成し、基準となるデータの統計情報を求めます。
統計情報を部分的に確認してみます。
各特徴量の各制限ごとの情報を見てみます。
次に定期的に推論データを集計するようにスケジューラを設定します。スケジュールはcron表現で書くことができます。
今回はスケジューラでの集計の実行を待たずに、手動で実行します。
制限違反が発生していないか確認します。
9つの列/特徴量でデータの型が異なっていたようです。
さいごに
AWS re:Invent 2019のワークショップ「AIM362-R1 - [NEW LAUNCH!] [REPEAT 1] Build, train & debug, and deploy & monitor with Amazon SageMaker」のレポートをお伝えしました。新しくリリースされたAmazon SageMaker DebuggerとModel Monitorを用いた、モデルの学習からデプロイの流れと機能がざっくりと確認できました。これらの機能を活用することで、モデルの学習と運用どちらも楽になる可能性があります。みなさんも試してみてはいかがでしょうか。
参考
- Amazon SageMaker Debugger - Amazon SageMaker
- Amazon SageMaker Model Monitor - Amazon SageMaker
- aws/sagemaker-python-sdk: A library for training and deploying machine learning models on Amazon SageMaker
- awslabs/sagemaker-debugger: Amazon SageMaker Debugger provides functionality to save tensors during training of machine learning jobs and analyze those tensors