Amazon VPC のリソースへのアクセス権を SageMaker トレーニングジョブに付与する
注記
トレーニングジョブの場合は、デフォルトのテナンシー VPC でのみサブネットを設定できます。このデフォルトでは、インスタンスが共有ハードウェアで実行されます。VPC のテナンシー属性の詳細については、「ハードウェア専有インスタンス」を参照してください。
Amazon VPC アクセス用にトレーニングジョブを設定する
トレーニングジョブへのアクセスを制御するには、インターネットにアクセスできないプライベートサブネットを備えた Amazon VPC で実行します。
サブネットとセキュリティグループ ID を指定して、VPC で実行されるようにトレーニングジョブを設定します。トレーニングジョブのコンテナのサブネットを指定する必要はありません。Amazon SageMaker は、Amazon ECR からトレーニングコンテナイメージを自動的にプルします。
トレーニングジョブを作成する際は、Amazon SageMaker コンソールまたは API を使用して、VPC 内のサブネットとセキュリティグループを指定できます。
API を使用するには、CreateTrainingJob オペレーションの VpcConfig
パラメータでサブネットとセキュリティグループ ID を指定します。SageMaker は、サブネットとセキュリティグループの詳細を使用してネットワークインターフェイスを作成してトレーニングコンテナにアタッチします。ネットワークインターフェイスは、VPC 内でのトレーニングコンテナへのネットワーク接続を提供します。これにより、トレーニングジョブは VPC に配置されているリソースに接続できます。
VpcConfig
への呼び出しに含める CreateTrainingJob
パラメータの例は、以下のとおりです。
VpcConfig: { "Subnets": [ "subnet-0123456789abcdef0", "subnet-0123456789abcdef1", "subnet-0123456789abcdef2" ], "SecurityGroupIds": [ "sg-0123456789abcdef0" ] }
SageMaker トレーニング用にプライベート VPC を設定する
プライベート VPC を SageMaker トレーニングジョブ用に設定する場合、次のガイドラインに従います。VPC のセットアップについては、Amazon VPC ユーザーガイドの「VPC とサブネットの使用」を参照してください。
トピック
サブネットに十分な IP アドレスを確保する
Elastic Fabric Adapter (EFA) を使用しないトレーニングインスタンスには、少なくとも 2 つのプライベート IP アドレスが必要です。EFA を使用するトレーニングインスタンスには、少なくとも 5 つのプライベート IP アドレスが必要です。詳細については、「Amazon EC2 ユーザーガイド」の 「複数の IP アドレス」を参照してください。
VPC サブネットには、トレーニングジョブの各インスタンス用プライベート IP アドレスが少なくとも 2 つ必要です。詳細については、Amazon VPC ユーザーガイドの IPv4 用の VPC とサブネットのサイズ設定を参照してください。
Amazon S3 VPC エンドポイントを作成する
トレーニングコンテナがインターネットにアクセスできないように VPC を設定した場合、アクセスを許可する VPC エンドポイントを作成しない限り、トレーニングコンテナはトレーニングデータを含む Amazon S3 バケットに接続できません。VPC エンドポイントを作成することで、データとモデルのアーティファクトを保存するバケットにトレーニングコンテナがアクセスできるようにします。プライベート VPC からのリクエストのみに S3 バケットへのアクセスを許可するカスタムポリシーも作成することをお勧めします。詳細については、Amazon S3 のエンドポイントを参照してください。
S3 VPC エンドポイントを作成するには
-
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
ナビゲーションペインで [エンドポイント] を選択し、[エンドポイントの作成] を選択します。
-
[Service Name] (サービス名) で、com.amazonaws.
region
.s3 を検索します。この場合、region
は VPC が存在するリージョンの名前になります。 -
[Gateway] (ゲートウェイ) タイプを選択します。
-
[VPC]] で、エンドポイントに使用する VPC を選択します。
-
[Configure route tables] で、エンドポイントで使用するルートテーブルを選択します。VPC サービスで、選択した各ルートテーブルに、S3 トラフィックを新しいエンドポイントに向けるルートが自動的に追加されます。
-
[ポリシー] で、[フルアクセス] を選択して、VPC 内の任意のユーザーまたはサービスによる S3 サービスへのフルアクセスを許可します。アクセスを詳細に制限するには、[カスタム] を選択します。詳細については、カスタムエンドポイントポリシーを使用して S3 へのアクセスを制限する を参照してください。
カスタムエンドポイントポリシーを使用して S3 へのアクセスを制限する
デフォルトのエンドポイントポリシーでは、VPC のすべてのユーザーまたはサービスに対して S3 へのフルアクセスが許可されています。S3 へのアクセスを詳細に制限するには、カスタムエンドポイントポリシーを作成します。詳細については、「Amazon S3 のエンドポイントポリシー」を参照してください。バケットポリシーを使って、S3 バケットへのアクセスを Amazon VPC からのトラフィックのみに制限することもできます。詳細については、「Amazon S3 バケットポリシー」を参照してください。
トレーニングコンテナへのパッケージのインストールを制限する
デフォルトエンドポイントポリシーでは、ユーザーは、Amazon Linux と Amazon Linux 2 のリポジトリからのパッケージをトレーニングコンテナにインストールできます。ユーザーがそのリポジトリからパッケージをインストールしないようにする場合は、Amazon Linux と Amazon Linux 2 のリポジトリへのアクセスを明示的に拒否するカスタムエンドポイントポリシーを作成します。これらのリポジトリへのアクセスを拒否するポリシーの例を次に示します。
{ "Statement": [ { "Sid": "AmazonLinuxAMIRepositoryAccess", "Principal": "*", "Action": [ "s3:GetObject" ], "Effect": "Deny", "Resource": [ "arn:aws:s3:::packages.*.amazonaws.com/*", "arn:aws:s3:::repo.*.amazonaws.com/*" ] } ] } { "Statement": [ { "Sid": "AmazonLinux2AMIRepositoryAccess", "Principal": "*", "Action": [ "s3:GetObject" ], "Effect": "Deny", "Resource": [ "arn:aws:s3:::amazonlinux.*.amazonaws.com/*" ] } ] }
ルートテーブルの設定
エンドポイントルートテーブルのデフォルトの DNS 設定を使って、標準 Amazon S3 URL (例えば、http://s3-aws-region.amazonaws.com/amzn-s3-demo-bucket
) が解決されるようにします。デフォルトの DNS 設定を使用しない場合は、エンドポイントルートテーブルを設定することで、トレーニングジョブのデータの場所の指定に使用する URL が解決されるようにします。VPC エンドポイントルートテーブルについては、Amazon VPC ユーザーガイドの「ゲートウェイエンドポイントのルーティング」を参照してください。
VPC セキュリティグループを設定する
分散型トレーニングでは、同じトレーニングジョブ内の異なるコンテナ間の通信を許可する必要があります。そのためには、同じセキュリティグループのメンバー間のインバウンド接続を許可するセキュリティグループのルールを設定します。EFA 対応インスタンスの場合は、インバウンド接続とアウトバウンド接続の両方が同じセキュリティグループからのすべてのトラフィックを許可するようにする必要があります。詳細については、「Amazon Virtual Private Cloud ユーザーガイド」の「セキュリティグループのルール」を参照してください。
VPC の外部のリソースに接続する
インターネットにアクセスできないように VPC を設定する場合、その VPC を使用するトレーニングジョブは、VPC の外部のリソースにアクセスできません。トレーニングジョブが VPC の外部のリソースにアクセスする必要がある場合は、次のいずれかのオプションを使用してアクセスを可能にします。
-
トレーニングジョブがインターフェイス VPC エンドポイントをサポートする AWS サービスにアクセスする必要がある場合は、そのサービスに接続するためのエンドポイントを作成します。インターフェイスエンドポイントをサポートするサービスのリストについては、「Amazon Virtual Private Cloud ユーザーガイド」の「VPC エンドポイント」を参照してください。インターフェイス VPC エンドポイントの作成については、「Amazon VPC ユーザーガイド」の「インターフェイス VPC エンドポイント (AWS PrivateLink)」を参照してください。
-
トレーニングジョブが、インターフェイス VPC エンドポイントをサポートしない AWS サービスまたは AWS の外部のリソースにアクセスする必要がある場合は、NAT ゲートウェイを作成し、アウトバウンド接続を許可するようにセキュリティグループを設定します。VPC 用の NAT ゲートウェイのセットアップについては、Amazon Virtual Private Cloud ユーザーガイドの「シナリオ 2: パブリックサブネットとプライベートサブネットを持つ VPC (NAT)」を参照してください。
CloudWatch のログとメトリクスを使って Amazon SageMaker トレーニングジョブをモニタリングする
Amazon SageMaker は、トレーニングジョブをモニタリングするための Amazon CloudWatch ログとメトリクスを提供します。CloudWatch は、CPU、GPU、メモリ、GPU メモリ、ディスクメトリクス、イベントログを提供します。Amazon SageMaker のトレーニングジョブのモニタリングの詳細については、「Amazon CloudWatch による Amazon SageMaker モニタリングのメトリクス」と「SageMaker ジョブとエンドポイントメトリクス」を参照してください。