通常、機械学習 (ML) モデルをトレーニングして予測を提供するだけでは、ML プロジェクトは終わりではありません。 ML モデルの精度は時間の経過とともに低下する可能性があり、これは「ML モデル」として知られる現象です。 モデルドリフト。 モデルの特徴の変化など、多くの要因がモデルのドリフトを引き起こす可能性があります。 ML モデルの精度は次の要因にも影響を受ける可能性があります。 コンセプトドリフト、モデルのトレーニングに使用されるデータと推論中に使用されるデータの違い。 したがって、チームはモデルとソリューションの関連性を維持し、ビジネスに価値を提供し続ける必要があります。 適切なメトリクス、アラーム、自動化が導入されていない場合、運用環境で既存の ML モデルを維持するだけで生じる技術的負債が膨大になる可能性があります。
AmazonSageMakerパイプライン ネイティブです ワークフローオーケストレーションツール 直接を利用するMLパイプラインを構築するため アマゾンセージメーカー 統合。 パイプライン、モデルレジストリ、プロジェクトのXNUMXつのコンポーネントにより、MLワークフローの運用の復元力と再現性が向上します。 これらのワークフロー自動化コンポーネントを使用すると、数百のモデルを本番環境で構築、トレーニング、テスト、およびデプロイする機能を簡単に拡張し、反復を高速化し、手動オーケストレーションによるエラーを減らし、反復可能なメカニズムを構築できます。
この投稿では、モデルのドリフトが検出されたときに SageMaker のパイプラインを使用して再トレーニングを自動化する方法について説明します。
静的モデルから継続的なトレーニングまで
静的モデルは、ML を実験するときに開始するのに最適な場所です。 ただし、現実世界のデータは常に変化するため、静的モデルは時間の経過とともに劣化し、トレーニング データセットは長期間にわたって実際の動作を表すことはできません。 効果的な導入を行う モデル監視フェーズ これは、MLOps パイプラインを構築する際の重要なステップです。 これは、実稼働システムによってキャプチャされたデータと、トレーニング フェーズで使用されるデータ配布との間に効果的なフィードバック ループを構築する必要があるため、MLOps の最も困難な側面の XNUMX つでもあります。 モデルの再トレーニングを効果的にするには、新しいグラウンド トゥルース ラベルを使用してトレーニング データセットを継続的に更新する必要もあります。 レコメンデーションの場合など、提供する予測に基づいてユーザーからの暗黙的または明示的なフィードバックを使用できる場合があります。 あるいは、次のようなサービスを通じてループワークフローに人間を導入する必要があるかもしれません。 Amazon拡張AI (Amazon A2I) を使用して、ML システムからの予測の精度を評価します。 その他の考慮事項は、バイアスの予測を定期的に監視することです。これは、 Amazon SageMaker の明確化.
この投稿では、次の点に焦点を当てたソリューションを提案します。 データ品質の監視 実稼働データ内の概念ドリフトを検出し、モデルを自動的に再トレーニングします。
ソリューションの概要
私たちのソリューションはオープンソースを使用しています AWS CloudFormation モデルのビルドとデプロイのパイプラインを作成するためのテンプレート。 当社はパイプラインとサポートする AWS サービスを使用しています。 AWS コードパイプライン, AWS コードビルド, アマゾンイベントブリッジ.
このソリューションの大まかな手順は次のとおりです。
- 新しい Amazon SageMakerスタジオ プロジェクト カスタムテンプレートに基づいています。
- SageMaker パイプラインを作成して、データの前処理を実行し、ベースライン統計を生成し、モデルをトレーニングします。
- にモデルを登録します。 SageMakerモデルレジストリ.
- データ サイエンティストは、モデルのメトリクスとパフォーマンスを検証し、モデルを承認します。
- モデルはステージング時にリアルタイム エンドポイントにデプロイされ、承認後に実稼働エンドポイントにデプロイされます。
- Amazon SageMakerモデルモニター を検出するように本番エンドポイントで構成されています。 データの概念ドリフト トレーニングベースラインに関して。
- モデル モニターは XNUMX 時間ごとに実行されるようにスケジュールされており、メトリクスを アマゾンクラウドウォッチ.
- CloudWatch アラームは、メトリクスがモデル固有のしきい値を超えると発生します。 これにより、EventBridge ルールがモデル構築パイプラインを開始します。
- モデル構築パイプラインは、スケジュールに従って実行される EventBridge ルールを使用して再トレーニングすることもできます。
データセット
このソリューションは、 ニューヨーク市のタクシーおよびリムジン委員会(TLC)の旅行記録データ 公開データセットを使用して、その旅行で利用可能な情報に基づいてタクシー料金を予測するモデルをトレーニングします。 利用可能な情報には、開始場所と終了場所、移動日時が含まれており、これに基づいて日時特徴と移動距離が設計されます。
たとえば、次の画像では、場所 65 (ブルックリンのダウンタウン) から 68 (イースト チェルシー) までの移動の例が示されています。所要時間は 21 分、料金は $20 です。
データセットについてさらに詳しく知りたい場合は、 探索的データ分析 GitHub リポジトリ内のノートブック。
始める
次のクイックスタート ボタンを使用して CloudFormation スタックを起動し、カスタム SageMaker MLOps プロジェクト テンプレートを AWS Service Catalog に公開できます。
Studio で新しいプロジェクトを作成する
MLOps プロジェクト テンプレートが公開された後、新しいテンプレートを使用して新しいプロジェクトを作成できます。 スタジオUI.
- Studio サイドバーで、 SageMaker コンポーネントとレジストリ。
- 選択する プロジェクト ドロップダウンメニューで
- 選択する プロジェクトを作成します。.
ソフトウェア設定ページで、下図のように プロジェクトを作成する ページでは、SageMaker テンプレートがデフォルトで選択されています。 このオプションでは、組み込みのテンプレートがリストされます。 ただし、ドリフト検出パイプライン用に公開したテンプレートを使用したいと考えています。
最近 AWS Service Catalog プロジェクトを更新した場合は、Studio を更新して、テンプレートの最新バージョンが確実に見つかるようにする必要がある場合があります。
- プロジェクト詳細 セクション、 名前 、 入る
drift-detection
.
プロジェクト名は 32 文字以下にする必要があります。
選ぶとき プロジェクトを作成する, CloudFormation スタックがアカウントに作成されます。 これには数分かかります。 デプロイされているコンポーネントに興味がある場合は、CloudFormation コンソールに移動してください。 そこに、作成中のスタックが表示されます。
ページがリロードされると、メイン プロジェクト ページに、プロジェクトで作成されたすべてのリソースの概要が表示されます。 今のところ、クローンを作成する必要があります sagemaker-drift-detection-build
リポジトリ。
これにより、ユーザーの Studio スペースにリポジトリのクローンが作成されます。 ノート ビルドパイプライン.ipynb は、ソリューションを実行し、その使用方法を理解するためのエントリ ポイントとして提供されています。
Studio インスタンスがまだ実行されていない場合は、インスタンスがプロビジョニングされます。 これには数分かかる場合があります。 デフォルトでは、ml.t3.medium インスタンスが起動されます。これは、ノートブックを実行するのに十分です。
- ノートブックが開いたら、選択した実際のプロジェクト名を使用して XNUMX 番目のセルを編集します。
- 最初のいくつかのセルを実行して、後で必要になるいくつかの変数を初期化し、プロジェクトが選択されていることを確認します。
次に、使用するデータセットを定義する必要があります。 この例では、次のデータを使用します。 ニューヨーク市タクシーおよびリムジン委員会 (TLC).
- パブリックからデータをダウンロードする Amazon シンプル ストレージ サービス (Amazon S3) の場所を指定し、プロジェクト テンプレートによってプロビジョニングされたアーティファクト バケットにアップロードします。
独自のカスタム テンプレートの場合は、データを直接アップロードすることもできます。 input_data_uri
これは、パイプラインがトレーニング データを見つけることを期待している場所であるためです。
トレーニング パイプラインを実行する
パイプラインを実行するには、ノートブック内のセルの実行を継続できます。 Studio インターフェイスを通じてパイプライン実行を開始することもできます。
- まず、メインのプロジェクト ビュー ページに戻り、 パイプライン タブには何も表示されないことに注意してください。
- パイプラインを選択してください
drift-detection-pipeline
をクリックすると、過去の実行のリストを含むタブが開きます。
最初にこのページにアクセスすると、以前に失敗したパイプラインの実行が表示されます。 これはプロジェクトの初期化時に開始されました。 当時、パイプラインが使用するデータがなかったため、失敗しました。
これで、データを使用して新しいパイプラインを開始できるようになりました。
パイプラインが開始されると、パイプライン実行のリストに次のステータスで追加されます。 Executing
.
- このパイプライン実行を選択して詳細を開きます。
Pipelines は、パイプラインの各ステップのデータ依存関係を示すグラフを自動的に構築します。 これに基づいて、ステップが完了する順序がわかります。
数分待ってグラフを更新すると、 BaselineJob
および TrainModel
ステップは同時に実行されます。 これは自動的に起こりました。 SageMaker は、これらのステップ間にデータの依存関係がないため、これらのステップを並行して実行しても安全であることを理解しています。 ページ上のさまざまなステップとタブを選択して、このページを探索できます。 さまざまなステップが何を行っているかを見てみましょう。
- データの前処理 – このステップでは、データを前処理し、次の ML アルゴリズムに適した形式に変換します。 このステップには次の内容が含まれます カスタムコード 特定のユースケース向けに開発されました。
- ベースラインジョブ – このステップでは、予想されるデータのタイプと分布に関するベースラインを生成します。 これはモデルのモニタリングに不可欠です。 Model Monitor は、このベースラインを使用して、エンドポイントから収集された最新のデータと比較します。 この手順は Model Monitor 製品の一部であるため、カスタム コードは必要ありません。
- 鉄道模型 – このステップでは、SageMaker によるアルゴリズムの組み込み実装を使用して XGBoost リグレッサーをトレーニングします。 組み込みモデルを使用しているため、カスタム コードは必要ありません。
- EvaluateModel と CheckEvaluation – これらの手順では、私たちにとって重要な評価指標、この場合はテスト セットの二乗平均平方根誤差 (rmse) を計算します。 事前定義されたしきい値 (7) より小さい場合は、次のステップに進みます。 そうでない場合、パイプラインは停止します。 の
EvaluateModel
ステップに必要なもの カスタムコード 関心のあるメトリクスを計算します。 - モデルの登録 – このステップでは、トレーニングされたモデルが
TrainModel
ステップがモデル レジストリに登録されます。 そこから、トレーニングされたモデルを一元管理してデプロイできます。 このステップではカスタム コードは必要ありません。
モデルを承認してデプロイする
パイプラインの実行が完了したら、メイン プロジェクト ページに移動します。 に行きます モデルグループ タブで、 drift-detection
モデル グループ、登録されているモデルのバージョン。 これにより、特定のモデルのバージョンのページが表示されます。 次のメトリクスを含む、このモデルの出力を検査できます。 また、からさらに詳しい洞察を得ることができます。 XGBoostトレーニングレポート.
登録されたモデルのデプロイ パイプラインは、そのステータスに基づいてトリガーされます。 このモデルをデプロイするには、次の手順を実行します。
モデルを承認すると、CloudWatch でイベントが生成され、EventBridge のルールによってキャプチャされ、モデルのデプロイが開始されます。
デプロイの進行状況を確認するには、CodePipeline コンソールに移動します。 パイプラインセクションから、 sagemaker-drift-detection-deploy
承認されたモデルの展開が進行中であることを確認します。
このパイプラインには、モデル レジストリから最新の承認されたモデル バージョンを取得し、CloudFormation テンプレートを生成するビルド ステージが含まれています。 モデルは、このテンプレートを使用してステージング SageMaker エンドポイントにデプロイされます。
ここで、ノートブックに戻り、次のコードを実行してステージング エンドポイントをテストできます。
モデルを本番環境にプロモートする
ステージング エンドポイントが期待どおりに実行されている場合は、モデルを運用環境に昇格できます。 このパイプラインを初めて実行する場合は、次を選択してこのモデルを承認できます。 レビュー CodePipeline でコメントを入力し、選択します 承認。
この例では、本番環境へのモデルの承認は XNUMX 段階のプロセスであり、さまざまな責任とペルソナが反映されています。
- まず、モデル レジストリ内のモデルがステージング エンドポイントでテストされることを承認しました。 これは通常、データ サイエンスの観点からモデル トレーニングの結果を評価した後、データ サイエンティストによって実行されます。
- ステージング環境でエンドポイントがテストされた後、XNUMX 番目の承認としてモデルを運用環境にデプロイします。 この承認は以下によって制限される可能性があります AWS IDおよびアクセス管理 (IAM) 役割は、運用チームまたはアプリケーション チームのみが実行します。 この XNUMX 回目の承認は、これらのチームによって定義された追加のテストに従う可能性があります。
実稼働環境のデプロイメントには、ステージング環境と比較して追加の構成パラメーターがいくつかあります。 ステージングではエンドポイントをホストする単一のインスタンスが作成されましたが、このステージでは次のようなエンドポイントが作成されます。 自動スケーリング 複数のアベイラビリティーゾーンにまたがる XNUMX つのインスタンス。 自動スケーリングにより、トラフィックが増加した場合、ユーザー要求のスループットを満たすためにデプロイされたモデルがスケールアウトされます。 さらに、デプロイメントの実稼働バリアントにより、次のことが可能になります。 データ収集これは、エンドポイントからのすべてのリクエストとレスポンス予測が Amazon S3 に記録されることを意味します。 監視スケジュールもこの段階で展開され、このデータが分析されます。 データ ドリフトが検出された場合、ビルド パイプラインの新しい実行が開始されます。
モデルを監視する
モデル監視の重要な手順は、ビジネス上の問題に関連する適切なしきい値を定義することです。 私たちの場合、たとえば、運賃価格の基本的な分布が変化した場合に警告を受け取りたいと考えています。 デプロイメントパイプラインには、 prod-config.json このドリフト検出のメトリックとしきい値を定義するファイル。
- Studio のメイン プロジェクト ページに戻ります。
- 選択する エンドポイント タブでは、ステージング エンドポイントと本番エンドポイントの両方が表示されます。
InService
. - 追加の詳細を表示するには、本番エンドポイントを選択します。
prod バージョンを選択すると、最初に監視スケジュールが表示されます (まだ実行されていません)。
- 実稼働エンドポイントとデータ キャプチャをテストするには、以下のノートブック セルを使用して人工トラフィックを送信します。 試作 および データキャプチャの検査 セクション。
このコードは入力データの分布も変更します。これにより、モデル モニターの実行時に予測運賃額にドリフトが検出されます。 これにより、アラームが発生し、新しいモデルをトレーニングするためにトレーニング パイプラインが再起動されます。
監視スケジュールは XNUMX 時間ごとに実行されるように設定されています。 XNUMX 時間が経過すると、新しい監視ジョブが開始されたことがわかります。 In progress
。 これが完了するまでに約 10 分かかります。完了すると、ステータスが次のように変化します。 Issue Found
私たちが導入したデータドリフトが原因です。
監視ジョブによって生成されるメトリクスを監視するには、Studio にグラフを追加して、関連するタイムライン上のさまざまな機能を検査します。
- 選択する データ品質 タブ モデル監視 ページで見やすくするために変数を解析したりすることができます。
- 選択する チャートを追加し、 これにより、チャートのプロパティが表示されます。
- 監視ジョブについてさらに詳しく知るには、最新のジョブを選択してジョブの詳細を検査します。
In ジョブの詳細を監視するで、検出された制約違反の概要を確認できます。
- 詳細については、以下の長い文字列をコピーしてください。 ジョブARNの処理.
- 選択する Amazon SageMaker ノートブックを表示するをクリックすると、事前に入力されたノートブックが開きます。
- ノートブックのセルを置き換えます
FILL-IN-PROCESSING-JOB-ARN
コピーした ARN 値を使用します。 - すべてのノートブックのセルを実行します。
このノートブックは、新しく収集されたデータ (青) とベースライン メトリクスの分布 (緑) を比較する分布を含む、一連の表とグラフを出力します。 のために geo_distance
および passenger_count
人工ノイズを導入した特徴量では、分布の変化がわかります。 同様に、結果として、 fare_amount
予測値。
モデルを再トレーニングする
前述のデータ変更により、Model Monitor から公開された CloudWatch メトリクスが設定されたしきい値を超えると、アラームが発生します。 おかげ EventBridge とのパイプラインの統合、モデル構築パイプラインが開始され、最新のデータでモデルを再トレーニングします。
CloudWatch コンソールに移動して選択します。 アラーム アラームが表示されるはずです sagemaker-drift-detection-prod-threshold
状態にあります In Alarm
。 アラームが「アラーム中」に変わると、パイプラインの新しい実行が開始されます。 これは、Studio インターフェイスのメイン プロジェクトのパイプライン タブで確認できます。
この時点で、生成された同じデータをエンドポイントのテストに使用した場合、生成された新しいモデルは同じドリフトの影響を受けます。 これは、トレーニング データを変更または更新していないためです。 実際の運用環境では、このパイプラインが効果的であるためには、パイプラインが入力データを取得する場所に新しくラベル付けされたデータを読み込むプロセスが存在する必要があります。 この最後の詳細は、ソリューションを構築する際に非常に重要です。
クリーンアップ
ビルドパイプライン.ipynb ノートブックには、次のリソースをクリーンアップするために実行できるセルが含まれています。
- SageMaker 製品エンドポイント
- SageMaker ステージング エンドポイント
- SageMaker パイプライン ワークフローとモデル パッケージ グループ
- Amazon S3 アーティファクトと SageMaker プロジェクト
を使用してリソースをクリーンアップすることもできます。 AWSコマンドラインインターフェイス (AWS CLI):
- 実稼働エンドポイントをプロビジョニングするために作成された CloudFormation スタックを削除します。
aws cloudformation delete-stack —stack-name sagemaker-<<project_name>>-deploy-prod
- ステージング エンドポイントをプロビジョニングするために作成された CloudFormation スタックを削除します。
aws cloudformation delete-stack —stack-name sagemaker-<<project_name>>-deploy-staging
- SageMaker パイプラインとモデル パッケージ グループをプロビジョニングするために作成された CloudFormation スタックを削除します。
aws cloudformation delete-stack —stack-name sagemaker-<<project_name>>-deploy-pipeline
- ドリフト デプロイメント パイプラインからのアーティファクト出力を含む S3 バケットを空にします。
aws s3 rm —recursive s3://sagemaker-project-<<project_id>>-region_name
- プロジェクトを削除します。これにより、デプロイメント パイプラインを作成した CloudFormation スタックが削除されます。
aws sagemaker delete-project —project-name <<project_name>>
- AWS Service Catalog プロジェクト テンプレートを削除します。
aws cloudformation delete-stack —stack-name <<drift-pipeline>>
まとめ
モデル モニターを使用すると、デプロイされたモデルに受信するデータをキャプチャし、変更を検出し、重大なデータ ドリフトが検出されたときにアラームを発生させることができます。 さらに、パイプラインを使用すると、新しいモデル バージョンの構築を調整できます。 EventBridge との統合により、スケジュールまたはオンデマンドでパイプラインを実行できます。 後者の機能では、モデルの監視と、受信特徴データのドリフトが検出された場合のモデルの自動再トレーニングを統合できます。
コードリポジトリは次の場所で使用できます。 GitHubの 独自のデータやユースケースに対してこのソリューションを試す出発点として使用してください。
追加の参考文献
詳細については、次のリソースを参照してください。
著者について
ジュリアン・ブライト オーストラリアのメルボルンを拠点とするプリンシパル AI/ML スペシャリスト ソリューション アーキテクトです。 Julian はグローバル Amazon Machine Learning チームの一員として働いており、顧客が MLOps を通じて AI と ML の旅を実現できるよう支援することに情熱を注いでいます。 余暇には、子供たちを追いかけて走り回ったり、サッカーをしたり、外に出たりするのが大好きです。
ゲオルギオス・シナス EMEA 地域の AI/ML のスペシャリスト ソリューション アーキテクトです。 彼はロンドンに拠点を置き、英国の顧客と緊密に連携しています。 Georgios は、特に MLOps の実践に関心を持つお客様が、AWS 上の本番環境で機械学習アプリケーションを設計およびデプロイできるよう支援します。 余暇には、旅行したり、料理をしたり、友人や家族と時間を過ごすことを楽しんでいます。
テイス・ハイルカー AWS の AI/ML ソリューション アーキテクトです。 彼は、顧客が AI/ML ソリューションを作成し、機械学習の取り組みを加速できるよう支援しています。 彼は MLOps に情熱を持っており、余暇には屋外で犬や息子と遊んでいます。
アレッサンドロ・セレ シンガポールを拠点とする AWS のシニア ML ソリューション アーキテクトで、お客様が ASEAN 地域全体で機械学習ソリューションを設計およびデプロイできるよう支援しています。 データ サイエンティストになる前、アレッサンドロは安全な通信のための量子相関の限界を研究していました。 余暇には風景写真や水中写真を撮っています。
- '
- "
- 100
- 107
- 11
- 7
- 9
- アクセス
- NEW
- 利点
- AI
- アルゴリズム
- すべて
- Amazon
- アマゾン機械学習
- アマゾンセージメーカー
- 申し込み
- 建築
- 周りに
- オーストラリア
- オートメーション
- 賃貸条件の詳細・契約費用のお見積り等について
- AWS
- ベースライン
- ボックス
- ビルド
- 建物
- ビジネス
- 原因となる
- 変化する
- 市町村
- コード
- 注釈
- 委員会
- コミュニケーション
- 計算
- 続ける
- 料理
- カップル
- Customers
- データ
- データサイエンス
- データサイエンティスト
- 借金
- 需要
- 設計
- 詳細
- 検出
- 発見
- 距離
- ダウンタウン
- 効果的な
- エンドポイント
- エンジニア
- 環境
- イベント
- 期待する
- 家族
- 特徴
- 特徴
- 発見
- 名
- 初回
- 形式でアーカイブしたプロジェクトを保存します.
- GitHubの
- グローバル
- 素晴らしい
- グリーン
- グループ
- 認定条件
- How To
- HTTPS
- ループの人間
- 何百
- IAM
- アイデンティティ
- 画像
- 含めて
- 情報
- 洞察
- 統合
- 関心
- IT
- ジョブ
- 子供たち
- ラベル
- 最新の
- 起動する
- 学習
- LINE
- リスト
- リスト
- リスト
- 負荷
- 場所
- ロンドン
- 長い
- 機械学習
- ミディアム
- メルボルン
- メトリック
- ML
- MLOps
- モニタリング
- ノイズ
- NYC
- 提供すること
- 開いた
- 開きます
- 業務執行統括
- オプション
- 注文
- その他
- 屋外で
- パフォーマンス
- 視点
- 予測
- 校長
- 生産
- プロジェクト
- プロジェクト(実績作品)
- 提案する
- 公共
- パブリッシュ
- 品質
- 量子
- 上げる
- 提起
- への
- 減らします
- リソース
- 応答
- 結果
- 再訓練
- ラン
- ランニング
- 安全な
- セージメーカー
- 規模
- スケーリング
- 科学
- 選択
- シリーズ
- サービス
- サービング
- セッションに
- シフト
- 簡単な拡張で
- シンガポール
- サッカー
- ソリューション
- 息子
- スペース
- 支出
- 広場
- ステージ
- start
- 開始
- 統計
- Status:
- ストレージ利用料
- サポート
- 技術的
- test
- テスト
- グラフ
- 時間
- トラフィック
- トレーニング
- 変換
- 旅行
- Uk
- 水中
- アップデイト
- URI
- us
- users
- 値
- 詳しく見る
- wait
- ワークフロー
- ワークフローの自動化
- 作品