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

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 container di SageMaker formazione tramite AWS Systems Manager (). SSM Ciò offre un accesso a livello di shell ai processi di debug di formazione in esecuzione all'interno del contenitore. Puoi anche registrare comandi e risposte che vengono trasmessi in streaming ad Amazon CloudWatch. Se usi il tuo Amazon Virtual Private Cloud (VPC) per addestrare un modello, puoi AWS PrivateLink utilizzarlo per configurare un VPC endpoint SSM e connetterti ai container privatamente tramite. SSM

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

Configura le IAM autorizzazioni

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

IAMRuolo

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

Per abilitare il debug remoto per il lavoro di formazione, l' SageMaker intelligenza artificiale deve avviare l'SSMagente nel contenitore di formazione all'inizio del processo di formazione. Per consentire all'SSMagente di comunicare con il SSM servizio, aggiungi la seguente politica al IAM ruolo 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": "*" } ] }

IAMUtente

Aggiungi la seguente politica per fornire a un IAM utente le autorizzazioni di SSM sessione per connettersi a una SSM destinazione. In questo caso, l'SSMobiettivo è un contenitore di SageMaker formazione.

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

È possibile limitare la connessione IAM degli utenti ai container solo per specifici lavori di formazione aggiungendo la Condition chiave, come illustrato 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:*" ] } } } ] }

È inoltre possibile utilizzare in modo esplicito la chiave sagemaker:EnableRemoteDebug condition per limitare il debug remoto. Di seguito è riportato un esempio di politica che consente IAM agli utenti di 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 AI 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 AI. SageMaker

SageMaker Python SDK

Utilizzando la classe estimator in SageMaker SDK Python, è possibile 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 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 di CreateTrainingJob richiesta nel JSON formato seguente.

// 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 JSON file, esegui il seguente comando nel terminale a cui invii il processo di formazione. Il comando di esempio seguente presuppone che il JSON file abbia un nometrain-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 di UpdateTrainingJob richiesta nel JSON formato seguente.

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

Dopo aver salvato il JSON file, esegui il seguente comando nel terminale a cui invii il processo di formazione. Il comando di esempio seguente presuppone che il JSON file abbia un nometrain-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 verificare lo stato del processo di formazione utilizzando i log in DescribeTrainingJob API CloudWatch, come controllare il 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 SageMaker codice PythonSDK.

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 il funzionamento SecondaryStatus di un processo di formazione, esegui quanto segue SDK per il codice 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 AWS CLI comando per AI. 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 tramiteSSM, 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, l' SageMaker intelligenza artificiale crea un numero uguale di host e flussi di log. Ad esempio, se utilizzi 4 istanze, l' SageMaker IA crea, algo-1algo-2, algo-3 e. algo-4 È necessario determinare il flusso di log di cui 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 console Amazon SageMaker AI 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 l' SageMaker IA 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 SSM sessione (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.

SSMaccesso 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 utilizzare AWS PrivateLink per abilitareSSM. AWS PrivateLink limita tutto il traffico di rete tra le istanze degli endpoint SSM e Amazon verso EC2 la rete Amazon. Per ulteriori informazioni su come configurare SSM l'accesso con AWS PrivateLink, consulta Configurare un VPC endpoint Amazon per Session Manager.

Registra i comandi e i risultati SSM della sessione

Dopo aver seguito le istruzioni riportate in Creare un documento delle preferenze di Session Manager (riga di comando), è possibile creare SSM documenti che definiscono le preferenze per le SSM sessioni. È possibile utilizzare SSM i documenti 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 AI carica gli errori dall'SSMagente nei tuoi CloudWatch log nel gruppo di /aws/sagemaker/TrainingJobs log. SSMi flussi di log degli agenti sono denominati in questo formato:. <job-name>/algo-<n>-<timestamp>/ssm Ad esempio, se si crea 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 registri degli errori di più SSM agenti training-job-test-remote-debug/algo-<n>-<timestamp>/ssm vengono caricati nei registri. CloudWatch In questo esempio, è possibile esaminare i flussi di */ssm log per risolvere i problemi. 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

Considera quanto segue quando utilizzi il debug remoto SageMaker AI.

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

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