Amazon SageMakerでのAWS Lambdaを含む、AWSサービスの連携について
はじめに
Amazon SageMakerでは、その他のAWSサービスと連携することで、効率的な開発をすることができます。本記事では、AWS SageMakerにおけるAWS Lambdaおよびその他のAWSサービスの連携した例について紹介します。ですが、まずはAmazon SageMakerの概要や統合されている機能やサービス、またAWS Lambdaの概要と利点について紹介します。
Amazon SageMakerとは
Amazon SageMakerは、あらゆる規模の機械学習モデルを迅速かつ簡単に構築、トレーニング、デプロイできる機械学習のプラットフォームを提供するフルマネージド型サービスです。Amazon SageMakerに統合されている機能などを簡単に紹介します。
- Amazon SageMaker Ground Truth - フルマネージド型のラベリングサービスで、機械学習のためのトレーニングデータセットを簡単に構築および管理できます。
- Amazon SageMaker Studio - 機械学習用のIDEで、機械学習開発に関するすべてのワークフローを実行できます。
- Amazon SageMaker Autopilot - 完全に制御して可視化しつつ、データに基づいて分類または回帰の最適な機械学習モデルを自動的に構築し、トレーニングします。
- Amazon SageMaker Studio Notebooks -フレキシブルなコンピューティングリソースを備えた、 ワンクリックで素早く起動できるJupyterノートブックです。
- Amazon SageMaker Experiments - 入力パラメータや、構成、結果などを自動的に記録し、「実験結果(experiments)」として保存することで、繰り返し作業を管理しやすくする機能です。
- AWS Marketplace - 独立系ソフトウェアベンターが提供するソフトウェアが掲載したデジタルカタログで、Amazon SageMakerでは、数百ものアルゴリズムやトレーニング済みのモデルを取得して、すぐに使い始めることができます。
- Amazon SageMaker Debugger - 機械学習トレーニングジョブのデバッグプロセスを自動化できます。
- Automatic Model Tuning - ワンクリックでハイパーパラメータの最適化ができます。
- Amazon SageMaker Model Monitor - デプロイ済みの機械学習モデルで、自動的にコンセプトドリフトを検知し、問題の原因究明に役立つ詳細なアラートを出します。
- Amazon SageMaker Neo - 一度トレーニングした機械学習モデルをクラウドやエッジのどこへでもデプロイできるようにする機能です。
- Amazon Augmented AI - 機械学習モデルの予測について、人によるレビューを取り入れたワークフローを簡単に構築できるサービスです。
AWS Lambdaとは
AWS Lambdaは、サーバーレスコンピューティングを提供するサービスです。プログラムはクラウド上で実行されるため、サーバーのプロビジョニングや管理をすることなく、コードの実行ができます。利点を以下に示します。
- サーバーレス - AWS Lambdaは、前述のようにサーバーレスコンピューティングを提供しており、アップロードされたコードが自動的に実行されます。
- 自動スケーリング - アップロードされたコードは、他のAWSサービスから自動的にトリガーする、もしくはウェブやモバイルアプリケーションから直接呼び出すように設定できます。AWS Lambdaでは、この毎回のトリガーに対応してコードを実行し、自動的にアプリケーションをスケールします。
- 安定したパフォーマンス - AWS Lambdaでは、関数に適切なメモリサイズを選択することで、コードの実行時間の最適化ができます。また、Provisioned Concurrencyを有効にすることで、2桁ミリ秒以内に応答することができます。
Amazon SageMakerとAWS Lambdaの連携について
Amazon SageMakerとAWS Lambdaおよびその他のAWSサービスを連携することで、効率的な開発ができます。以下では、その例を紹介します。
Amazon API GatewayとAWS Lambdaによるモデルの呼び出し
トレーニングと検証を終えたAmazon SageMakerの機械学習モデルは、本番環境におけるエンドポイントとしてデプロイできます。Amazon API GatewayとAWS Lambdaを利用すると、デプロイされた機械学習モデルを呼び出すことができます。そのプロセスを以下に示します。
- クライアントスクリプトがAmazon API Gateway のAPIアクションを呼び出し、パラメータ値を渡す
- AWS Lambda が保護されたプライベートネットワーク内に留まって実行されるようにバックエンドをシール(seal)する
- Amazon API Gateway がパラメータ値を AWS Lambdaに渡す
- AWS Lambda関数は、渡されたパラメータ値を解析し、Amazon SageMaker の機械学習モデルのエンドポイントへ送る
- 機械学習モデルは予測を実行し、予測値を AWS Lambda関数へ返す
- AWS Lambda関数は返された値を解析し、Amazon API Gateway に送り返す
- Amazon API Gateway はその解析された値をクライアントへ返信する
問題発生時のトレーニングジョブの自動停止
Amazon SageMaker Debuggerは、トレーニングや検証、混同行列、学習勾配などのトレーニング中のリアルタイムのメトリクスを自動的に取得し、モデルの精度向上を支援することで、トレーニングプロセスの透明性を向上します。
Amazon SageMaker Debuggerには、トレーニングプロセスの異常な動作に対する組み込みのDebuggerルールが用意されています。Debuggerルールは、トレーニングプロセスにおける勾配消失や勾配発散、過学習に関する問題を検出します。DebuggerルールとAmazon CloudWatch Eventsを連携して使用することで、次の処理を自動化できます。
トレーニングプロセスにおける問題をDebuggerルールが検出し、「IssuesFound」ステータスをトリガーすると、Amazon CloudWatch Events が AWS Lambda関数を呼び出し、自動的にトレーニングジョブを停止する
Amazon EventBridgeによるAmazon SageMakerの自動化
Amazon EventBridgeは、AWSサービスや独自のアプリケーション、SaaSアプリケーションからのデータを使用して、アプリケーションを容易に接続できるようにするサーバーレスEvent Busです。Amazon SageMakerにおいてAmazon EventBridgeは、次のものを監視します。
- Amazon SageMakerのラベリングやトレーニング
- ハイパーパラメータのチューニング
- プロセスジョブ
- 推論エンドポイントのステータス変更イベント
Amazon EventBridgeを使用すると、Amazon SageMakerでの作業を自動化し、トレーニングジョブやエンドポイントのステータス変更などのイベントに自動的に反応し、AWS Lambda関数を呼び出すことができます。
ちなみに、AWS Lambda関数の呼び出し以外にも、簡単なルールを記述することで、注目するイベントと、イベントがルールに一致した場合に自動的にトリガーできるオペレーションには、以下のものがあります。
- Amazon EC2 Run Commandの呼び出し
- Amazon Kinesis Data Streamsへのイベントの中継
- AWS Step Functionsステートマシンの有効化
- Amazon SNSトピックもしくはAWS SMSキューの通知
まとめ
本記事では、Amazon SageMakerにおけるAWS Lambdaとその他のAWSサービスが連携した例について紹介しました。ですが、本記事で紹介したものは一部であり、Amazon SageMakerでは他にも様々なサービスと連携することで効率的な開発を図ることができます。機械学習の開発において時間などのリソース面に悩まされている方は、ぜひ利用してみてください。