Accedi a un contenitore di formazione tramite AWS Systems Manager il debug remoto - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Accedi a un contenitore di formazione tramite AWS Systems Manager il debug remoto

Puoi connetterti in modo sicuro ai contenitori di formazione tramite (SSM). SageMaker AWS Systems Manager Ciò offre un accesso a livello di shell ai processi di formazione di debug in esecuzione all'interno del contenitore. Puoi anche registrare comandi e risposte trasmessi in streaming ad Amazon CloudWatch. Se usi il tuo Amazon Virtual Private Cloud (VPC) per addestrare un modello, puoi usarlo per configurare un endpoint VPC AWS PrivateLink per SSM e connetterti ai container privatamente tramite SSM.

Puoi connetterti a SageMaker Framework Containers o connetterti al tuo contenitore di formazione configurato con l'ambiente Training. SageMaker

Configura le autorizzazioni IAM

Per abilitare SSM nel tuo contenitore di SageMaker formazione, devi impostare un ruolo IAM per il contenitore. Per consentire a te o agli utenti del tuo AWS account di accedere ai contenitori di formazione tramite SSM, devi configurare gli utenti IAM con le autorizzazioni per utilizzare SSM.

Ruolo IAM

Affinché un contenitore di SageMaker formazione inizi con l'agente SSM, fornisci un ruolo IAM con autorizzazioni SSM.

Per abilitare il debug remoto per il processo di formazione, è SageMaker necessario avviare l'agente SSM nel contenitore di formazione all'inizio del processo di formazione. Per consentire all'agente SSM di comunicare con il servizio SSM, aggiungi la seguente policy al ruolo IAM che utilizzi per eseguire il tuo processo di formazione.

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

Utente IAM

Aggiungi la seguente policy per fornire a un utente IAM le autorizzazioni di sessione SSM per connettersi a un target SSM. In questo caso, il target SSM è un contenitore di formazione. SageMaker

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

Puoi limitare gli utenti IAM a connettersi solo ai container per specifici lavori di formazione aggiungendo la Condition chiave, come mostrato nel seguente esempio di policy.

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

Puoi anche utilizzare in modo esplicito la chiave sagemaker:EnableRemoteDebug condition per limitare il debug remoto. Di seguito è riportato un esempio di policy per gli utenti IAM per limitare il debug remoto.

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

Per ulteriori informazioni, consulta Condition keys for Amazon SageMaker nel AWS Service Authorization Reference.

Come abilitare il debug remoto per un lavoro di formazione SageMaker

In questa sezione, scopri come abilitare il debug remoto all'avvio o all'aggiornamento di un processo di formazione in Amazon. SageMaker

SageMaker Python SDK

Utilizzando la classe estimator nell'SDK SageMaker Python, puoi attivare o disattivare il debug remoto utilizzando enable_remote_debug il parametro o i metodi and. enable_remote_debug() disable_remote_debug()

Per abilitare il debug remoto quando si crea un processo di formazione

Per abilitare il debug remoto quando create un nuovo processo di formazione, impostate il parametro su. enable_remote_debug True Il valore predefinito èFalse, quindi se non impostate affatto questo parametro o lo impostate esplicitamente su, la funzionalità di debug remoto è False disabilitata.

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 )

Per abilitare il debug remoto aggiornando un processo di formazione

Utilizzando i seguenti metodi della classe Estimator, è possibile abilitare o disabilitare il debug remoto mentre un processo di formazione è in esecuzione quando il processo è o. SecondaryStatus Downloading Training

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

Per abilitare il debug remoto quando si crea un processo di formazione

Per abilitare il debug remoto quando create un nuovo processo di formazione, impostate il valore della chiave nel parametro. EnableRemoteDebug True 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 } )

Per abilitare il debug remoto aggiornando un processo di formazione

Utilizzando l'update_traing_jobAPI, è possibile abilitare o disabilitare il debug remoto mentre un processo di formazione è in esecuzione quando il SecondaryStatus processo è o. Downloading Training

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

Per abilitare il debug remoto quando si crea un processo di formazione

Preparate un file CreateTrainingJob di richiesta in formato JSON, come segue.

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

Dopo aver salvato il file JSON, esegui il seguente comando nel terminale a cui invii il processo di formazione. Il comando di esempio seguente presuppone che il file JSON abbia un nome. train-with-remote-debug.json Se lo esegui da un notebook Jupyter, aggiungi un punto esclamativo (!) all'inizio della riga.

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

Per abilitare il debug remoto aggiornando un processo di formazione

Preparate un file UpdateTrainingJob di richiesta in formato JSON, come segue.

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

Dopo aver salvato il file JSON, esegui il seguente comando nel terminale a cui invii il processo di formazione. Il comando di esempio seguente presuppone che il file JSON abbia un nome. train-with-remote-debug.json Se lo esegui da un notebook Jupyter, aggiungi un punto esclamativo (!) all'inizio della riga.

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

Accedi al tuo contenitore di formazione

È possibile accedere a un contenitore di formazione quando si tratta SecondaryStatus del lavoro di formazione corrispondenteTraining. I seguenti esempi di codice mostrano come controllare lo stato del processo di formazione utilizzando l'DescribeTrainingJobAPI, come controllare i login CloudWatch del processo di formazione e come accedere al contenitore di formazione.

