Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

リモートデバッグ AWS Systems Manager のために からトレーニングコンテナにアクセスする

フォーカスモード
リモートデバッグ AWS Systems Manager のために からトレーニングコンテナにアクセスする - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

(SSM) を使用して SageMaker トレーニングコンテナに安全に接続できます。 AWS Systems Manager これにより、コンテナ内で実行されているトレーニングジョブをデバッグするためのシェルレベルのアクセスが可能になります。Amazon CloudWatch にストリーミングされるコマンドとレスポンスを記録することもできます。独自の Amazon Virtual Private Cloud (VPC) を使用してモデルをトレーニングする場合、 AWS PrivateLink を使用して SSM 用の VPC エンドポイントを設定し、SSM を介してコンテナにプライベートに接続できます。

SageMaker AI Framework Containers に接続するか、SageMaker Training 環境でセットアップされた独自のトレーニングコンテナに接続できます。

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

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 )

トレーニングジョブを更新してリモートデバッグを有効にするには

次の推定器クラスメソッドを使用すると、ジョブの SecondaryStatusDownloading または Training の場合、トレーニングジョブの実行中にリモートデバッグを有効または無効にできます。

# Enable RemoteDebug estimator.enable_remote_debug() # Disable RemoteDebug estimator.disable_remote_debug()
AWS SDK for Python (Boto3)

トレーニングジョブの作成時にリモートデバッグを有効にするには

新しいトレーニングジョブの作成時にリモートデバッグを有効にするには、RemoteDebugConfig パラメータで EnableRemoteDebug キーを True に設定します。

import boto3 sm = boto3.Session(region_name=region).client("sagemaker") # Start a training job sm.create_training_job( ..., TrainingJobName=job_name, AlgorithmSpecification={ // Specify a training Docker container image URI // (Deep Learning Container or your own training container) to TrainingImage. "TrainingImage": "<your_image_uri>", "TrainingInputMode": "File" }, RoleArn=iam_role_arn, OutputDataConfig=output_path, ResourceConfig={ "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "VolumeSizeInGB": 30 }, StoppingCondition={ "MaxRuntimeInSeconds": 86400 }, RemoteDebugConfig={ "EnableRemoteDebug": True } )

トレーニングジョブを更新してリモートデバッグを有効にするには

update_traing_job API を使用すると、ジョブの SecondaryStatusDownloading または Training の場合、トレーニングジョブの実行中にリモートデバッグを有効または無効にできます。

# Update a training job sm.update_training_job( TrainingJobName=job_name, RemoteDebugConfig={ "EnableRemoteDebug": True # True | False } )
AWS Command Line Interface (CLI)

トレーニングジョブの作成時にリモートデバッグを有効にするには

次のように、JSON 形式で CreateTrainingJob リクエストファイルを準備します。

// train-with-remote-debug.json { "TrainingJobName": job_name, "RoleArn": iam_role_arn, "AlgorithmSpecification": { // Specify a training Docker container image URI (Deep Learning Container or your own training container) to TrainingImage. "TrainingImage": "<your_image_uri>", "TrainingInputMode": "File" }, "OutputDataConfig": { "S3OutputPath": output_path }, "ResourceConfig": { "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "VolumeSizeInGB": 30 }, "StoppingCondition": { "MaxRuntimeInSeconds": 86400 }, "RemoteDebugConfig": { "EnableRemoteDebug": True } }

JSON ファイルを保存したら、トレーニングジョブを送信するターミナルで、次のコマンドを実行します。次のコマンド例では、JSON ファイルが train-with-remote-debug.json という名前であることを前提としています。Jupyter Notebook から実行する場合は、行の先頭に感嘆符 (!) を追加します。

aws sagemaker create-training-job \ --cli-input-json file://train-with-remote-debug.json

トレーニングジョブを更新してリモートデバッグを有効にするには

次のように、JSON 形式で UpdateTrainingJob リクエストファイルを準備します。

// update-training-job-with-remote-debug-config.json { "TrainingJobName": job_name, "RemoteDebugConfig": { "EnableRemoteDebug": True } }

JSON ファイルを保存したら、トレーニングジョブを送信するターミナルで、次のコマンドを実行します。次のコマンド例では、JSON ファイルが train-with-remote-debug.json という名前であることを前提としています。Jupyter Notebook から実行する場合は、行の先頭に感嘆符 (!) を追加します。

aws sagemaker update-training-job \ --cli-input-json file://update-training-job-with-remote-debug-config.json

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 )

トレーニングジョブを更新してリモートデバッグを有効にするには

次の推定器クラスメソッドを使用すると、ジョブの SecondaryStatusDownloading または Training の場合、トレーニングジョブの実行中にリモートデバッグを有効または無効にできます。

# Enable RemoteDebug estimator.enable_remote_debug() # Disable RemoteDebug estimator.disable_remote_debug()

トレーニングコンテナにアクセスする

対応するトレーニングジョブの SecondaryStatusTraining の場合、トレーニングコンテナにアクセスできます。次のコード例は、DescribeTrainingJob API を使用してトレーニングジョブのステータスを確認する方法、CloudWatch のトレーニングジョブログを確認する方法、およびトレーニングコンテナにログインする方法を示しています。

トレーニングジョブのステータスを確認するには

SageMaker Python SDK

トレーニングジョブの 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)
AWS SDK for Python (Boto3)

トレーニングジョブの SecondaryStatus を確認するには、次の SDK for Python (Boto3) コードを実行します。

import boto3 session = boto3.session.Session() region = session.region_name sm = boto3.Session(region_name=region).client("sagemaker") # Describe the job status sm.describe_training_job(TrainingJobName=job_name)
AWS Command Line Interface (CLI)

トレーニングジョブSecondaryStatusの を確認するには、SageMaker AI に対して次の AWS CLI コマンドを実行します。

aws sagemaker describe-training-job \ --training-job-name job_name

トレーニングジョブの 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-1algo-2algo-3、および を作成しますalgo-4。デバッグするログストリームとそのホスト番号を決定する必要があります。トレーニングジョブに関連付けられているログストリームにアクセスするには、以下を実行します。

  1. https://console.aws.amazon.com/sagemaker/ で Amazon SageMaker AI コンソールを開きます。

  2. ナビゲーションペインで [トレーニング][トレーニングジョブ] の順に選択します。

  3. [トレーニングジョブ] リストで、デバッグするトレーニングジョブを選択します。トレーニングジョブの詳細ページが開きます。

  4. [モニタリング] セクションで、[ログを表示] を選択します。関連するトレーニングジョブログストリームリストが CloudWatch コンソールで開きます。

  5. ログストリーム名は <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 セッションを開始することはできません。これは、分離によってアウトバウンドネットワークコールが妨げられるためです。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.