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

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 déboguer les tâches d’entraînement exécutés 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 AI Framework Containers ou vous connecter à votre propre conteneur de formation configuré avec l'environnement de SageMaker formation.

Définir des 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, l' SageMaker IA doit 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 d’entraînement.

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

Utilisateur IAM

Ajoutez la politique suivante pour autoriser un utilisateur IAM à se connecter à une cible SSM lors d’une session SSM. Dans ce cas, la cible SSM est un conteneur d' SageMaker entraînement.

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

Vous pouvez restreindre les utilisateurs IAM de se connecter uniquement à des conteneurs pour des tâches d’entraînement spécifiques en ajoutant la Condition clé, comme indiqué dans l’exemple de stratégie suivant.

JSON
{ "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 condition sagemaker:EnableRemoteDebug pour restreindre le débogage à distance. Voici un exemple de stratégie pour les utilisateurs IAM pour restreindre le débogage à distance.

JSON
{ "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 AI dans la référence d'autorisation de AWS service.

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 dans Amazon SageMaker AI.

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 d’entraînement

Pour activer le débogage à distance lorsque vous créez une nouvelle tâche d’entraînement, définissez le enable_remote_debug paramètre sur True. La valeur par défaut est False, 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 d’entraînement

À 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 d’entraînement est en cours d’exécution lorsque le SecondaryStatus de la tâche est Downloading ou Training.

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

Pour activer le débogage à distance lorsque vous créez une tâche d’entraînement

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

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 d’entraînement

À l’aide de l’API update_traing_job, vous pouvez activer ou désactiver le débogage à distance pendant qu’une tâche d’entraînement est en cours d’exécution, lorsque le SecondaryStatus de la tâche est Downloading ou Training.

# 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 d’entraînement

Préparez un fichier de requête CreateTrainingJob 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 ou vous soumettez la tâche d’entraînement. 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 d’entraînement

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 ou vous soumettez la tâche d’entraînement. 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 d’entraînement

Vous pouvez accéder à un conteneur d’entraînement lorsque le SecondaryStatus de la tâche d’entraînement correspondante est Training. 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’une tâche d’entraînement

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 pour Python (Boto3)

Pour vérifier le SecondaryStatus d’une tâche d’entraînement, exécutez le code du kit SDK 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 AI.

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

Pour trouver le nom d’hôte d’un conteneur d’entraînement

Pour vous connecter au conteneur d’entraînement 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 toujours algo-1. Si vous exécutez une tâche de formation distribuée sur plusieurs instances, l' SageMaker IA crée un nombre égal d'hôtes et de flux de journaux. Par exemple, si vous utilisez 4 instances, SageMaker l'IA 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 d’entraînement, procédez comme suit.

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

  2. Dans le panneau de navigation gauche, choisissez Entraînement, puis Tâches d’entraînement.

  3. Dans la liste Tâches d’entraînement, sélectionnez la tâche d’entraînement que vous souhaitez déboguer. La page de détails de la tâche d’entraînement s’ouvre.

  4. Dans la section Moniteur, choisissez Afficher des 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 format <training-job-name>/algo-<n>-<time-stamp>, algo-<n> représentant le nom d’hôte.

Pour en savoir plus sur la façon dont l' SageMaker IA gère les informations de configuration pour la formation distribuée multi-instances, consultez la section Configuration de la formation distribuée.

Pour accéder au conteneur d’entraînement

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 d’entraînement est training-job-test-remote-debug et le nom d’hôte est algo-1, l’ID cible devient sagemaker-training-job:training-job-test-remote-debug_algo-1. Si la sortie 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 PrivateLinkrestreint 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 avecAWS PrivateLink, consultez Configurer un point de terminaison Amazon VPC pour Session Manager.

Journalisation des commandes et des résultats des sessions SSM

Après avoir suivi les instructions de la 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, incluant 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 AI 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 vérifier les flux de journaux */ssm 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 à distance par SageMaker IA.

  • Le débogage à distance n'est pas pris en charge pour les conteneurs d'algorithmes d'SageMaker IA ni pour les conteneurs créés à partir de SageMaker AI. AWS Marketplace

  • Vous ne pouvez pas démarrer une session SSM pour les conteneurs sur lesquels l’isolement du réseau est activé, car cet isolement empêche les appels réseau sortants.