翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
(SSM) を使用して SageMaker トレーニングコンテナに安全に接続できます。 AWS Systems Manager これにより、コンテナ内で実行されているトレーニングジョブをデバッグするためのシェルレベルのアクセスが可能になります。Amazon CloudWatch にストリーミングされるコマンドとレスポンスを記録することもできます。独自の Amazon Virtual Private Cloud (VPC) を使用してモデルをトレーニングする場合、 AWS PrivateLink を使用して SSM 用の VPC エンドポイントを設定し、SSM を介してコンテナにプライベートに接続できます。
SageMaker AI Framework Containers
IAM 許可をセットアップする
SageMaker トレーニングコンテナで SSM を有効にするには、コンテナの IAM ロールを設定する必要があります。 AWS アカウント内のユーザーが SSM を介してトレーニングコンテナにアクセスするには、SSM を使用するアクセス許可を持つ IAM ユーザーを設定する必要があります。
IAM ロール
SageMaker トレーニングコンテナで SSM エージェントを使用して開始するには、SSM アクセス許可を持つ IAM ロールを指定します。
トレーニングジョブのリモートデバッグを有効にするには、SageMaker AI がトレーニングジョブの開始時にトレーニングコンテナで SSM エージェントを開始する必要があります。SSM エージェントが SSM サービスと通信できるようにするには、トレーニングジョブの実行に使用する IAM ロールに次のポリシーを追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
IAM ユーザー
次のポリシーを追加して、IAM ユーザーに SSM ターゲットに接続するための SSM セッションアクセス許可を付与します。この場合、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 AI の条件キー」を参照してください。
SageMaker トレーニングジョブのリモートデバッグを有効にする方法
このセクションでは、Amazon SageMaker AI でトレーニングジョブを開始または更新するときにリモートデバッグを有効にする方法について説明します。
SageMaker Python SDK の推定器クラスを使用すると、enable_remote_debug
パラメータまたは enable_remote_debug()
および disable_remote_debug()
メソッドを使用して、リモートデバッグをオンまたはオフにできます。
トレーニングジョブの作成時にリモートデバッグを有効にするには
新しいトレーニングジョブの作成時にリモートデバッグを有効にするには、enable_remote_debug
パラメータを True
に設定します。デフォルト値は False
であるため、このパラメータをまったく設定しない場合、または明示的に False
に設定した場合、リモートデバッグ機能は無効になります。
import sagemaker
session = sagemaker.Session()
estimator = sagemaker.estimator.Estimator(
...,
sagemaker_session=session,
image_uri="<your_image_uri>
", #must be owned by your organization or Amazon DLCs
role=role
,
instance_type="ml.m5.xlarge
",
instance_count=1
,
output_path=output_path
,
max_run=1800
,
enable_remote_debug=True
)
トレーニングジョブを更新してリモートデバッグを有効にするには
次の推定器クラスメソッドを使用すると、ジョブの SecondaryStatus
が Downloading
または Training
の場合、トレーニングジョブの実行中にリモートデバッグを有効または無効にできます。
# Enable RemoteDebug
estimator.enable_remote_debug()
# Disable RemoteDebug
estimator.disable_remote_debug()
トレーニングコンテナにアクセスする
対応するトレーニングジョブの SecondaryStatus
が Training
の場合、トレーニングコンテナにアクセスできます。次のコード例は、DescribeTrainingJob
API を使用してトレーニングジョブのステータスを確認する方法、CloudWatch のトレーニングジョブログを確認する方法、およびトレーニングコンテナにログインする方法を示しています。
トレーニングジョブのステータスを確認するには
トレーニングジョブの SecondaryStatus
を確認するには、次の SageMaker Python SDK コードを実行します。
import sagemaker
session = sagemaker.Session()
# Describe the job status
training_job_info = session.describe_training_job(job_name
)
print(training_job_info)
トレーニングコンテナのホスト名を検索するには
SSM を介してトレーニングコンテナに接続するには、ターゲット ID に sagemaker-training-job:<training-job-name>_algo-<n>
という形式を使用します。ここで algo-<n>
はコンテナホストの名前です。ジョブが 1 つのインスタンスで実行されている場合、ホストは常に algo-1
です。複数のインスタンスで分散トレーニングジョブを実行すると、SageMaker AI は同じ数のホストとログストリームを作成します。たとえば、4 つのインスタンスを使用する場合、SageMaker AI は algo-1
、algo-2
、algo-3
、および を作成しますalgo-4
。デバッグするログストリームとそのホスト番号を決定する必要があります。トレーニングジョブに関連付けられているログストリームにアクセスするには、以下を実行します。
https://console.aws.amazon.com/sagemaker/
で Amazon SageMaker AI コンソールを開きます。 -
ナビゲーションペインで [トレーニング]、[トレーニングジョブ] の順に選択します。
-
[トレーニングジョブ] リストで、デバッグするトレーニングジョブを選択します。トレーニングジョブの詳細ページが開きます。
-
[モニタリング] セクションで、[ログを表示] を選択します。関連するトレーニングジョブログストリームリストが CloudWatch コンソールで開きます。
-
ログストリーム名は
<training-job-name>/algo-<n>-<time-stamp>
形式で表示され、algo-<n>
はホスト名を表します。
SageMaker AI がマルチインスタンス分散トレーニングの設定情報を管理する方法の詳細については、「分散トレーニング設定」を参照してください。
トレーニングコンテナにアクセスするには
ターミナルで次のコマンドを使用して 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 SageMaker AI は、SSM エージェントから/aws/sagemaker/TrainingJobs
ロググループの CloudWatch Logs にエラーをアップロードします。SSM エージェントログストリームの名前は、<job-name>/algo-<n>-<timestamp>/ssm
という形式です。例えば、training-job-test-remote-debug
という名前の 2 ノードトレーニングジョブを作成した場合、トレーニングジョブログ training-job-test-remote-debug/algo-<n>-<timestamp>
と複数の SSM エージェントエラーログ training-job-test-remote-debug/algo-<n>-<timestamp>/ssm
が、CloudWatch Logs にアップロードされます。この例では、*/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 AI リモートデバッグを使用する場合は、次の点を考慮してください。
-
リモートデバッグは、SageMaker AI アルゴリズムコンテナまたは SageMaker AI のコンテナではサポートされていません AWS Marketplace。
-
ネットワーク分離が有効になっているコンテナの SSM セッションを開始することはできません。これは、分離によってアウトバウンドネットワークコールが妨げられるためです。