実験、モデルのトレーニングおよび評価:AWS SageMakerを使用して6つの主要なMLOpsの質問を探求する
実験、モデルのトレーニングおよび評価:AWS SageMakerを活用した6つの主要なMLOpsの疑問を探求
この記事はAWS SageMakerシリーズの一部で、「31 Questions that Shape Fortune 500 ML Strategy」の探索の一環です。
これは何ですか?
前のブログ投稿「データ取得と探索」および「データ変換と特徴エンジニアリング」では、AWS SageMakerの機能がデータサイエンティストが協力し、データの探索、理解、変換、特徴エンジニアリングを加速するのにどのように役立つかということを探求しました。
このブログ投稿では、実験、モデルトレーニング、評価に関連する重要な質問に焦点を当て、AWS SageMakerがこれらの問題に対処するのにどのように役立つかを探求します。
▢ [自動化] データサイエンティストは、トレーニング、検証、テストの目的でデータを自動的にパーティション分割することができますか?▢ [自動化] 既存のプラットフォームは、複数の標準アルゴリズムの評価を加速し、ハイパーパラメータの値を調整するのに役立ちますか?▢ [協力] データサイエンティストは、実験、設定、トレーニング済みモデルを共有することができますか?▢ [再現性] 実験の出力の再現性をどのように確保できますか?▢ [再現性] トレーニング済みモデルの異なるバージョンを追跡および管理するにはどうすればよいですか?▢ [ガバナンスとコンプライアンス] モデルの決定を説明し、バイアスを検出するために、モデルの境界を追跡するにはどうすればよいですか?
ユースケースとデータセット
詐欺検出ユースケース、データセットジェネレーター、および生成された顧客データとトランザクションデータセットを再利用します。
SageMaker Wranglerでデータセットをパーティション分割する
[✓] [自動化] データサイエンティストは、トレーニング、検証、テストの目的でデータを自動的にパーティション分割することができますか?
以前の記事で、SageMakerがモデル開発のデータ理解、変換、特徴作成のプロセスを加速する方法を探求しました。
データの品質とカバレッジは、モデルの結果に重要な役割を果たします。モデルがより大きなデータセットにアクセスすることを望みますが、完全なデータセットでモデルをトレーニングしないようにする必要があります。
なぜですか?
- 過学習を避ける:モデルはパターンを理解することが重要であり、単に記憶するだけでない。
- バイアスのない評価:ライブデータは常に未知のもの。
- チューニング:ハイパーパラメータの最適な値の選択を自動化する。
これは何ですか?
したがって、モデルが未知のデータにうまく適用されることを確認するためには、異なるデータセットを持つことが重要です:
- トレーニングデータ: モデルのパラメーターをトレーニングします。
- 検証データ: ハイパーパラメータの値を調整します。
- テストデータ: 最終モデルのパフォーマンスを評価します。
いつですか?
テストまたは検証データセットからトレーニングデータセットへのデータ漏えいを防ぐためには、オーバーサンプリングなど、データセット全体を参照する変換は分割後に別々に行う必要があります。
どうやって?
SageMaker Wranglerには、ランダム、順序、キー、または層別化のデータ分割のための組み込みの変換機能があります。詳細については、データ変換と特徴エンジニアリングを参照してください。
⚠️ ㅤ Data Wranglerの無料枠は、2ヶ月間につき1か月25時間のml.m5.4xlargeインスタンスのみ提供されます。さらに、S3への読み書きに関連するコストもかかります。
SageMaker AutoPilotで実験する
[✓] [自動化] 既存のプラットフォームは、複数の標準アルゴリズムの評価を加速し、ハイパーパラメータの調整値をチューニングするのに役立ちますか?
素晴らしいですね!これまでに、SageMakerがデータのクリーンアップ、変換、特徴抽出に関する懸念を簡単に解決できることを見てきました。また、データをトレーニング、検証、テストのセットに分割するプロセスも簡略化されました。さて、データサイエンティストにとって重要な次のステップは、この準備されたデータを利用してモデルの構築を開始することです。SageMakerがこのプロセスをどのように加速できるか見てみましょう。
このセクションでは、モデルのトレーニングと評価を自動化するAWSのサービスSageMaker AutoPilotに焦点を当てます。
💡 AutoPilotは機能豊富なツールであり、以前は他の記事で手動で行っていた欠損データの処理など、さまざまなデータ変換を自動的に処理することができます。さらに、AutoPilotはデータをトレーニングと検証のグループに自動的に分割することもできます。
テストデータと検証データのエクスポート:
開始する前に、将来のモデル評価のためにテストデータセット(オプションで検証データセットも)をエクスポートしましょう。これを行うには、「Export to S3」 wranglerアクションをテストデータセットと検証データセットの両方に追加し、wranglerジョブを実行します。(なぜトレーニングデータではないのですか?)
⚠️ ㅤ処理のために「ml.m5.4xlarge」インスタンスのクォータ増加リクエストを上げる必要があるかもしれません。
トレーニングデータのエクスポート:
熱心な読者は、なぜトレーニングデータセットを先にエクスポートしなかったのか疑問に思うかもしれません。実は、エクスポートすることもできます!ただし、このステップはスキップしました。というのも、SageMaker Studioで「Train」というオプションを選択すると、トレーニングの出力は自動的にエクスポートされるからです。
前の2つのステップを完了すると、S3にはテスト用、検証用、トレーニング用の3つのフォルダができます。各フォルダには、マニフェストファイルによってインデックスされた複数のパーツに分割されたデータセットが含まれます。
AutoPilot実験の設定
データがエクスポートされたので、モデルのトレーニングを開始できます。「Export & Train」をクリックすると、AutoPilotウィザードにリダイレクトされます。ウィザードには、プロセスを細かく調整するためのさまざまなセクションやオプションが用意されています。
1. 実験とデータの詳細: ここでは、トレーニングデータセットと検証データセット、およびモデルやレポートなどの実験の出力が保存される出力先の場所を指定することができます。この例では、エクスポートされたマニフェストファイルとパーツをトレーニングと検証に設定しました。
2. ターゲットと特徴: ターゲットとターゲットに影響を与える特徴を選択してください。
3. トレーニング方法とアルゴリズム: SageMaker AutoPilotには、複数のアルゴリズムを自動評価し、最適なモデルを選択するためにAutoを選択してください。
4. デプロイと高度な設定: 最適なモデルを導入してください。オプションで、試行あたりまたは全体のジョブ時間を制限してコストの制御を行うなど、実験設定を調整することもできます。
AutoPilotを使用してトレーニングする
設定を確認した後、実験を作成することができます。これにより、複数の試行がトリガされ、AutoML > 自分の実験の下で見つけることができます。実験が終了すると、最適なモデルが表示されます。
ジョブの出力には、データの探索および手動での微調整のためのモデル候補の生成に対するノートブックも含まれます。
最適なモデルをテストする
最適なモデルがあるので、以前にエクスポートしたテストデータを使用してテストしてみましょう。
AutoMLウィザードのフロー中に「自動デプロイ」を選択しなかった場合は、実験UIからモデルを手動で展開することもできます。「デプロイとサービング」の次の記事でデプロイについて詳しく説明します[LINK]。
⚠️ ㅤ バッチモードの場合は、トランスフォームジョブの使用のためにインスタンスのクオータインクリース要求を行う必要があるかもしれません。
今のところ、リアルタイムモードで展開し、いくつかのリクエストデータを送信して応答を観察しましょう。エンドポイントをクエリするために、UIまたはCLIのいずれかを使用できます。
CLIを使用するには、クラウドシェルを開き、以下のコマンドを実行してください:
# 予期されるリクエストペイロードを理解するために、無効なデータを送信しましょう aws sagemaker-runtime invoke-endpoint --body `echo 'example' | base64` --endpoint-name automl-fraud-detection --content-type text/csv /dev/stdout > Exception: Invalid data format. Input data has 1 while the model expects 6 > ['customer_id_0', 'state', 'amount', 'transaction_time', 'transaction_state', 'time_of_day'] <class 'list'># より高い金額(947.98)を送信しましょうaws sagemaker-runtime invoke-endpoint --body `echo 2,TX,947.08,1695574580,TX,16 | base64` --endpoint-name automl-fraud-detection --content-type text/csv /dev/stdout> 1.0 // 不正行為# より低い金額(947.98)を送信しましょうaws sagemaker-runtime invoke-endpoint --body `echo 2,TX,94.08,1695574580,TX,16 | base64` --endpoint-name automl-fraud-detection --content-type text/csv /dev/stdout> 0.0 // 不正行為ではない
SageMakerデバッガーでトラブルシューティング
☆ [ボーナス] 長時間実行されるトレーニングジョブの進捗を理解して監視する方法はありますか?
この例では、小規模なデータセットを使用しているため、通常1時間から数時間でトレーニングが終了します。しかし、大規模なデータセットを使用する企業シナリオでは、トレーニングに数日から数週間かかることがあります。この時間の間に何が起こっているかを監視し理解することは、不必要なコストを避けるために重要です。
SageMakerデバッガーは、この目的のための便利なツールです。トレーニングプロセスに盗聴し、連続的にメトリクスとテンソルをキャプチャし、それらを対象のバケットに保存し、トレーニングの進捗を評価し可視化するためにさまざまなルールを適用します。ここではこれらのルールやアーキテクチャの詳細には触れませんが、興味のある方は、それぞれこちらやこちらで読むことができます。
SageMaker Clarifyで説明する
[✓] [ガバナンス&コンプライアンス] モデルの決定を説明しバイアスを検出するためのモデルの境界を追跡する方法はありますか?
SageMakerは、SageMaker Clarifyとネイティブに統合されており、トレーニングの出力での特徴の相関関係を説明することができます。これにより、モデルの決定をより良く理解することができます。
「モニタリング&継続的な改善」の記事でSageMaker Clarifyについて詳しく見ていきます。
SageMaker Experimentsで整理する
[✓] [コラボレーション] データサイエンティストは実験、設定、トレーニング済みモデルを共有する方法はありますか?
Data Acquisition & Explorationで説明したように、SageMaker Studioでは、ドメイン内のすべてのユーザーが同じ情報にアクセスできるようになっています。これには実験も含まれます。
さらに、これらの実験をCanvasユーザーと簡単に共有したり、視覚化やトレーニング済みモデルのアーティファクトをローカル、クラウド、またはエッジの実行にエクスポートしたりすることができます。
[✓] [再現性] 実験の出力の再現性をどのように確保できますか?
SageMakerを使用してトライアルを実施する際には、ここではAutoMLですが、各ランはログに記録され監視されます。SageMaker Experimentsは自動的にすべてのステップ、パラメータ、設定、関連する入出力アーティファクトをキャプチャします。これにより、一貫した設定でモデルの再現性を容易に実現できます。これにより、本番の問題のトラブルシューティングやコンプライアンスのためのモデルの監査が簡素化されます。
SageMakerモデルレジストリでカタログ化
[✓] [再現性] トレーニング済みモデルの異なるバージョンを追跡および管理する方法はありますか?
典型的なモデリングプロセスでは、データサイエンティストは継続的に実験を行い、モデルを微調整し、特定の問題を解決するために複数のモデルバージョンを作成します。しかし、訓練済みモデルのリポジトリが増えるにつれて、それらを管理することは課題となります。私たちが使用するプラットフォームでは、データサイエンティストが次のことを行えるようにすることが重要です:
- 関連するモデルを論理的にグループ化する
- 異なるバージョンをシームレスに管理する
- 本番で問題が発生した場合にバージョンをロールバックまたはロールフォワードする
ここでSageMakerモデルレジストリが重要な役割を果たします。データサイエンティストはトレーニング済みモデルをモデルグループのバージョンとして登録することができます。さらに、承認プロセス(「モニタリング&継続的な改善」記事[リンク]で後ほど説明します)の設立も可能です。このプロセスとCI/CDパイプラインを組み合わせることで、モデルが承認されるたびにSageMakerエンドポイントのデプロイを自動化することができます。
モデルグループの作成問題解決に役立つモデルを論理的にグループ化するために、グループを作成します。
モデルバージョンの登録まず、モデルの登録のために必要な詳細情報を収集しましょう。カタログ作成プロセスでは、可能な限り多くの情報を提供することが重要です。これには、サンプル入力、説明、バイアス、品質レポート、パッケージの詳細、および推論の詳細が含まれます。
SageMakerパイプラインでは、RegisterModelまたは新しいModel Stepを使用して、トレーニングプロセス中にモデルを自動的にモデルレジストリに登録することができます。「モニタリング&継続的な改善」[リンク]で詳しく説明します。
必要な情報を収集したら、事前に作成したモデルグループにバージョンを登録することができます。
モデルバージョンの承認同じグループ内に2つの追加バージョンを作成しました。それぞれのバージョンについて提供された詳細を表示およびレビューできるはずです。さらに、品質メトリックスをアップロードすると、複数のバージョンを比較することもできます。そして、前述のようにモデルを承認または拒否することができます。
⚠️ クリーンアップ
ハンズオン演習に従っている場合は、料金を発生させないようにクリーンアップしてください。
推論エンドポイントの削除費用を発生させないために、エンドポイントおよびその他の処理ジョブを削除してください。
概要
まとめると、AWS SageMakerは、データサイエンティストのモデルの実験、評価、および管理の旅を加速することができます。さらに、SageMaker DebuggerやSageMaker Clarifyなどのツールは、トレーニングプロセスとモデルの理解に役立ちます。
次の記事では、AWS SageMakerがモデルを本番環境でライブにするのにどのように役立つか、または本番データでの影響を学ぶ方法を探求します。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles