Amazon Web Services ブログ
Amazon SageMaker のバッチ変換が Amazon VPC および AWS KMS に基づく暗号化をサポート開始
Amazon SageMaker が、Amazon Virtual Private Cloud (Amazon VPC) での AWS Key Management Service (AWS KMS) を使用するバッチ変換ジョブのサポートを開始します。Amazon VPC を使用すると、機械学習 (ML) モデルのコンテナやデータへのアクセスをコントロールし、それらをプライベートに保ってインターネット経由でアクセスできないようにすることができます。AWS KMS を使用すると、バッチ変換ジョブを実行する ML コンピューティングインスタンスにアタッチされたストレージボリュームのデータを暗号化できます。これにより、バッチ変換ジョブで使用されるモデルのアーティファクト、ログ、および一時ファイルは常に安全です。このブログでは、こうした機能をバッチ変換ジョブに適用する方法を説明します。
Amazon SageMaker のバッチ変換は、データのバッチが大量にあり、トレーニングデータを前処理して変換する必要があるか、レイテンシーが 1 秒未満であることを必要としないシナリオに最適です。バッチ変換は、ペタバイトのデータから非常に小さなデータセットまで、さまざまなデータセットで使用できます。既存の機械学習モデルは、一切の変更なしで、この新しい機能でシームレスに動作します。Amazon SageMaker は、バッチ変換ジョブの開始時にリソースのプロビジョニングを管理します。ジョブが完了するとリソースが解放されるので、ジョブの実行中に使用されたリソースに対してのみを支払うことになります。
VPC を使用すると、プライベートでインターネットに接続されないように VPC を設定できるため、データやモデルアーティファクトを保存する Amazon S3 バケットなど、アクセスするモデルコンテナや AWS リソースを保護することができます。VPC を使用する場合、VPC フローログを使用して、モデルコンテナ内外のすべてのネットワークトラフィックを監視することもできます。VPC を指定しない場合、Amazon SageMaker はデフォルトでは VPC でバッチ変換ジョブを実行します。
Amazon SageMaker のバッチ変換は、すでに Amazon S3 SSE による入出力データの暗号化をサポートしています。現在は、AWS KMS を使用すると、バッチ変換ジョブで使用するストレージボリュームを、管理する暗号化キーで保護できます。推論を実行したり、データのバッチを変換したりするときに、集中キー管理、キー使用状況監査ログ、マスターキーローテーションなどの AWS KMS 機能を利用できます。データの暗号化に使用する暗号化キーの作成、インポート、ローテーション、無効化、削除、使用ポリシーの定義、および使用の監査ができます。また、AWS KMS は、AWS CloudTrail と統合されており、すべてのキー使用状況のログを提供し、規制やコンプライアンスのニーズを満たすのにも役立ちます。
バッチ変換ジョブを作成する方法
それでは、組み込みのオブジェクト検出アルゴリズムのバッチ変換ジョブの実行方法を見てみましょう。このノートブックの例に従って、オブジェクト検出モデルをトレーニングしました。
まず、Amazon SageMaker コンソールへ移動し、 Models のページを開いて、モデルを作成し、プライベートサブネットとセキュリティグループを関連付けます。
そこから、トレーニングで生成されたオブジェクト検出のイメージおよびモデルのアーティファクトを使用して、モデルを作成することができます。
ここでモデルに名前を付け、必要なアクセス許可を与える IAM ロールを指定します。また、プライベート VPC のサブネットとセキュリティグループを指定して、コンテナと Amazon S3 データへのアクセスもコントロールします。次のスクリーンショットに示すように、VPC を選択すると、Amazon SageMaker がその VPC のサブネットとセキュリティグループを自動入力します。この例では、プライベート VPC から複数のサブネットとセキュリティグループを提供しました。Amazon SageMaker のバッチ変換は、VPC 内で単一のサブネットを選択して Elastic Network Interface (ENI) を作成し、それらをモデルのコンテナにアタッチします。これらの ENI を使用すると、モデルのコンテナにネットワーク接続が提供され、バッチ変換ジョブをインターネット経由でプライベート VPC のリソースに接続できるようになります。
さらに、Amazon SageMaker は、提供するすべてのセキュリティグループをプライベート VPC で作成したネットワークインターフェイスに関連付けます。
これとは別に、インターネットアクセスが無効になっていても、モデルのコンテナが入力データが保存されている Amazon S3 バケットにアクセスできるようにする S3 VPC エンドポイントを作成しました。プライベート VPC からのリクエストだけが S3 バケットにアクセスできるようにするカスタムポリシーも作成することをお勧めします。詳細については、Amazon S3 のためのエンドポイントを参照してください。
次に、推論コンテナイメージ Amazon Elastic Container Registry (Amazon ECR ロケーション) と、オブジェクト検出トレーニングジョブからのモデルのアーティファクトの場所を指定して、先へ進みます。
それでおしまいです! これで、VPC で安全に動作するように設定されたモデルが用意されています。
ここでは、Selfies データセットで以前にトレーニングされたオブジェクト検出モデルを使用して、新しいバッチ変換ジョブを作成します。Amazon SageMaker コンソールのバッチ変換のページへ移動します。
まず、Amazon SageMaker コンソールを開き、[Batch Transform] を選択してから、[Create Batch Transform job] を選択します。
[Batch Transform job configuration] ウィンドウで、次の例に示すようにフォームに入力します。このフォームへの入力の詳細については、「バッチ変換の使用 (コンソール)」を参照してください。
新しい AWS KMS 機能を使用して、暗号化キーも指定したことに注意してください。Amazon SageMaker はそれを使用して、バッチ変換ジョブを実行する ML コンピューティングインスタンスにアタッチされたストレージボリュームのデータを暗号化します。
次に、入力場所を指定します。マニフェストファイルを使用することもできますし、S3 の場所にあるすべてのファイルをロードすることもできます。画像を扱っているので、入力コンテンツの種類を指定しました。
また、オフラインであっても、モデルのコンテナが、入力データが保存されている Amazon S3 バケットにアクセスできるようにする VPC エンドポイントも作成しました。プライベート VPC からのリクエストだけが S3 バケットにアクセスできるようにするカスタムポリシーを作成することもお勧めします。詳細については、Amazon S3 のためのエンドポイントを参照してください。
最後に、次の例に示すように、出力場所を設定してジョブを開始します。前述のとおり、バッチ変換の出力が S3 KMS SSE で暗号化されたサーバー側になるように、出力用の KMS 暗号化キーを指定することができます。
変換ジョブを開始すると、ジョブの詳細のページを開いて、Amazon CloudWatch のメトリクスとログへのリンクをたどることができます。
Amazon CloudWatch を使用すると、変換ジョブが実行中であることがわかります。Amazon S3 で結果を表示すると、次の例に示すように、各イメージの予測ラベルを確認することができます。
変換ジョブは、検出されたオブジェクトを含むそれぞれの入力ファイルに対して JSON ファイルを作成します。
S3バケットでは、AWS Glue でバケットのテーブルを作成すると効率的です。そして、Amazon Athena で結果を照会するか、Amazon QuickSight を使用して結果を視覚化します。
また、高レベルの Python ライブラリまたは低レベルの SDK (boto3) を使用してプログラムで変換ジョブを開始することもできます。独自のコンテナを使用してバッチ変換を使用する方法の詳細については、「Amazon SageMaker のバッチ変換を使用して推論を行う」を参照してください。
バッチ変換は、予測が必要な大量のデータのバッチがあり、レイテンシーが 1 秒未満であることを必要としないか、トレーニングデータを前処理して変換する必要があるユースケースに最適です。このブログでは、Amazon VPC と AWS KMS を使用してバッチ変換ジョブのセキュリティを強化する方法について検討しました。Amazon VPC と AWS KMS は、Amazon SageMaker が使用できるすべての AWS リージョンで、変換に利用できます。詳細については、Amazon SageMaker 開発者ガイドを参照してください。
著者について
Urvashi Chowdhary は、Amazon SageMaker 担当のシニアプロダクトマネージャーです。お客様に寄り添い、また、機械学習をさらに使いやすいものにしていくことに情熱を傾けています。余暇には、セーリング、パドルボード、カヤックを楽しんでいます。
Jeffrey Geevarghese は、Amazon AI のシニアエンジニアであり、深層学習のためのスケーラブルなインフラストラクチャを構築することに情熱を傾けています。この仕事の前は、機械学習のアルゴリズムとプラットフォームを研究しており、Amazon SageMaker と Amazon Machine Learning の両方の立ち上げチームの一員でした。