Accédez à un conteneur de formation AWS Systems Manager pour le débogage à distance - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Accédez à un conteneur de formation AWS Systems Manager pour le débogage à distance

Vous pouvez vous connecter en toute sécurité aux conteneurs de SageMaker formation via AWS Systems Manager (SSM). Cela vous donne un accès au niveau du shell pour les tâches de formation au débogage qui s'exécutent dans le conteneur. Vous pouvez également enregistrer les commandes et les réponses qui sont diffusées sur Amazon CloudWatch. Si vous utilisez votre propre Amazon Virtual Private Cloud (VPC) pour entraîner un modèle, vous pouvez l'utiliser pour configurer un point de terminaison VPC AWS PrivateLink pour SSM et vous connecter à des conteneurs en privé via SSM.

Vous pouvez vous connecter à SageMaker Framework Containers ou à votre propre conteneur de formation configuré avec l'environnement de SageMaker formation.

Configurer les autorisations IAM

Pour activer SSM dans votre conteneur de SageMaker formation, vous devez configurer un rôle IAM pour le conteneur. Pour que vous ou les utilisateurs de votre AWS compte puissiez accéder aux conteneurs de formation via SSM, vous devez configurer les utilisateurs IAM autorisés à utiliser SSM.

Rôle IAM

Pour qu'un conteneur de SageMaker formation commence par l'agent SSM, fournissez un rôle IAM avec des autorisations SSM.

Pour activer le débogage à distance pour votre tâche de formation, vous SageMaker devez démarrer l'agent SSM dans le conteneur de formation au début de la tâche de formation. Pour permettre à l'agent SSM de communiquer avec le service SSM, ajoutez la politique suivante au rôle IAM que vous utilisez pour exécuter votre tâche de formation.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }

Utilisateur IAM

Ajoutez la politique suivante pour fournir à un utilisateur IAM des autorisations de session SSM lui permettant de se connecter à une cible SSM. Dans ce cas, la cible SSM est un conteneur d' SageMaker entraînement.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:TerminateSession" ], "Resource": "*" } ] }

Vous pouvez empêcher les utilisateurs IAM de se connecter uniquement à des conteneurs pour des tâches de formation spécifiques en ajoutant la Condition clé, comme indiqué dans l'exemple de politique suivant.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:TerminateSession" ], "Resource": [ "*" ], "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:target-id": [ "sagemaker-training-job:*" ] } } } ] }

Vous pouvez également utiliser explicitement la clé de sagemaker:EnableRemoteDebug condition pour restreindre le débogage à distance. Voici un exemple de politique permettant aux utilisateurs IAM de restreindre le débogage à distance.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyRemoteDebugInTrainingJob", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:UpdateTrainingJob" ], "Resource": "*", "Condition": { "BoolIfExists": { "sagemaker:EnableRemoteDebug": false } } } ] }

Pour plus d'informations, consultez la section Clés de condition pour Amazon SageMaker dans le AWS Service Authorization Reference.

Comment activer le débogage à distance pour une tâche de SageMaker formation

Dans cette section, découvrez comment activer le débogage à distance lors du démarrage ou de la mise à jour d'une tâche de formation sur Amazon SageMaker.

SageMaker Python SDK

À l'aide de la classe estimator du SDK SageMaker Python, vous pouvez activer ou désactiver le débogage à distance à l'aide du enable_remote_debug paramètre ou des méthodes et. enable_remote_debug() disable_remote_debug()

Pour activer le débogage à distance lorsque vous créez une tâche de formation

Pour activer le débogage à distance lorsque vous créez une nouvelle tâche de formation, définissez le enable_remote_debug paramètre sur. True La valeur par défaut estFalse, donc si vous ne définissez pas ce paramètre du tout, ou si vous le définissez explicitement surFalse, la fonctionnalité de débogage à distance est désactivée.

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 )

Pour activer le débogage à distance en mettant à jour une tâche de formation

À l'aide des méthodes de classe d'estimateur suivantes, vous pouvez activer ou désactiver le débogage à distance pendant qu'une tâche de formation est en cours SecondaryStatus d'exécution lorsque la tâche est ou. Downloading Training

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

Pour activer le débogage à distance lorsque vous créez une tâche de formation

Pour activer le débogage à distance lorsque vous créez une nouvelle tâche de formation, définissez la valeur de la EnableRemoteDebug clé sur True dans le RemoteDebugConfig paramètre.

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 } )

Pour activer le débogage à distance en mettant à jour une tâche de formation

À l'aide de l'update_traing_jobAPI, vous pouvez activer ou désactiver le débogage à distance pendant qu'une tâche de formation est en cours SecondaryStatus d'exécution, lorsque la tâche est Downloading ouTraining.

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

Pour activer le débogage à distance lorsque vous créez une tâche de formation

Préparez un fichier de CreateTrainingJob requête au format JSON, comme suit.

// 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 } }

Après avoir enregistré le fichier JSON, exécutez la commande suivante dans le terminal où vous soumettez le travail de formation. L'exemple de commande suivant suppose que le fichier JSON est nommétrain-with-remote-debug.json. Si vous l'exécutez depuis un bloc-notes Jupyter, ajoutez un point d'exclamation (!) au début de la ligne.

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

Pour activer le débogage à distance en mettant à jour une tâche de formation

Préparez un fichier de UpdateTrainingJob requête au format JSON, comme suit.

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

Après avoir enregistré le fichier JSON, exécutez la commande suivante dans le terminal où vous soumettez le travail de formation. L'exemple de commande suivant suppose que le fichier JSON est nommétrain-with-remote-debug.json. Si vous l'exécutez depuis un bloc-notes Jupyter, ajoutez un point d'exclamation (!) au début de la ligne.

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

