翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
によるリモートデバッグ AWS Systems Manager 用のトレーニングコンテナへのアクセス
AWS Systems Manager (SSM) を介して SageMaker トレーニングコンテナに安全に接続できます。これにより、コンテナ内で実行されているトレーニングジョブをデバッグするためのシェルレベルのアクセスが可能になります。Amazon にストリーミングされるコマンドとレスポンスをログに記録することもできます CloudWatch。独自の Amazon Virtual Private Cloud (VPC) を使用してモデルをトレーニングする場合、 AWS PrivateLink を使用して SSM 用の VPC エンドポイントを設定し、SSM を介してプライベートにコンテナに接続できます。
SageMaker フレームワークコンテナ
IAM 許可をセットアップする
SageMaker トレーニングコンテナで SSM を有効にするには、コンテナの IAM ロールを設定する必要があります。ユーザーまたは AWS アカウントのユーザーが SSM を介してトレーニングコンテナにアクセスするには、SSM を使用するアクセス許可を持つ IAM ユーザーを設定する必要があります。
IAM ロール
SageMaker トレーニングコンテナが SSM エージェントで開始するには、SSM アクセス許可を持つ IAM ロールを指定します。
トレーニングジョブのリモートデバッグを有効にするには、トレーニングジョブの開始時に がトレーニングコンテナ内の SSM エージェントを起動 SageMaker する必要があります。SSM エージェントが SSM サービスと通信できるようにするには、トレーニングジョブの実行に使用する IAM ロールに次のポリシーを追加します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
IAM ユーザー
次のポリシーを追加して、SSM ターゲットに接続するための SSM セッションアクセス許可を IAM ユーザーに付与します。この場合、SSM ターゲットは SageMaker トレーニングコンテナです。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:TerminateSession" ], "Resource": "*" } ] }
次のポリシーサンプルに示すように、 Condition
キーを追加することで、特定のトレーニングジョブのコンテナにのみ接続するように IAM ユーザーを制限できます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:TerminateSession" ], "Resource": [ "*" ], "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:target-id": [ "sagemaker-training-job:*" ] } } } ] }
sagemaker:EnableRemoteDebug
条件キーを明示的に使用して、リモートデバッグを制限することもできます。以下は、IAM ユーザーがリモートデバッグを制限するためのポリシーの例です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyRemoteDebugInTrainingJob", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:UpdateTrainingJob" ], "Resource": "*", "Condition": { "BoolIfExists": { "sagemaker:EnableRemoteDebug": false } } } ] }
詳細については、AWS 「サービス認証リファレンス」の「Amazon の条件キー SageMaker」を参照してください。
SageMaker トレーニングジョブのリモートデバッグを有効にする方法
このセクションでは、Amazon でトレーニングジョブを開始または更新するときにリモートデバッグを有効にする方法について説明します SageMaker。
トレーニングコンテナにアクセスする
対応するトレーニングジョブSecondaryStatus
の が の場合、トレーニングコンテナにアクセスできますTraining
。次のコード例は、 DescribeTrainingJob
API を使用してトレーニングジョブのステータスを確認する方法、 でトレーニングジョブログを確認する方法 CloudWatch、トレーニングコンテナにログインする方法を示しています。
トレーニングジョブのステータスを確認するには
トレーニングコンテナのホスト名を検索するには
SSM を介してトレーニングコンテナに接続するには、ターゲット ID に次の形式を使用します。 sagemaker-training-job:<training-job-name>_algo-<n>
はコンテナホストの名前algo-<n>
です。ジョブが単一のインスタンスで実行されている場合、ホストは常に ですalgo-1
。複数のインスタンスで分散トレーニングジョブを実行すると、 は同じ数のホストとログストリーム SageMaker を作成します。例えば、4 つのインスタンスを使用する場合、 は algo-1
、algo-2
、algo-3
、 SageMaker を作成しますalgo-4
。デバッグするログストリームとそのホスト番号を決定する必要があります。トレーニングジョブに関連付けられているログストリームにアクセスするには、次の手順を実行します。
https://console.aws.amazon.com/sagemaker/
で Amazon SageMaker コンソールを開きます。 -
左側のナビゲーションペインで、トレーニング を選択し、トレーニングジョブ を選択します。
-
トレーニングジョブ リストから、デバッグするトレーニングジョブを選択します。トレーニングジョブの詳細ページが開きます。
-
Monitor セクションで、ログの表示 を選択します。関連するトレーニングジョブのログストリームリストが CloudWatch コンソールで開きます。
-
ログストリーム名は
<training-job-name>/algo-<n>-<time-stamp>
形式で表示され、 はホスト名algo-<n>
を表します。
がマルチインスタンス分散トレーニングの設定情報 SageMaker を管理する方法の詳細については、「分散トレーニング設定」を参照してください。
トレーニングコンテナにアクセスするには
ターミナルで次のコマンドを使用して SSM セッション (aws ssm start-session
) を開始し、トレーニングコンテナに接続します。
aws ssm start-session --target sagemaker-training-job:
<training-job-name>
_algo-<n>
例えば、トレーニングジョブ名が training-job-test-remote-debug
で、ホスト名が の場合algo-1
、ターゲット ID は になりますsagemaker-training-job:training-job-test-remote-debug_algo-1
。このコマンドの出力が と似ている場合Starting session with SessionId:xxxxx
、接続は成功します。
による SSM アクセス AWS PrivateLink
トレーニングコンテナがパブリックインターネットに接続されていない Amazon Virtual Private Cloud 内で実行されている場合は、 AWS PrivateLink を使用して SSM を有効にできます。 は、エンドポイントインスタンス、SSM、および Amazon EC2 間のすべてのネットワークトラフィックを Amazon ネットワーク AWS PrivateLink に制限します。で SSM アクセスを設定する方法の詳細については AWS PrivateLink、「Session Manager の Amazon VPC エンドポイントを設定する」を参照してください。
SSM セッションコマンドと結果をログに記録する
「Session Manager 設定ドキュメント (コマンドライン) の作成」の手順に従って、SSM セッションの設定を定義する SSM ドキュメントを作成できます。SSM ドキュメントを使用して、データの暗号化、セッション期間、ログ記録などのセッションオプションを設定できます。例えば、セッションログデータを Amazon Simple Storage Service (Amazon S3) バケットまたは Amazon CloudWatch Logs グループのどちらに保存するかを指定できます。 AWS アカウントと のすべてのセッションの一般的な設定を定義する ドキュメント AWS リージョン、または個々のセッションの設定を定義する ドキュメントを作成できます。
SSM からエラーログをチェックして問題のトラブルシューティングを行う
Amazon は、SSM エージェントからロググループの CloudWatch /aws/sagemaker/TrainingJobs
ログにエラー SageMaker をアップロードします。SSM エージェントログストリームの名前は、 の形式です<job-name>/algo-<n>-<timestamp>/ssm
。例えば、 という名前の 2 ノードトレーニングジョブを作成するとtraining-job-test-remote-debug
、トレーニングジョブログtraining-job-test-remote-debug/algo-<n>-<timestamp>
と複数の SSM エージェントエラーログtraining-job-test-remote-debug/algo-<n>-<timestamp>/ssm
が CloudWatch ログにアップロードされます。この例では、*/ssm
ログストリームを確認して SSM の問題をトラブルシューティングできます。
training-job-test-remote-debug/algo-1-1680535238 training-job-test-remote-debug/algo-2-1680535238 training-job-test-remote-debug/algo-1-1680535238/ssm training-job-test-remote-debug/algo-2-1680535238/ssm
考慮事項
SageMaker リモートデバッグを使用する場合は、次の点を考慮してください。
-
リモートデバッグは、SageMaker アルゴリズムコンテナ、または SageMaker 上の からのコンテナではサポートされていません AWS Marketplace。
-
ネットワーク分離が有効になっているコンテナの SSM セッションを開始することはできません。分離により、アウトバウンドのネットワーク呼び出しが妨げられるためです。