Per verificare lo stato di un lavoro di formazione

SageMaker Python SDK

Per verificare il funzionamento SecondaryStatus di un processo di formazione, esegui il seguente codice 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)

Per verificare lo stato SecondaryStatus di un processo di formazione, esegui il seguente codice 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)

Per verificare lo stato SecondaryStatus di un processo di formazione, esegui il seguente comando per. AWS CLI SageMaker

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

Per trovare il nome host di un contenitore di formazione

Per connetterti al contenitore di formazione tramite SSM, usa questo formato per l'ID di destinazione:sagemaker-training-job:<training-job-name>_algo-<n>, dove algo-<n> è il nome dell'host del contenitore. Se il processo è in esecuzione su una singola istanza, l'host lo è semprealgo-1. Se esegui un processo di formazione distribuito su più istanze, SageMaker crea un numero uguale di host e flussi di log. Ad esempio, se utilizzi 4 istanze, SageMaker crea, algo-1algo-2, algo-3 e. algo-4 È necessario determinare di quale flusso di log si desidera eseguire il debug e il relativo numero di host. Per accedere ai flussi di log associati a un processo di formazione, effettuate le seguenti operazioni.

  1. Apri la SageMaker console Amazon all'indirizzo https://console.aws.amazon.com/sagemaker/.

  2. Nel riquadro di navigazione a sinistra, scegli Formazione, quindi scegli Training jobs.

  3. Dall'elenco dei lavori di formazione, scegli il lavoro di formazione di cui desideri eseguire il debug. Viene visualizzata la pagina dei dettagli del lavoro di formazione.

  4. Nella sezione Monitor, scegli Visualizza registri. L'elenco dei relativi registri dei lavori di formazione viene visualizzato nella CloudWatch console.

  5. I nomi dei flussi di log vengono visualizzati in un <training-job-name>/algo-<n>-<time-stamp> formato algo-<n> che rappresenta il nome host.

Per ulteriori informazioni su come SageMaker gestisce le informazioni di configurazione per la formazione distribuita a più istanze, consulta Distributed Training Configuration.

Per accedere al contenitore di formazione

Utilizzate il seguente comando nel terminale per avviare la sessione SSM (aws ssm start-session) e connettervi al contenitore di formazione.

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

Ad esempio, se il nome del processo di formazione è training-job-test-remote-debug e il nome host èalgo-1, l'ID di destinazione diventasagemaker-training-job:training-job-test-remote-debug_algo-1. Se l'output di questo comando è simile aStarting session with SessionId:xxxxx, la connessione ha esito positivo.

Accesso SSM con AWS PrivateLink

Se i tuoi contenitori di formazione vengono eseguiti all'interno di un Amazon Virtual Private Cloud che non è connesso a Internet pubblico, puoi utilizzarli AWS PrivateLink per abilitare SSM. AWS PrivateLink limita tutto il traffico di rete tra le istanze di endpoint, SSM e Amazon EC2 alla rete Amazon. Per ulteriori informazioni su come configurare l'accesso SSM con AWS PrivateLink, consulta Configurare un endpoint Amazon VPC per Session Manager.

Registra i comandi e i risultati della sessione SSM

Dopo aver seguito le istruzioni riportate in Creare un documento di preferenze di Session Manager (riga di comando), è possibile creare documenti SSM che definiscono le preferenze per le sessioni SSM. È possibile utilizzare i documenti SSM per configurare le opzioni di sessione, tra cui la crittografia dei dati, la durata della sessione e la registrazione. Ad esempio, puoi specificare se archiviare i dati dei log di sessione in un bucket Amazon Simple Storage Service (Amazon S3) o in un gruppo Amazon Logs. CloudWatch Puoi creare documenti che definiscono le preferenze generali per tutte le sessioni per un AWS account o documenti che definiscono le preferenze per le singole sessioni. Regione AWS

Risoluzione dei problemi controllando i log degli errori da SSM

Amazon SageMaker carica gli errori dall'agente SSM nei tuoi CloudWatch registri nel gruppo di log. /aws/sagemaker/TrainingJobs I flussi di log degli agenti SSM sono denominati in questo formato:. <job-name>/algo-<n>-<timestamp>/ssm Per esempio, se crei un processo di formazione a due nodi denominatotraining-job-test-remote-debug, il registro dei lavori di formazione training-job-test-remote-debug/algo-<n>-<timestamp> e i log degli errori di più agenti SSM training-job-test-remote-debug/algo-<n>-<timestamp>/ssm vengono caricati nei tuoi registri. CloudWatch In questo esempio, puoi esaminare i flussi di */ssm log per risolvere i problemi relativi a 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

Considerazioni

Considerate quanto segue quando utilizzate il debug remoto. SageMaker

  • Il debug remoto non è supportato per i contenitori di SageMaker algoritmi o per i contenitori futuri. SageMaker Marketplace AWS

  • Non è possibile avviare una sessione SSM per contenitori con isolamento di rete abilitato perché l'isolamento impedisce le chiamate di rete in uscita.