Accédez à votre conteneur de formation

Vous pouvez accéder à un conteneur de formation lorsque le poste SecondaryStatus de formation correspondant estTraining. Les exemples de code suivants montrent comment vérifier le statut de votre tâche de formation à l'aide de l'DescribeTrainingJobAPI, comment vérifier les connexions de la tâche de formation et comment vous connecter au conteneur de formation. CloudWatch

Pour vérifier le statut d'un poste de formation

SageMaker Python SDK

Pour vérifier l'état SecondaryStatus d'une tâche de formation, exécutez le code du SDK SageMaker Python suivant.

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)

Pour vérifier l'état SecondaryStatus d'une tâche d'entraînement, exécutez le code du SDK pour Python (Boto3) suivant.

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)

Pour vérifier l'SecondaryStatusétat d'une tâche de formation, exécutez la AWS CLI commande suivante pour SageMaker.

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

Pour trouver le nom d'hôte d'un conteneur de formation

Pour vous connecter au conteneur de formation via SSM, utilisez ce format pour l'ID cible :sagemaker-training-job:<training-job-name>_algo-<n>, où algo-<n> est le nom de l'hôte du conteneur. Si votre tâche s'exécute sur une seule instance, l'hôte l'est toujoursalgo-1. Si vous exécutez une tâche de formation distribuée sur plusieurs instances, vous SageMaker créez un nombre égal d'hôtes et de flux de journaux. Par exemple, si vous utilisez 4 instances, SageMaker crée algo-1algo-2,algo-3, etalgo-4. Vous devez déterminer le flux de journal que vous souhaitez déboguer, ainsi que son numéro d'hôte. Pour accéder aux flux de journaux associés à une tâche de formation, procédez comme suit.

  1. Ouvrez la SageMaker console Amazon à l'adresse https://console.aws.amazon.com/sagemaker/.

  2. Dans le volet de navigation de gauche, choisissez Training, puis Training jobs.

  3. Dans la liste des tâches de formation, choisissez la tâche de formation que vous souhaitez déboguer. La page des détails du poste de formation s'ouvre.

  4. Dans la section Moniteur, choisissez Afficher les journaux. La liste des flux du journal des tâches de formation associées s'ouvre dans la CloudWatch console.

  5. Les noms des flux de journaux apparaissent au <training-job-name>/algo-<n>-<time-stamp> format, algo-<n> représentant le nom d'hôte.

Pour en savoir plus sur la gestion des SageMaker informations de configuration pour la formation distribuée multi-instances, consultez la section Configuration de la formation distribuée.

Pour accéder au conteneur de formation

Utilisez la commande suivante dans le terminal pour démarrer la session SSM (aws ssm start-session) et vous connecter au conteneur d'entraînement.

aws ssm start-session --target sagemaker-training-job:<training-job-name>_algo-<n>

Par exemple, si le nom de la tâche de formation est training-job-test-remote-debug et le nom d'hôte l'estalgo-1, l'ID cible devientsagemaker-training-job:training-job-test-remote-debug_algo-1. Si le résultat de cette commande est similaire àStarting session with SessionId:xxxxx, la connexion est réussie.

Accès SSM avec AWS PrivateLink

Si vos conteneurs de formation s'exécutent dans un Amazon Virtual Private Cloud qui n'est pas connecté à l'Internet public, vous pouvez les utiliser AWS PrivateLink pour activer le SSM. AWS PrivateLink restreint tout le trafic réseau entre vos instances de point de terminaison, SSM et Amazon EC2 vers le réseau Amazon. Pour plus d'informations sur la configuration de l'accès SSM avec AWS PrivateLink, consultez Configurer un point de terminaison Amazon VPC pour Session Manager.

Enregistrer les commandes et les résultats des sessions SSM

Après avoir suivi les instructions de la section Créer un document de préférences du gestionnaire de session (ligne de commande), vous pouvez créer des documents SSM qui définissent vos préférences pour les sessions SSM. Vous pouvez utiliser les documents SSM pour configurer les options de session, notamment le chiffrement des données, la durée de session et la journalisation. Par exemple, vous pouvez spécifier si vous souhaitez stocker les données du journal de session dans un bucket Amazon Simple Storage Service (Amazon S3) ou dans un groupe CloudWatch Amazon Logs. Vous pouvez créer des documents qui définissent les préférences générales pour toutes les sessions d'un AWS compte Région AWS et/ou des documents qui définissent les préférences pour des sessions individuelles.

Résolution des problèmes en vérifiant les journaux d'erreurs de SSM

Amazon SageMaker télécharge les erreurs de l'agent SSM vers vos CloudWatch journaux dans le groupe de /aws/sagemaker/TrainingJobs journaux. Les flux de journaux de l'agent SSM sont nommés dans ce format :<job-name>/algo-<n>-<timestamp>/ssm. Par exemple, si vous créez une tâche de formation à deux nœuds nomméetraining-job-test-remote-debug, le journal des tâches de formation training-job-test-remote-debug/algo-<n>-<timestamp> et plusieurs journaux d'erreurs de l'agent SSM training-job-test-remote-debug/algo-<n>-<timestamp>/ssm sont téléchargés dans vos CloudWatch journaux. Dans cet exemple, vous pouvez consulter les flux de */ssm journaux pour résoudre les problèmes liés au 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

Considérations

Tenez compte des points suivants lorsque vous utilisez le débogage SageMaker à distance.

  • Le débogage à distance n'est pas pris en charge pour les conteneurs d'SageMaker algorithmes ou les conteneurs à partir de maintenant SageMaker . AWS Marketplace

  • Vous ne pouvez pas démarrer une session SSM pour les conteneurs sur lesquels l'isolation réseau est activée car cette isolation empêche les appels réseau sortants.