Amazon Sagemaker 推論モデルを構築、テストし、AWS Lambda にデプロイする
元記事
Amazon SageMaker
- MLモデルを迅速・簡単に構築、学習、デプロイできる完全マネージド型プラットフォーム
- MLモデルをデプロイすると、モデルをホストし推論を提供するAPIエンドポイントを提供
- AES IoT Greengrassも使用できる
SageMakerの柔軟性の高さ故にLambdaでモデルをホストしたくてもできない場合がある
どのような場合か
Lambdaが使える場合の利点
- 低コスト
- イベントトリガー
- シームレスなスケーラビリティ
- スパイクリクエスト
このチュートリアルでやったこと
推論を提供するLambda関数を構築、テスト、デプロイするためのパイプラインを作成
前提条件(使用経験)
- SageMaker
- CloudFormation
- Lambda
- Code suite
アーキテクチャの説明
AWS開発者用ツールを使用
Amazon SageMaker を使用してモデルをトレーニングすると、出力モデルが Amazon S3 バケットに保存されます。ファイルがバケットに入れられるたびに、AWS CloudTrail は Amazon CloudWatch イベントをトリガーします。このイベントは Lambda 関数を呼び出して、アップロードされたファイルが新しいモデルファイルかどうかを確認します。次に、このファイルを別の S3 バケットに移動させます。Amazon SageMaker は、モデルファイルとともに、チェックポイントなどの他のファイルを異なるフォルダに保存するため、これが必要です。ただし、AWS CodePipeline をトリガーするには、S3 バケットの特定のフォルダに特定のファイルが必要です。
そのため、モデルファイルが Amazon SageMaker バケットから宛先バケットに移動した後、AWS CodePipeline がトリガーされます。最初に、AWS CodePipeline は AWS CodeBuild を呼び出して以下の 3 つのアイテムを作成します。
- Lambda 関数のデプロイパッケージ。
- API を作成するための AWS サーバーレスアプリケーションモデル (AWS SAM) テンプレート。
- 推論に役立つ Lambda 関数。 これが完了すると、AWS CodePipeline は変更セットを実行して、AWS SAM テンプレートを AWS CloudFormation テンプレートに変換します。テンプレートが実行されると、AWS CodeDeploy がトリガーされます。AWS CodeDeploy は Lambda 関数を呼び出して、最新バージョンのモデルで新しく作成された Lambda 関数が期待どおりに動作しているかどうかをテストします。その場合、AWS CodeDeploy はトラフィックを古いバージョンから最新バージョンの Lambda 関数のモデルに移行します。次に、デプロイが完了します。
## Lambda関数のデプロイパッケージの作成方法
- AWS Cloud Formationテンプレート
下記がコード例
- "git clone ${GitRepository}" - "cd ${GitRepositoryName}" - "rm -rf .git " - "ls -al " - "aws s3 cp s3://${SourceBucket}/${SourceS3ObjectKey} ." - "tar zxf ${SourceS3ObjectKey}" - "ls -al" - "pwd" - "rm -f ${SourceS3ObjectKey}" - "aws cloudformation package --template-file samTemplateLambdaChecker.yaml --s3-bucket ${SourceBucket} --output-template-file ../outputSamTemplate.yaml" - "cp samTemplateLambdaChecker.yaml ../"
- Githubから必要なファイル(Lambda コード、Lambda関数チェッカー, SAMテンプレート)をダウンロード
CodeBuildがS3から最新のmodel.tar.gzファイルをコピー(どこに?)
動作するには、Lambda関数にもApache MXNet依存関係が必要 - 今回使用するCloudFormationテンプレートは、Lambdaで推論を実行するために必要なMXNetライブライを含むLambdaレイヤーを作成する。
パイプラインのテスト
モデルファイルの異動先の
モデルファイルの異動先の新しいS3バケットを作成
S3バケットにファイルを追加
テンプレートのダウンロード
CloudFormation テンプレートを起動
シミュレーション
モデルのダウンロード
テスト
まとめ
TBW
お気持ち
TBW
疑問・わからないこと
TBW